UNPKG

@tokamak-network/thanos-contracts

Version:
1,051 lines 146 kB
{ "abi": [ { "type": "constructor", "inputs": [], "stateMutability": "nonpayable" }, { "type": "receive", "stateMutability": "payable" }, { "type": "function", "name": "MESSENGER", "inputs": [], "outputs": [ { "name": "", "type": "address", "internalType": "contract CrossDomainMessenger" } ], "stateMutability": "view" }, { "type": "function", "name": "OTHER_BRIDGE", "inputs": [], "outputs": [ { "name": "", "type": "address", "internalType": "contract StandardBridge" } ], "stateMutability": "view" }, { "type": "function", "name": "bridgeERC20", "inputs": [ { "name": "_localToken", "type": "address", "internalType": "address" }, { "name": "_remoteToken", "type": "address", "internalType": "address" }, { "name": "_amount", "type": "uint256", "internalType": "uint256" }, { "name": "_minGasLimit", "type": "uint32", "internalType": "uint32" }, { "name": "_extraData", "type": "bytes", "internalType": "bytes" } ], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "bridgeERC20To", "inputs": [ { "name": "_localToken", "type": "address", "internalType": "address" }, { "name": "_remoteToken", "type": "address", "internalType": "address" }, { "name": "_to", "type": "address", "internalType": "address" }, { "name": "_amount", "type": "uint256", "internalType": "uint256" }, { "name": "_minGasLimit", "type": "uint32", "internalType": "uint32" }, { "name": "_extraData", "type": "bytes", "internalType": "bytes" } ], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "bridgeETH", "inputs": [ { "name": "_minGasLimit", "type": "uint32", "internalType": "uint32" }, { "name": "_extraData", "type": "bytes", "internalType": "bytes" } ], "outputs": [], "stateMutability": "payable" }, { "type": "function", "name": "bridgeETHTo", "inputs": [ { "name": "_to", "type": "address", "internalType": "address" }, { "name": "_minGasLimit", "type": "uint32", "internalType": "uint32" }, { "name": "_extraData", "type": "bytes", "internalType": "bytes" } ], "outputs": [], "stateMutability": "payable" }, { "type": "function", "name": "bridgeNativeToken", "inputs": [ { "name": "_amount", "type": "uint256", "internalType": "uint256" }, { "name": "_minGasLimit", "type": "uint32", "internalType": "uint32" }, { "name": "_extraData", "type": "bytes", "internalType": "bytes" } ], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "bridgeNativeTokenTo", "inputs": [ { "name": "_to", "type": "address", "internalType": "address" }, { "name": "_amount", "type": "uint256", "internalType": "uint256" }, { "name": "_minGasLimit", "type": "uint32", "internalType": "uint32" }, { "name": "_extraData", "type": "bytes", "internalType": "bytes" } ], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "depositERC20", "inputs": [ { "name": "_l1Token", "type": "address", "internalType": "address" }, { "name": "_l2Token", "type": "address", "internalType": "address" }, { "name": "_amount", "type": "uint256", "internalType": "uint256" }, { "name": "_minGasLimit", "type": "uint32", "internalType": "uint32" }, { "name": "_extraData", "type": "bytes", "internalType": "bytes" } ], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "depositERC20To", "inputs": [ { "name": "_l1Token", "type": "address", "internalType": "address" }, { "name": "_l2Token", "type": "address", "internalType": "address" }, { "name": "_to", "type": "address", "internalType": "address" }, { "name": "_amount", "type": "uint256", "internalType": "uint256" }, { "name": "_minGasLimit", "type": "uint32", "internalType": "uint32" }, { "name": "_extraData", "type": "bytes", "internalType": "bytes" } ], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "depositETH", "inputs": [ { "name": "_minGasLimit", "type": "uint32", "internalType": "uint32" }, { "name": "_extraData", "type": "bytes", "internalType": "bytes" } ], "outputs": [], "stateMutability": "payable" }, { "type": "function", "name": "depositETHTo", "inputs": [ { "name": "_to", "type": "address", "internalType": "address" }, { "name": "_minGasLimit", "type": "uint32", "internalType": "uint32" }, { "name": "_extraData", "type": "bytes", "internalType": "bytes" } ], "outputs": [], "stateMutability": "payable" }, { "type": "function", "name": "depositNativeToken", "inputs": [ { "name": "_amount", "type": "uint256", "internalType": "uint256" }, { "name": "_minGasLimit", "type": "uint32", "internalType": "uint32" }, { "name": "_extraData", "type": "bytes", "internalType": "bytes" } ], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "depositNativeTokenTo", "inputs": [ { "name": "_to", "type": "address", "internalType": "address" }, { "name": "_amount", "type": "uint256", "internalType": "uint256" }, { "name": "_minGasLimit", "type": "uint32", "internalType": "uint32" }, { "name": "_extraData", "type": "bytes", "internalType": "bytes" } ], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "deposits", "inputs": [ { "name": "", "type": "address", "internalType": "address" }, { "name": "", "type": "address", "internalType": "address" } ], "outputs": [ { "name": "", "type": "uint256", "internalType": "uint256" } ], "stateMutability": "view" }, { "type": "function", "name": "finalizeBridgeERC20", "inputs": [ { "name": "_localToken", "type": "address", "internalType": "address" }, { "name": "_remoteToken", "type": "address", "internalType": "address" }, { "name": "_from", "type": "address", "internalType": "address" }, { "name": "_to", "type": "address", "internalType": "address" }, { "name": "_amount", "type": "uint256", "internalType": "uint256" }, { "name": "_extraData", "type": "bytes", "internalType": "bytes" } ], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "finalizeBridgeETH", "inputs": [ { "name": "_from", "type": "address", "internalType": "address" }, { "name": "_to", "type": "address", "internalType": "address" }, { "name": "_amount", "type": "uint256", "internalType": "uint256" }, { "name": "_extraData", "type": "bytes", "internalType": "bytes" } ], "outputs": [], "stateMutability": "payable" }, { "type": "function", "name": "finalizeERC20Withdrawal", "inputs": [ { "name": "_l1Token", "type": "address", "internalType": "address" }, { "name": "_l2Token", "type": "address", "internalType": "address" }, { "name": "_from", "type": "address", "internalType": "address" }, { "name": "_to", "type": "address", "internalType": "address" }, { "name": "_amount", "type": "uint256", "internalType": "uint256" }, { "name": "_extraData", "type": "bytes", "internalType": "bytes" } ], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "finalizeETHWithdrawal", "inputs": [ { "name": "_from", "type": "address", "internalType": "address" }, { "name": "_to", "type": "address", "internalType": "address" }, { "name": "_amount", "type": "uint256", "internalType": "uint256" }, { "name": "_extraData", "type": "bytes", "internalType": "bytes" } ], "outputs": [], "stateMutability": "payable" }, { "type": "function", "name": "initialize", "inputs": [ { "name": "_messenger", "type": "address", "internalType": "contract CrossDomainMessenger" }, { "name": "_systemConfig", "type": "address", "internalType": "contract SystemConfig" }, { "name": "_superchainConfig", "type": "address", "internalType": "contract SuperchainConfig" } ], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "l2TokenBridge", "inputs": [], "outputs": [ { "name": "", "type": "address", "internalType": "address" } ], "stateMutability": "view" }, { "type": "function", "name": "messenger", "inputs": [], "outputs": [ { "name": "", "type": "address", "internalType": "contract CrossDomainMessenger" } ], "stateMutability": "view" }, { "type": "function", "name": "nativeTokenAddress", "inputs": [], "outputs": [ { "name": "", "type": "address", "internalType": "address" } ], "stateMutability": "view" }, { "type": "function", "name": "onApprove", "inputs": [ { "name": "_owner", "type": "address", "internalType": "address" }, { "name": "", "type": "address", "internalType": "address" }, { "name": "_amount", "type": "uint256", "internalType": "uint256" }, { "name": "_data", "type": "bytes", "internalType": "bytes" } ], "outputs": [ { "name": "", "type": "bool", "internalType": "bool" } ], "stateMutability": "nonpayable" }, { "type": "function", "name": "otherBridge", "inputs": [], "outputs": [ { "name": "", "type": "address", "internalType": "contract StandardBridge" } ], "stateMutability": "view" }, { "type": "function", "name": "paused", "inputs": [], "outputs": [ { "name": "", "type": "bool", "internalType": "bool" } ], "stateMutability": "view" }, { "type": "function", "name": "superchainConfig", "inputs": [], "outputs": [ { "name": "", "type": "address", "internalType": "contract SuperchainConfig" } ], "stateMutability": "view" }, { "type": "function", "name": "supportsInterface", "inputs": [ { "name": "interfaceId", "type": "bytes4", "internalType": "bytes4" } ], "outputs": [ { "name": "", "type": "bool", "internalType": "bool" } ], "stateMutability": "pure" }, { "type": "function", "name": "systemConfig", "inputs": [], "outputs": [ { "name": "", "type": "address", "internalType": "contract SystemConfig" } ], "stateMutability": "view" }, { "type": "function", "name": "unpackOnApproveData", "inputs": [ { "name": "_data", "type": "bytes", "internalType": "bytes" } ], "outputs": [ { "name": "_from", "type": "address", "internalType": "address" }, { "name": "_to", "type": "address", "internalType": "address" }, { "name": "_amount", "type": "uint256", "internalType": "uint256" }, { "name": "_minGasLimit", "type": "uint32", "internalType": "uint32" }, { "name": "_message", "type": "bytes", "internalType": "bytes" } ], "stateMutability": "pure" }, { "type": "function", "name": "version", "inputs": [], "outputs": [ { "name": "", "type": "string", "internalType": "string" } ], "stateMutability": "view" }, { "type": "event", "name": "ERC20BridgeFinalized", "inputs": [ { "name": "localToken", "type": "address", "indexed": true, "internalType": "address" }, { "name": "remoteToken", "type": "address", "indexed": true, "internalType": "address" }, { "name": "from", "type": "address", "indexed": true, "internalType": "address" }, { "name": "to", "type": "address", "indexed": false, "internalType": "address" }, { "name": "amount", "type": "uint256", "indexed": false, "internalType": "uint256" }, { "name": "extraData", "type": "bytes", "indexed": false, "internalType": "bytes" } ], "anonymous": false }, { "type": "event", "name": "ERC20BridgeInitiated", "inputs": [ { "name": "localToken", "type": "address", "indexed": true, "internalType": "address" }, { "name": "remoteToken", "type": "address", "indexed": true, "internalType": "address" }, { "name": "from", "type": "address", "indexed": true, "internalType": "address" }, { "name": "to", "type": "address", "indexed": false, "internalType": "address" }, { "name": "amount", "type": "uint256", "indexed": false, "internalType": "uint256" }, { "name": "extraData", "type": "bytes", "indexed": false, "internalType": "bytes" } ], "anonymous": false }, { "type": "event", "name": "ERC20DepositInitiated", "inputs": [ { "name": "l1Token", "type": "address", "indexed": true, "internalType": "address" }, { "name": "l2Token", "type": "address", "indexed": true, "internalType": "address" }, { "name": "from", "type": "address", "indexed": true, "internalType": "address" }, { "name": "to", "type": "address", "indexed": false, "internalType": "address" }, { "name": "amount", "type": "uint256", "indexed": false, "internalType": "uint256" }, { "name": "extraData", "type": "bytes", "indexed": false, "internalType": "bytes" } ], "anonymous": false }, { "type": "event", "name": "ERC20WithdrawalFinalized", "inputs": [ { "name": "l1Token", "type": "address", "indexed": true, "internalType": "address" }, { "name": "l2Token", "type": "address", "indexed": true, "internalType": "address" }, { "name": "from", "type": "address", "indexed": true, "internalType": "address" }, { "name": "to", "type": "address", "indexed": false, "internalType": "address" }, { "name": "amount", "type": "uint256", "indexed": false, "internalType": "uint256" }, { "name": "extraData", "type": "bytes", "indexed": false, "internalType": "bytes" } ], "anonymous": false }, { "type": "event", "name": "ETHBridgeFinalized", "inputs": [ { "name": "from", "type": "address", "indexed": true, "internalType": "address" }, { "name": "to", "type": "address", "indexed": true, "internalType": "address" }, { "name": "amount", "type": "uint256", "indexed": false, "internalType": "uint256" }, { "name": "extraData", "type": "bytes", "indexed": false, "internalType": "bytes" } ], "anonymous": false }, { "type": "event", "name": "ETHBridgeInitiated", "inputs": [ { "name": "from", "type": "address", "indexed": true, "internalType": "address" }, { "name": "to", "type": "address", "indexed": true, "internalType": "address" }, { "name": "amount", "type": "uint256", "indexed": false, "internalType": "uint256" }, { "name": "extraData", "type": "bytes", "indexed": false, "internalType": "bytes" } ], "anonymous": false }, { "type": "event", "name": "ETHDepositInitiated", "inputs": [ { "name": "from", "type": "address", "indexed": true, "internalType": "address" }, { "name": "to", "type": "address", "indexed": true, "internalType": "address" }, { "name": "amount", "type": "uint256", "indexed": false, "internalType": "uint256" }, { "name": "extraData", "type": "bytes", "indexed": false, "internalType": "bytes" } ], "anonymous": false }, { "type": "event", "name": "ETHWithdrawalFinalized", "inputs": [ { "name": "from", "type": "address", "indexed": true, "internalType": "address" }, { "name": "to", "type": "address", "indexed": true, "internalType": "address" }, { "name": "amount", "type": "uint256", "indexed": false, "internalType": "uint256" }, { "name": "extraData", "type": "bytes", "indexed": false, "internalType": "bytes" } ], "anonymous": false }, { "type": "event", "name": "Initialized", "inputs": [ { "name": "version", "type": "uint8", "indexed": false, "internalType": "uint8" } ], "anonymous": false } ], "address": "0xe63dF06883B875e6025db69738fA15A584ce7b83", "args": [], "bytecode": "0x60806040523480156200001157600080fd5b50620000206000808062000026565b620001f8565b600054600390610100900460ff1615801562000049575060005460ff8083169116105b620000b25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805461ffff191660ff831617610100179055603380546001600160a01b038085166001600160a01b031992831617909255603280549286169290911691909117905562000116847342000000000000000000000000000000000000106200015d565b6000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150505050565b600054610100900460ff16620001ca5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401620000a9565b600380546001600160a01b039384166001600160a01b03199182161790915560048054929093169116179055565b61381180620002086000396000f3fe6080604052600436106101dc5760003560e01c80637f46ddb21161010257806395911e5a11610095578063c0c53b8b11610064578063c0c53b8b14610648578063c89701a214610668578063e11013dd14610695578063e56b44a31461047f57600080fd5b806395911e5a1461051f5780639a2ac6d514610602578063a9f9e67514610615578063b1a1a8821461063557600080fd5b80638f601f66116100d15780638f601f661461055f57806391c49bf8146104d4578063927ede2d146105a557806392a162cf146105d057600080fd5b80637f46ddb2146104d4578063838b2520146104ff57806386c1a9de1461051f578063870876231461053f57600080fd5b80633cb747bf1161017a57806354fd4d501161014957806354fd4d50146104295780635791f5c21461047f57806358a997f61461049f5780635c975abb146104bf57600080fd5b80633cb747bf146103a75780634273ca16146103d45780634d0047ee146103f4578063540abf731461040957600080fd5b80631532ec34116101b65780631532ec34146103025780631635f5fd1461031557806333d7e2bd1461032857806335e80ab31461037a57600080fd5b80630166a07a1461029a57806301ffc9a7146102ba57806309fc8843146102ef57600080fd5b3661029557333b15610275576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f4100000000000000000060648201526084015b60405180910390fd5b610293333362030d40604051806020016040528060008152506106a8565b005b600080fd5b3480156102a657600080fd5b506102936102b5366004613054565b6106bb565b3480156102c657600080fd5b506102da6102d53660046130ec565b610c35565b60405190151581526020015b60405180910390f35b6102936102fd366004613147565b610cce565b61029361031036600461319a565b610da5565b61029361032336600461319a565b610db9565b34801561033457600080fd5b506032546103559073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102e6565b34801561038657600080fd5b506033546103559073ffffffffffffffffffffffffffffffffffffffff1681565b3480156103b357600080fd5b506003546103559073ffffffffffffffffffffffffffffffffffffffff1681565b3480156103e057600080fd5b506102da6103ef36600461319a565b61117b565b34801561040057600080fd5b50610355611339565b34801561041557600080fd5b5061029361042436600461320d565b6113d2565b34801561043557600080fd5b506104726040518060400160405280600581526020017f322e312e3000000000000000000000000000000000000000000000000000000081525081565b6040516102e691906132fa565b34801561048b57600080fd5b5061029361049a36600461330d565b611420565b3480156104ab57600080fd5b506102936104ba366004613361565b611463565b3480156104cb57600080fd5b506102da611537565b3480156104e057600080fd5b5060045473ffffffffffffffffffffffffffffffffffffffff16610355565b34801561050b57600080fd5b5061029361051a36600461320d565b6115cb565b34801561052b57600080fd5b5061029361053a3660046133e4565b611610565b34801561054b57600080fd5b5061029361055a366004613361565b6116e2565b34801561056b57600080fd5b5061059761057a36600461343e565b600260209081526000928352604080842090915290825290205481565b6040519081526020016102e6565b3480156105b157600080fd5b5060035473ffffffffffffffffffffffffffffffffffffffff16610355565b3480156105dc57600080fd5b506105f06105eb366004613477565b6117b6565b6040516102e6969594939291906134b9565b610293610610366004613545565b61189f565b34801561062157600080fd5b50610293610630366004613054565b6118e1565b610293610643366004613147565b6118f0565b34801561065457600080fd5b50610293610663366004613574565b6119c1565b34801561067457600080fd5b506004546103559073ffffffffffffffffffffffffffffffffffffffff1681565b6102936106a3366004613545565b611b77565b6106b58484348585611bba565b50505050565b60035473ffffffffffffffffffffffffffffffffffffffff163314801561078e575060048054600354604080517f6e296e45000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff938416949390921692636e296e459282820192602092908290030181865afa158015610752573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077691906135bf565b73ffffffffffffffffffffffffffffffffffffffff16145b610840576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604160248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20746865206f7468657220627269646760648201527f6500000000000000000000000000000000000000000000000000000000000000608482015260a40161026c565b600061084a611339565b905061085588611e61565b801561088d57508073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b156109db5761089c8888611ebd565b61094e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f5374616e646172644272696467653a2077726f6e672072656d6f746520746f6b60448201527f656e20666f72204f7074696d69736d204d696e7461626c65204552433230206c60648201527f6f63616c20746f6b656e00000000000000000000000000000000000000000000608482015260a40161026c565b6040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152602482018690528916906340c10f1990604401600060405180830381600087803b1580156109be57600080fd5b505af11580156109d2573d6000803e3d6000fd5b50505050610c2b565b73ffffffffffffffffffffffffffffffffffffffff8816158015610a28575073ffffffffffffffffffffffffffffffffffffffff8716734200000000000000000000000000000000000486145b15610b21576000610a4a865a8760405180602001604052806000815250611fdd565b905080610ad9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f5374616e646172644272696467653a20455448207472616e736665722066616960448201527f6c65640000000000000000000000000000000000000000000000000000000000606482015260840161026c565b610b1b87878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611ff792505050565b50610b86565b610b4273ffffffffffffffffffffffffffffffffffffffff8916868661206a565b610b86888888888888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061213e92505050565b8773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610c2b5773ffffffffffffffffffffffffffffffffffffffff8089166000908152600260209081526040808320938b1683529290522054610bf790859061360b565b73ffffffffffffffffffffffffffffffffffffffff808a166000908152600260209081526040808320938c16835292905220555b5050505050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f4273ca16000000000000000000000000000000000000000000000000000000001480610cc857507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b333b15610d5d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f41000000000000000000606482015260840161026c565b610da03333348686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611bba92505050565b505050565b610db28585858585610db9565b5050505050565b60035473ffffffffffffffffffffffffffffffffffffffff1633148015610e8c575060048054600354604080517f6e296e45000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff938416949390921692636e296e459282820192602092908290030181865afa158015610e50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7491906135bf565b73ffffffffffffffffffffffffffffffffffffffff16145b610f3e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604160248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20746865206f7468657220627269646760648201527f6500000000000000000000000000000000000000000000000000000000000000608482015260a40161026c565b6000610f48611339565b90503415610fd8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f5374616e646172644272696467653a206d757374206e6f74207265636569766560448201527f204574686572206576656e20696620746869732069732070617961626c650000606482015260840161026c565b3073ffffffffffffffffffffffffffffffffffffffff86160361107d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f5374616e646172644272696467653a2063616e6e6f742073656e6420746f207360448201527f656c660000000000000000000000000000000000000000000000000000000000606482015260840161026c565b60035473ffffffffffffffffffffffffffffffffffffffff90811690861603611128576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f5374616e646172644272696467653a2063616e6e6f742073656e6420746f206d60448201527f657373656e676572000000000000000000000000000000000000000000000000606482015260840161026c565b6003546111509073ffffffffffffffffffffffffffffffffffffffff838116911630876121cc565b6111738173deaddeaddeaddeaddeaddeaddeaddeaddead000088888888886106bb565b505050505050565b600080611186611339565b90503373ffffffffffffffffffffffffffffffffffffffff82161461122d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f6f6e6c7920616363657074206e617469766520746f6b656e20617070726f766560448201527f2063616c6c6261636b0000000000000000000000000000000000000000000000606482015260840161026c565b600080600080600061123f89896117b6565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250969b50949950929750909550935050505073ffffffffffffffffffffffffffffffffffffffff8c81169086161480156112a85750828a145b80156112b45750600083115b61131a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f696e76616c6964206f6e417070726f7665206461746100000000000000000000604482015260640161026c565b611327858585858561222a565b5060019b9a5050505050505050505050565b603254604080517f4d0047ee000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691634d0047ee9160048083019260209291908290030181865afa1580156113a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113cd91906135bf565b905090565b61141787873388888888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061244892505050565b50505050505050565b610db23386868686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061222a92505050565b333b156114f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f41000000000000000000606482015260840161026c565b61117386863333888888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506124a392505050565b603354604080517f5c975abb000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691635c975abb9160048083019260209291908290030181865afa1580156115a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113cd9190613622565b61141787873388888888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506124a392505050565b333b1561169f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f41000000000000000000606482015260840161026c565b6106b53333868686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061222a92505050565b333b15611771576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f41000000000000000000606482015260840161026c565b61117386863333888888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061244892505050565b60008080803681604c87101561184e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e76616c6964206f6e417070726f7665206461746120666f72204c3153746160448201527f6e64617264427269646765000000000000000000000000000000000000000000606482015260840161026c565b5050508435606090811c96601487013590911c95602881013595604882013560e01c9550604c90910193507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb4019150565b6106b533858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506106a892505050565b611417878787878787876106bb565b333b1561197f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f41000000000000000000606482015260840161026c565b610da033338585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506106a892505050565b600054600390610100900460ff161580156119e3575060005460ff8083169116105b611a6f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161026c565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001660ff8316176101001790556033805473ffffffffffffffffffffffffffffffffffffffff8085167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316179092556032805492861692909116919091179055611b13847342000000000000000000000000000000000000106124b2565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150505050565b6106b53385348686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611bba92505050565b823414611c49576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f5374616e646172644272696467653a206272696467696e6720455448206d757360448201527f7420696e636c7564652073756666696369656e74204554482076616c75650000606482015260840161026c565b7342000000000000000000000000000000000004866000527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b6020527f93848fc853fd2af31e80d9c5877c6e8e6fe1846ae85b985f9f0f735e671f910054611cb2908490613644565b7342000000000000000000000000000000000004866000527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b6020527f93848fc853fd2af31e80d9c5877c6e8e6fe1846ae85b985f9f0f735e671f910055611d1c8585858461259c565b60035460045460405173ffffffffffffffffffffffffffffffffffffffff92831692633dbb202b9216907f0166a07a0000000000000000000000000000000000000000000000000000000090611d9590734200000000000000000000000000000000000486906000908c908c908c908b9060240161365c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e085901b9092168252611e28929187906004016136b7565b600060405180830381600087803b158015611e4257600080fd5b505af1158015611e56573d6000803e3d6000fd5b505050505050505050565b6000611e8d827f1d1d8b630000000000000000000000000000000000000000000000000000000061260f565b80610cc85750610cc8827fec4fc8e30000000000000000000000000000000000000000000000000000000061260f565b6000611ee9837f1d1d8b630000000000000000000000000000000000000000000000000000000061260f565b15611f92578273ffffffffffffffffffffffffffffffffffffffff1663c01e1bd66040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f5d91906135bf565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050610cc8565b8273ffffffffffffffffffffffffffffffffffffffff1663d6c0b2c46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f39573d6000803e3d6000fd5b600080600080845160208601878a8af19695505050505050565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f2ac69ee804d9a7a0984249f508dfab7cb2534b465b6ce1580f99a38ba9c5e63184846040516120569291906136fc565b60405180910390a36106b584848484612632565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610da09084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915261269f565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f3ceee06c1e37648fcbb6ed52e17b3e1f275a1f8c7b22a84b2b84732431e046b38686866040516121b693929190613715565b60405180910390a46111738686868686866127ab565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526106b59085907f23b872dd00000000000000000000000000000000000000000000000000000000906084016120bc565b6000612234611339565b905061225873ffffffffffffffffffffffffffffffffffffffff82168730876121cc565b6003546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152602481018690529082169063095ea7b3906044016020604051808303816000875af11580156122d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122f59190613622565b506123188173deaddeaddeaddeaddeaddeaddeaddeaddead000088888887612833565b60035460045460405173ffffffffffffffffffffffffffffffffffffffff9283169263e0e593c592169087907f1635f5fd000000000000000000000000000000000000000000000000000000009061237a908c908c9085908b90602401613753565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e086901b909216825261240e939291899060040161379c565b600060405180830381600087803b15801561242857600080fd5b505af115801561243c573d6000803e3d6000fd5b50505050505050505050565b8673ffffffffffffffffffffffffffffffffffffffff16612467611339565b73ffffffffffffffffffffffffffffffffffffffff16036124945761248f858585858561222a565b611417565b611417878787878787876128c1565b61141787878787878787612448565b600054610100900460ff16612549576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161026c565b6003805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560048054929093169116179055565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f35d79ab81f2b2017e19afb5c5571778877782d7a8786f5907f93b0f4702f4f2384846040516125fb9291906136fc565b60405180910390a36106b584848484612bec565b600061261a83612c4b565b801561262b575061262b8383612caf565b9392505050565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f31b2166ff604fc5672ea5df08a78081d2bc6d746cadce880747f3643d819e83d84846040516126919291906136fc565b60405180910390a350505050565b6000612701826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612d7e9092919063ffffffff16565b805190915015610da0578080602001905181019061271f9190613622565b610da0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161026c565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fd59c65b35445225835c83f50b6ede06a7be047d22e357073e250d9af537518cd86868660405161282393929190613715565b60405180910390a4505050505050565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f718594027abd4eaed59f95162563e0cc6d0e8d5b86b1c7be8b1b0ac3343d03968686866040516128ab93929190613715565b60405180910390a4611173868686868686612d95565b6128ca87611e61565b15612a18576128d98787611ebd565b61298b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f5374616e646172644272696467653a2077726f6e672072656d6f746520746f6b60448201527f656e20666f72204f7074696d69736d204d696e7461626c65204552433230206c60648201527f6f63616c20746f6b656e00000000000000000000000000000000000000000000608482015260a40161026c565b6040517f9dc29fac00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015260248201859052881690639dc29fac90604401600060405180830381600087803b1580156129fb57600080fd5b505af1158015612a0f573d6000803e3d6000fd5b50505050612aac565b612a3a73ffffffffffffffffffffffffffffffffffffffff88168630866121cc565b73ffffffffffffffffffffffffffffffffffffffff8088166000908152600260209081526040808320938a1683529290522054612a78908490613644565b73ffffffffffffffffffffffffffffffffffffffff8089166000908152600260209081526040808320938b16835292905220555b612aba878787878786612833565b60035460045460405173ffffffffffffffffffffffffffffffffffffffff92831692633dbb202b9216907f0166a07a0000000000000000000000000000000000000000000000000000000090612b1e908b908d908c908c908c908b9060240161365c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e085901b9092168252612bb1929187906004016136b7565b600060405180830381600087803b158015612bcb57600080fd5b505af1158015612bdf573d6000803e3d6000fd5b5050505050505050505050565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f2849b43074093a05396b6f2a937dee8565b15a48a7b3d4bffb732a5017380af584846040516126919291906136fc565b6000612c77827f01ffc9a700000000000000000000000000000000000000000000000000000000612caf565b8015610cc85750612ca8827fffffffff00000000000000000000000000000000000000000000000000000000612caf565b1592915050565b604080517fffffffff000000000000000000000000000000000000000000000000000000008316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825160009392849283928392918391908a617530fa92503d91506000519050828015612d67575060208210155b8015612d735750600081115b979650505050505050565b6060612d8d8484600085612e0d565b949350505050565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f7ff126db8024424bbfd9826e8ab82ff59136289ea440b04b39a0df1b03b9cabf86868660405161282393929190613715565b606082471015612e9f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161026c565b73ffffffffffffffffffffffffffffffffffffffff85163b612f1d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161026c565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612f4691906137e8565b60006040518083038185875af1925050503d8060008114612f83576040519150601f19603f3d011682016040523d82523d6000602084013e612f88565b606091505b5091509150612d7382828660608315612fa257508161262b565b825115612fb25782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161026c91906132fa565b73ffffffffffffffffffffffffffffffffffffffff8116811461300857600080fd5b50565b60008083601f84011261301d57600080fd5b50813567ffffffffffffffff81111561303557600080fd5b60208301915083602082850101111561304d57600080fd5b9250929050565b600080600080600080600060c0888a03121561306f57600080fd5b873561307a81612fe6565b9650602088013561308a81612fe6565b9550604088013561309a81612fe6565b945060608801356130aa81612fe6565b93506080880135925060a088013567ffffffffffffffff8111156130cd57600080fd5b6130d98a828b0161300b565b989b979a50959850939692959293505050565b6000602082840312156130fe57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461262b57600080fd5b803563ffffffff8116811461314257600080fd5b919050565b60008060006040848603121561315c57600080fd5b6131658461312e565b9250602084013567ffffffffffffffff81111561318157600080fd5b61318d8682870161300b565b9497909650939450505050565b6000806000806000608086880312156131b257600080fd5b85356131bd81612fe6565b945060208601356131cd81612fe6565b935060408601359250606086013567ffffffffffffffff8111156131f057600080fd5b6131fc8882890161300b565b969995985093965092949392505050565b600080600080600080600060c0888a03121561322857600080fd5b873561323381612fe6565b9650602088013561324381612fe6565b9550604088013561325381612fe6565b9450606088013593506132686080890161312e565b925060a088013567ffffffffffffffff8111156130cd57600080fd5b60005b8381101561329f578181015183820152602001613287565b838111156106b55750506000910152565b600081518084526132c8816020860160208601613284565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920