diff --git a/v2/pkg/address.sol/address.go b/v2/pkg/address.sol/address.go index 9d97ac33..a7086abd 100644 --- a/v2/pkg/address.sol/address.go +++ b/v2/pkg/address.sol/address.go @@ -32,7 +32,7 @@ var ( // AddressMetaData contains all meta data concerning the Address contract. var AddressMetaData = &bind.MetaData{ ABI: "[{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]}]", - Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220193c24b71be715f2946bd8d3447d08cc7f4cf98e79416d7bbf7c0fadbb16712764736f6c63430008150033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122051aee3d3cbb51dd227047d3a402e288a90aab6ebded8bce84a18c9d83c6fa8b264736f6c634300081a0033", } // AddressABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/beaconproxy.sol/beaconproxy.go b/v2/pkg/beaconproxy.sol/beaconproxy.go index 1f538433..9303b6aa 100644 --- a/v2/pkg/beaconproxy.sol/beaconproxy.go +++ b/v2/pkg/beaconproxy.sol/beaconproxy.go @@ -32,7 +32,7 @@ var ( // BeaconProxyMetaData contains all meta data concerning the BeaconProxy contract. var BeaconProxyMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"payable\"},{\"type\":\"fallback\",\"stateMutability\":\"payable\"},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC1967InvalidBeacon\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC1967InvalidImplementation\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC1967NonPayable\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]}]", - Bin: "0x60a06040526040516105e53803806105e583398101604081905261002291610387565b61002c828261003e565b506001600160a01b031660805261047e565b610047826100fe565b6040516001600160a01b038316907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a28051156100f2576100ed826001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e79190610447565b82610211565b505050565b6100fa610288565b5050565b806001600160a01b03163b60000361013957604051631933b43b60e21b81526001600160a01b03821660048201526024015b60405180910390fd5b807fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392831617905560408051635c60da1b60e01b81529051600092841691635c60da1b9160048083019260209291908290030181865afa1580156101b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d99190610447565b9050806001600160a01b03163b6000036100fa57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610130565b6060600080846001600160a01b03168460405161022e9190610462565b600060405180830381855af49150503d8060008114610269576040519150601f19603f3d011682016040523d82523d6000602084013e61026e565b606091505b50909250905061027f8583836102a9565b95945050505050565b34156102a75760405163b398979f60e01b815260040160405180910390fd5b565b6060826102be576102b982610308565b610301565b81511580156102d557506001600160a01b0384163b155b156102fe57604051639996b31560e01b81526001600160a01b0385166004820152602401610130565b50805b9392505050565b8051156103185780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b80516001600160a01b038116811461034857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561037e578181015183820152602001610366565b50506000910152565b6000806040838503121561039a57600080fd5b6103a383610331565b60208401519092506001600160401b03808211156103c057600080fd5b818501915085601f8301126103d457600080fd5b8151818111156103e6576103e661034d565b604051601f8201601f19908116603f0116810190838211818310171561040e5761040e61034d565b8160405282815288602084870101111561042757600080fd5b610438836020830160208801610363565b80955050505050509250929050565b60006020828403121561045957600080fd5b61030182610331565b60008251610474818460208701610363565b9190910192915050565b60805161014d61049860003960006024015261014d6000f3fe608060405261000c61000e565b005b61001e610019610020565b6100b6565b565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561008d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100b191906100da565b905090565b3660008037600080366000845af43d6000803e8080156100d5573d6000f35b3d6000fd5b6000602082840312156100ec57600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461011057600080fd5b939250505056fea26469706673582212203f50e3539b09e66688712f265ca09ddfce61692f2aebd7dc1db053376883b5cd64736f6c63430008150033", + Bin: "0x60a06040526040516105eb3803806105eb83398101604081905261002291610387565b61002c828261003e565b506001600160a01b0316608052610484565b610047826100fe565b6040516001600160a01b038316907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a28051156100f2576100ed826001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e7919061044d565b82610211565b505050565b6100fa610288565b5050565b806001600160a01b03163b60000361013957604051631933b43b60e21b81526001600160a01b03821660048201526024015b60405180910390fd5b807fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392831617905560408051635c60da1b60e01b81529051600092841691635c60da1b9160048083019260209291908290030181865afa1580156101b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d9919061044d565b9050806001600160a01b03163b6000036100fa57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610130565b6060600080846001600160a01b03168460405161022e9190610468565b600060405180830381855af49150503d8060008114610269576040519150601f19603f3d011682016040523d82523d6000602084013e61026e565b606091505b50909250905061027f8583836102a9565b95945050505050565b34156102a75760405163b398979f60e01b815260040160405180910390fd5b565b6060826102be576102b982610308565b610301565b81511580156102d557506001600160a01b0384163b155b156102fe57604051639996b31560e01b81526001600160a01b0385166004820152602401610130565b50805b9392505050565b8051156103185780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b80516001600160a01b038116811461034857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561037e578181015183820152602001610366565b50506000910152565b6000806040838503121561039a57600080fd5b6103a383610331565b60208401519092506001600160401b038111156103bf57600080fd5b8301601f810185136103d057600080fd5b80516001600160401b038111156103e9576103e961034d565b604051601f8201601f19908116603f011681016001600160401b03811182821017156104175761041761034d565b60405281815282820160200187101561042f57600080fd5b610440826020830160208601610363565b8093505050509250929050565b60006020828403121561045f57600080fd5b61030182610331565b6000825161047a818460208701610363565b9190910192915050565b60805161014d61049e60003960006024015261014d6000f3fe608060405261000c61000e565b005b61001e610019610020565b6100b6565b565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561008d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100b191906100da565b905090565b3660008037600080366000845af43d6000803e8080156100d5573d6000f35b3d6000fd5b6000602082840312156100ec57600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461011057600080fd5b939250505056fea2646970667358221220fbef562e23099f6b70d42efa68ad4a1991c21a30ee88b7ae19894071f581e3e364736f6c634300081a0033", } // BeaconProxyABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/console.sol/console.go b/v2/pkg/console.sol/console.go index a106117b..ac2e64e3 100644 --- a/v2/pkg/console.sol/console.go +++ b/v2/pkg/console.sol/console.go @@ -32,7 +32,7 @@ var ( // ConsoleMetaData contains all meta data concerning the Console contract. var ConsoleMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201f63cc3d6b12b08d8dfe34ad72462a6a09906e3938e141ae066549d38e2d310664736f6c63430008150033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122036e7b352b1f4f21e7064fc214beafa9cc1ff9b18801b76f46109cf695d3dd28764736f6c634300081a0033", } // ConsoleABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/core.sol/core.go b/v2/pkg/core.sol/core.go index 8688ca69..20e8e920 100644 --- a/v2/pkg/core.sol/core.go +++ b/v2/pkg/core.sol/core.go @@ -32,7 +32,7 @@ var ( // CoreMetaData contains all meta data concerning the Core contract. var CoreMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d14b09a20780da20465b80f583480c51e4f2cbfa4dae6910b35e182f09145fc964736f6c63430008150033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206b99ffed9fb2c99093653e333a919be75559602fd4000fc9962f0f4027d6168a64736f6c634300081a0033", } // CoreABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/defender.sol/defender.go b/v2/pkg/defender.sol/defender.go index 9120beed..75c91808 100644 --- a/v2/pkg/defender.sol/defender.go +++ b/v2/pkg/defender.sol/defender.go @@ -32,7 +32,7 @@ var ( // DefenderMetaData contains all meta data concerning the Defender contract. var DefenderMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f0c9df49786dd4100515b23db1dd49e9e8cc91c02427e8ee66d061e755d7f8cc64736f6c63430008150033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205e77611c2a167a5e16c9b4e93e900d9515ee8697eba9f144b6f319dcd7d591c664736f6c634300081a0033", } // DefenderABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/defenderdeploy.sol/defenderdeploy.go b/v2/pkg/defenderdeploy.sol/defenderdeploy.go index 18989853..0f0f3faf 100644 --- a/v2/pkg/defenderdeploy.sol/defenderdeploy.go +++ b/v2/pkg/defenderdeploy.sol/defenderdeploy.go @@ -32,7 +32,7 @@ var ( // DefenderDeployMetaData contains all meta data concerning the DefenderDeploy contract. var DefenderDeployMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204836d7911c6370ef01af0ec6bfe1bdaf2aef1e9dec8ee10e45b96d32b4c2d89264736f6c63430008150033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122024f703bf58fe16c06205a31f9ed26113603ad9c02820dbd6a3872487d3133e8564736f6c634300081a0033", } // DefenderDeployABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/erc1967proxy.sol/erc1967proxy.go b/v2/pkg/erc1967proxy.sol/erc1967proxy.go index 10ed8ea5..7fd94cde 100644 --- a/v2/pkg/erc1967proxy.sol/erc1967proxy.go +++ b/v2/pkg/erc1967proxy.sol/erc1967proxy.go @@ -32,7 +32,7 @@ var ( // ERC1967ProxyMetaData contains all meta data concerning the ERC1967Proxy contract. var ERC1967ProxyMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"payable\"},{\"type\":\"fallback\",\"stateMutability\":\"payable\"},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC1967InvalidImplementation\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC1967NonPayable\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]}]", - Bin: "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c63430008150033", + Bin: "0x608060405260405161041d38038061041d83398101604081905261002291610268565b61002c8282610033565b5050610358565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b919061033c565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b038111156102ae57600080fd5b8301601f810185136102bf57600080fd5b80516001600160401b038111156102d8576102d861022e565b604051601f8201601f19908116603f011681016001600160401b03811182821017156103065761030661022e565b60405281815282820160200187101561031e57600080fd5b61032f826020830160208601610244565b8093505050509250929050565b6000825161034e818460208701610244565b9190910192915050565b60b7806103666000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220266fcff3f047fd27b99bc2ae00f2594c9dc6c8903cdba2daf7cf2623c610c93f64736f6c634300081a0033", } // ERC1967ProxyABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/erc1967utils.sol/erc1967utils.go b/v2/pkg/erc1967utils.sol/erc1967utils.go index dd6d9f8d..767ea417 100644 --- a/v2/pkg/erc1967utils.sol/erc1967utils.go +++ b/v2/pkg/erc1967utils.sol/erc1967utils.go @@ -32,7 +32,7 @@ var ( // ERC1967UtilsMetaData contains all meta data concerning the ERC1967Utils contract. var ERC1967UtilsMetaData = &bind.MetaData{ ABI: "[{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ERC1967InvalidAdmin\",\"inputs\":[{\"name\":\"admin\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC1967InvalidBeacon\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC1967InvalidImplementation\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC1967NonPayable\",\"inputs\":[]}]", - Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203389f40cc5099a3546c0860aad7d2a0c5d49c08b130a2aeeac23f8f0d3c99bae64736f6c63430008150033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122001eb0535328502a373828dff3af9c93d4979f247a97487a5d4c2b93bcd54364f64736f6c634300081a0033", } // ERC1967UtilsABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/erc20custodynew.sol/erc20custodynew.go b/v2/pkg/erc20custodynew.sol/erc20custodynew.go index da96d274..bbd8cdd6 100644 --- a/v2/pkg/erc20custodynew.sol/erc20custodynew.go +++ b/v2/pkg/erc20custodynew.sol/erc20custodynew.go @@ -32,7 +32,7 @@ var ( // ERC20CustodyNewMetaData contains all meta data concerning the ERC20CustodyNew contract. var ERC20CustodyNewMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_gateway\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_tssAddress\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"gateway\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIGatewayEVM\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"tssAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndCall\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndRevert\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Withdraw\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndCall\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndRevert\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x608060405234801561001057600080fd5b50604051610b35380380610b3583398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a37806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bd565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610942565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102819392919061098d565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610942565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102819392919061098d565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109b0565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109d2565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff8082111561087557600080fd5b818801915088601f83011261088957600080fd5b81358181111561089857600080fd5b8960208285010111156108aa57600080fd5b9699959850939650602001949392505050565b6000806000606084860312156108d257600080fd5b6108db846107f9565b92506108e9602085016107f9565b9150604084013590509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109826080830184866108f9565b979650505050505050565b8381526040602082015260006109a76040830184866108f9565b95945050505050565b6000602082840312156109c257600080fd5b8151801515811461065e57600080fd5b6000825160005b818110156109f357602081860181015185830152016109d9565b50600092019182525091905056fea2646970667358221220add5c975d5cd9c8b4afe35ea370aed6f4c4571bcc8cfe91b243cc9add705e36664736f6c63430008150033", + Bin: "0x608060405234801561001057600080fd5b50604051610b4a380380610b4a83398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a4c806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bf565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610945565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e858585604051610281939291906109a2565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610945565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8858585604051610281939291906109a2565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109c5565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109e7565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff81111561087457600080fd5b8601601f8101881361088557600080fd5b803567ffffffffffffffff81111561089c57600080fd5b8860208284010111156108ae57600080fd5b959894975092955050506020019190565b6000806000606084860312156108d457600080fd5b6108dd846107f9565b92506108eb602085016107f9565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006109976080830184866108fc565b979650505050505050565b8381526040602082015260006109bc6040830184866108fc565b95945050505050565b6000602082840312156109d757600080fd5b8151801515811461065e57600080fd5b6000825160005b81811015610a0857602081860181015185830152016109ee565b50600092019182525091905056fea264697066735822122041336b1568f49be1aa3dcd208e804b373772741e9b7e1726a8869e99fced60c764736f6c634300081a0033", } // ERC20CustodyNewABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/erc20custodynewechidnatest.sol/erc20custodynewechidnatest.go b/v2/pkg/erc20custodynewechidnatest.sol/erc20custodynewechidnatest.go index ee1f6d1f..bad0ccec 100644 --- a/v2/pkg/erc20custodynewechidnatest.sol/erc20custodynewechidnatest.go +++ b/v2/pkg/erc20custodynewechidnatest.sol/erc20custodynewechidnatest.go @@ -32,7 +32,7 @@ var ( // ERC20CustodyNewEchidnaTestMetaData contains all meta data concerning the ERC20CustodyNewEchidnaTest contract. var ERC20CustodyNewEchidnaTestMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"echidnaCaller\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"gateway\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIGatewayEVM\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testERC20\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractTestERC20\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"tssAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndCall\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndRevert\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Withdraw\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndCall\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndRevert\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x600480546001600160a01b03191633908117909155600e60809081526d11d85d195dd85e5155934b9cdbdb60921b60a05260e49190915261012361010452604460c090815261012460405260e080516001600160e01b0390811663485cc95560e01b1790915262000073929190620001fe16565b600580546001600160a01b03929092166001600160a01b0319928316811790915560068054909216179055348015620000ab57600080fd5b5060065460045460016000556001600160a01b039182169116811580620000d957506001600160a01b038116155b15620000f85760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b03199182161790915560028054929093169116179055604051620001329062003ae3565b60408082526004908201819052631d195cdd60e21b606083015260806020830181905282015263151154d560e21b60a082015260c001604051809103906000f08015801562000185573d6000803e3d6000fd5b50600380546001600160a01b0319166001600160a01b0392831617905560065460405163ae7a3a6f60e01b815230600482015291169063ae7a3a6f90602401600060405180830381600087803b158015620001df57600080fd5b505af1158015620001f4573d6000803e3d6000fd5b5050505062004bf2565b60006200020a62003af1565b6200021784848362000221565b9150505b92915050565b600080620002308584620002a3565b9050620002986040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f787900000081525082866040516020016200028192919062003c01565b60408051601f1981840301815291905285620002b1565b9150505b9392505050565b60006200029c8383620002eb565b60c08101515160009015620002df57620002d784848460c001516200031060201b60201c565b90506200029c565b620002d78484620004a0565b6000620002f983836200057a565b6200029c83836020015184620002b160201b60201c565b6000806200031d6200058c565b905060006200032d86836200062c565b905060006200034c826060015183602001518562000a7f60201b60201c565b905060006200035e8383898962000c4e565b905060006200036d82620019b5565b602081015181519192509060030b15620003cb578982604001516040516020016200039a92919062003c27565b60408051601f198184030181529082905262461bcd60e51b8252620003c29160040162003c91565b60405180910390fd5b6000620004166040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a20000000000000000000000081525083600162001b6260201b60201c565b60405163c6ce059d60e01b8152909150600080516020620066908339815191529063c6ce059d906200044d90849060040162003c91565b602060405180830381865afa1580156200046b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000491919062003ca6565b9b9a5050505050505050505050565b604051638d1cc92560e01b815260009081906000805160206200669083398151915290638d1cc92590620004d990879060040162003c91565b600060405180830381865afa158015620004f7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000521919081019062003db1565b905060006200055482856040516020016200053e92919062003de9565b60408051601f1981840301815291905262001d14565b90506001600160a01b038116620002175784846040516020016200039a92919062003e1c565b620005888282600062001d27565b5050565b60408051808201825260038152621bdd5d60ea1b602082015290516334515cdb60e21b81526060916000805160206200669083398151915291829063d145736c90620005dd90849060040162003eaf565b600060405180830381865afa158015620005fb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000625919081019062003ee6565b9250505090565b6200065f6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000600080516020620066908339815191529050620006a66040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b620006b18562001e11565b60208201526000620006c38662002093565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000706573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000730919081019062003ee6565b868385602001516040516020016200074c949392919062003f33565b60408051601f19818403018152908290526360f9bb1160e01b825291506000906001600160a01b038616906360f9bb11906200078d90859060040162003c91565b600060405180830381865afa158015620007ab573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620007d5919081019062003ee6565b604051636da11afb60e11b81529091506001600160a01b0386169063db4235f6906200080690849060040162003fc5565b602060405180830381865afa15801562000824573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200084a919062004000565b6200086257816040516020016200039a919062004024565b6040516309389f5960e31b81526001600160a01b038616906349c4fac890620008909084906004016200409d565b600060405180830381865afa158015620008ae573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620008d8919081019062003ee6565b8452604051636da11afb60e11b81526001600160a01b0386169063db4235f69062000908908490600401620040e5565b602060405180830381865afa15801562000926573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200094c919062004000565b15620009ce576040516309389f5960e31b81526001600160a01b038616906349c4fac89062000980908490600401620040e5565b600060405180830381865afa1580156200099e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620009c8919081019062003ee6565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001620009f5919062004128565b6040516020818303038152906040526040518363ffffffff1660e01b815260040162000a2392919062004185565b600060405180830381865afa15801562000a41573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000a6b919081019062003ee6565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b606081526020019060019003908162000a9b579050509050604051806040016040528060048152602001630677265760e41b8152508160008151811062000ae65762000ae6620041ae565b6020026020010181905250604051806040016040528060038152602001620b5c9b60ea1b8152508160018151811062000b235762000b23620041ae565b60200260200101819052508460405160200162000b419190620041c4565b6040516020818303038152906040528160028151811062000b665762000b66620041ae565b60200260200101819052508260405160200162000b849190620041f4565b6040516020818303038152906040528160038151811062000ba95762000ba9620041ae565b6020908102919091010152600062000bc182620019b5565b905060008160200151905062000c2c62000bfe60405180604001604052806005815260200164173539b7b760d91b8152506200223460201b60201c565b6040805180820182526000808252602091820152815180830190925284518252808501908201529062002261565b62000c4457856040516020016200039a919062004225565b9695505050505050565b60a081015160408051808201825260008082526020918201528151808301909252825180835292810191015260609060008051602062006690833981519152901562000c9a565b511590565b62000dbd5782602001511562000d2e5760405162461bcd60e51b81526020600482015260586024820152600080516020620066b083398151915260448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401620003c2565b8260c001511562000dbd5760405162461bcd60e51b81526020600482015260536024820152600080516020620066b083398151915260448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401620003c2565b6040805160ff8082526120008201909252600091816020015b606081526020019060019003908162000dd65790505090506000604051806040016040528060038152602001620dce0f60eb1b81525082828062000e1a90620042bc565b935060ff168151811062000e325762000e32620041ae565b60200260200101819052506040518060400160405280600d81526020016c302e302e312d616c7068612e3760981b81525060405160200162000e759190620042de565b60405160208183030381529060405282828062000e9290620042bc565b935060ff168151811062000eaa5762000eaa620041ae565b6020026020010181905250604051806040016040528060068152602001656465706c6f7960d01b81525082828062000ee290620042bc565b935060ff168151811062000efa5762000efa620041ae565b60200260200101819052506040518060400160405280600e81526020016d2d2d636f6e74726163744e616d6560901b81525082828062000f3a90620042bc565b935060ff168151811062000f525762000f52620041ae565b6020026020010181905250876020015182828062000f7090620042bc565b935060ff168151811062000f885762000f88620041ae565b60200260200101819052506040518060400160405280600e81526020016d05a5ac6dedce8e4c2c6e8a0c2e8d60931b81525082828062000fc890620042bc565b935060ff168151811062000fe05762000fe0620041ae565b60209081029190910101528751828262000ffa81620042bc565b935060ff1681518110620010125762001012620041ae565b6020026020010181905250604051806040016040528060098152602001680b4b58da185a5b925960ba1b8152508282806200104d90620042bc565b935060ff1681518110620010655762001065620041ae565b60209081029190910101526200107b46620022ca565b82826200108881620042bc565b935060ff1681518110620010a057620010a0620041ae565b60200260200101819052506040518060400160405280600f81526020016e2d2d6275696c64496e666f46696c6560881b815250828280620010e190620042bc565b935060ff1681518110620010f957620010f9620041ae565b6020026020010181905250868282806200111390620042bc565b935060ff16815181106200112b576200112b620041ae565b6020908102919091010152855115620012495760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f64650000000000000000000000602082015282826200117f81620042bc565b935060ff1681518110620011975762001197620041ae565b60209081029190910101526040516371aad10d60e01b81526001600160a01b038416906371aad10d90620011d090899060040162003c91565b600060405180830381865afa158015620011ee573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001218919081019062003ee6565b82826200122581620042bc565b935060ff16815181106200123d576200123d620041ae565b60200260200101819052505b84602001511562001302576040805180820190915260128152712d2d766572696679536f75726365436f646560701b602082015282826200128a81620042bc565b935060ff1681518110620012a257620012a2620041ae565b60200260200101819052506040518060400160405280600581526020016466616c736560d81b815250828280620012d990620042bc565b935060ff1681518110620012f157620012f1620041ae565b602002602001018190525062001489565b6200131b62000c958660a001516200223460201b60201c565b620013a85760408051808201909152600d81526c2d2d6c6963656e73655479706560981b602082015282826200135181620042bc565b935060ff1681518110620013695762001369620041ae565b60200260200101819052508460a001516040516020016200138b9190620041c4565b604051602081830303815290604052828280620012d990620042bc565b8460c00151158015620013d15750620013cf62000c9589604001516200223460201b60201c565b155b15620014895760408051808201909152600d81526c2d2d6c6963656e73655479706560981b602082015282826200140881620042bc565b935060ff1681518110620014205762001420620041ae565b6020908102919091010152620014368862002363565b604051602001620014489190620041c4565b6040516020818303038152906040528282806200146590620042bc565b935060ff16815181106200147d576200147d620041ae565b60200260200101819052505b620014a262000c9586604001516200223460201b60201c565b620015305760408051808201909152600b81526a0b4b5c995b185e595c925960aa1b60208201528282620014d681620042bc565b935060ff1681518110620014ee57620014ee620041ae565b602002602001018190525084604001518282806200150c90620042bc565b935060ff1681518110620015245762001524620041ae565b60200260200101819052505b6060850151156200162f576040805180820190915260068152650b4b5cd85b1d60d21b602082015282826200156581620042bc565b935060ff16815181106200157d576200157d620041ae565b60209081029190910101526060850151604051631623433d60e31b815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015620015d4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620015fe919081019062003ee6565b82826200160b81620042bc565b935060ff1681518110620016235762001623620041ae565b60200260200101819052505b60e08501515115620016ce5760408051808201909152600a8152690b4b59d85cd31a5b5a5d60b21b602082015282826200166981620042bc565b935060ff1681518110620016815762001681620041ae565b602090810291909101015260e0850151516200169d90620022ca565b8282620016aa81620042bc565b935060ff1681518110620016c257620016c2620041ae565b60200260200101819052505b60e08501516020015115620017785760408051808201909152600a8152692d2d676173507269636560b01b602082015282826200170b81620042bc565b935060ff1681518110620017235762001723620041ae565b6020026020010181905250620017478560e0015160200151620022ca60201b60201c565b82826200175481620042bc565b935060ff16815181106200176c576200176c620041ae565b60200260200101819052505b60e08501516040015115620018265760408051808201909152600e81526d2d2d6d617846656550657247617360901b60208201528282620017b981620042bc565b935060ff1681518110620017d157620017d1620041ae565b6020026020010181905250620017f58560e0015160400151620022ca60201b60201c565b82826200180281620042bc565b935060ff16815181106200181a576200181a620041ae565b60200260200101819052505b60e08501516060015115620018e35760408051808201909152601681527f2d2d6d61785072696f7269747946656550657247617300000000000000000000602082015282826200187681620042bc565b935060ff16815181106200188e576200188e620041ae565b6020026020010181905250620018b28560e0015160600151620022ca60201b60201c565b8282620018bf81620042bc565b935060ff1681518110620018d757620018d7620041ae565b60200260200101819052505b60008160ff166001600160401b0381111562001903576200190362003cd1565b6040519080825280602002602001820160405280156200193857816020015b6060815260200190600190039081620019225790505b50905060005b8260ff168160ff161015620019a657838160ff1681518110620019655762001965620041ae565b6020026020010151828260ff1681518110620019855762001985620041ae565b602002602001018190525080806200199d90620042bc565b9150506200193e565b5093505050505b949350505050565b620019dd6040518060600160405280600060030b815260200160608152602001606081525090565b6040805180820182526004808252630c4c2e6d60e31b602083015291516334515cdb60e21b81526000805160206200669083398151915292600091849163d145736c9162001a2e9186910162004337565b600060405180830381865afa15801562001a4c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001a76919081019062003ee6565b9050600062001a86868362002a6a565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b815260040162001ab8919062004380565b6000604051808303816000875af115801562001ad8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001b029190810190620043e6565b805190915060030b1580159062001b1c5750602081015151155b801562001b2c5750604081015151155b1562000c44578160008151811062001b485762001b48620041ae565b60200260200101516040516020016200039a91906200449b565b6060600062001b988560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252865182528087019082015290915062001bd19082905b9062002bc6565b1562001ce157600062001c558262001c4e8162001c4762001c198a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b9062002bef565b9062002c52565b905062001c8d62001c85604051806040016040528060018152602001600560f91b8152506200223460201b60201c565b829062002bc6565b1562001ccc5762001cc962001cc1604051806040016040528060018152602001600560f91b8152506200223460201b60201c565b829062002cdf565b90505b62001cd78162002d07565b925050506200029c565b821562001cfd5784846040516020016200039a9291906200466d565b50506040805160208101909152600081526200029c565b6000808251602084016000f09392505050565b8160a001511562001d3757505050565b600062001d4684848462002d72565b9050600062001d5582620019b5565b602081015181519192509060030b15801562001dcd575062001dcd62001da0604051806040016040528060078152602001665355434345535360c81b8152506200223460201b60201c565b60408051808201825260008082526020918201528151808301909252845182528085019082015262001bca565b1562001ddb57505050505050565b6040820151511562001dfe5781604001516040516020016200039a9190620046ec565b806040516020016200039a919062004738565b6060600062001e478360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b905062001e8262001e7a604051806040016040528060048152602001630b9cdbdb60e21b8152506200223460201b60201c565b829062002261565b1562001ecb576200029c62001ec562001ebd604051806040016040528060048152602001630b9cdbdb60e21b8152506200223460201b60201c565b8390620032f1565b62002d07565b62001f0162001ef9604051806040016040528060018152602001601d60f91b8152506200223460201b60201c565b829062003385565b60010362001f725762001f3762001cc1604051806040016040528060018152602001601d60f91b8152506200223460201b60201c565b506200029c62001ec562001f6a604051806040016040528060018152602001601d60f91b8152506200223460201b60201c565b839062002cdf565b62001fa462001e7a60405180604001604052806005815260200164173539b7b760d91b8152506200223460201b60201c565b156200208057600062001fe18262001fdb604051806040016040528060018152602001602f60f81b8152506200223460201b60201c565b6200342c565b90506000816001835162001ff691906200478a565b81518110620020095762002009620041ae565b602002602001015190506200207762001ec56200204960405180604001604052806005815260200164173539b7b760d91b8152506200223460201b60201c565b60408051808201825260008082526020918201528151808301909252855182528086019082015290620032f1565b95945050505050565b826040516020016200039a9190620047a0565b60606000620020c98360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b9050620020fc62001e7a604051806040016040528060048152602001630b9cdbdb60e21b8152506200223460201b60201c565b156200210d576200029c8162002d07565b6200213b62001ef9604051806040016040528060018152602001601d60f91b8152506200223460201b60201c565b60010362002175576200029c62001ec562001f6a604051806040016040528060018152602001601d60f91b8152506200223460201b60201c565b620021a762001e7a60405180604001604052806005815260200164173539b7b760d91b8152506200223460201b60201c565b1562002080576000620021de8262001fdb604051806040016040528060018152602001602f60f81b8152506200223460201b60201c565b905060018151111562002220578060028251620021fc91906200478a565b815181106200220f576200220f620041ae565b602002602001015192505050919050565b50826040516020016200039a9190620047a0565b60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b80518251600091111562002278575060006200021b565b8151835160208501516000929162002290916200485c565b6200229c91906200478a565b905082602001518103620022b55760019150506200021b565b82516020840151819020912014905092915050565b60606000620022d983620034f6565b60010190506000816001600160401b03811115620022fb57620022fb62003cd1565b6040519080825280601f01601f19166020018201604052801562002326576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846200233057509392505050565b606060006200237c83604001516200223460201b60201c565b9050620023bd620023b56040518060400160405280600a8152602001691553931250d15394d15160b21b8152506200223460201b60201c565b8290620035df565b15620023e55750506040805180820190915260048152634e6f6e6560e01b6020820152919050565b6200241b620023b560405180604001604052806009815260200168556e6c6963656e736560b81b8152506200223460201b60201c565b1562002448575050604080518082019091526009815268556e6c6963656e736560b81b6020820152919050565b62002478620023b56040518060400160405280600381526020016213525560ea1b8152506200223460201b60201c565b156200249f57505060408051808201909152600381526213525560ea1b6020820152919050565b620024d8620023b56040518060400160405280600c81526020016b47504c2d322e302d6f6e6c7960a01b8152506200223460201b60201c565b806200251c57506200251c620023b56040518060400160405280601081526020016f23a8261699171816b7b916b630ba32b960811b8152506200223460201b60201c565b156200254957505060408051808201909152600981526823a72a9023a8263b1960b91b6020820152919050565b62002582620023b56040518060400160405280600c81526020016b47504c2d332e302d6f6e6c7960a01b8152506200223460201b60201c565b80620025c65750620025c6620023b56040518060400160405280601081526020016f23a8261699971816b7b916b630ba32b960811b8152506200223460201b60201c565b15620025f3575050604080518082019091526009815268474e552047504c763360b81b6020820152919050565b6200262d620023b56040518060400160405280600d81526020016c4c47504c2d322e312d6f6e6c7960981b8152506200223460201b60201c565b8062002672575062002672620023b5604051806040016040528060118152602001702623a8261699171896b7b916b630ba32b960791b8152506200223460201b60201c565b15620026a257505060408051808201909152600c81526b474e55204c47504c76322e3160a01b6020820152919050565b620026dc620023b56040518060400160405280600d81526020016c4c47504c2d332e302d6f6e6c7960981b8152506200223460201b60201c565b8062002721575062002721620023b5604051806040016040528060118152602001702623a8261699971816b7b916b630ba32b960791b8152506200223460201b60201c565b156200274f57505060408051808201909152600a815269474e55204c47504c763360b01b6020820152919050565b62002788620023b56040518060400160405280600c81526020016b4253442d322d436c6175736560a01b8152506200223460201b60201c565b15620027b857505060408051808201909152600c81526b4253442d322d436c6175736560a01b6020820152919050565b620027f1620023b56040518060400160405280600c81526020016b4253442d332d436c6175736560a01b8152506200223460201b60201c565b156200282157505060408051808201909152600c81526b4253442d332d436c6175736560a01b6020820152919050565b62002855620023b56040518060400160405280600781526020016604d504c2d322e360cc1b8152506200223460201b60201c565b156200288057505060408051808201909152600781526604d504c2d322e360cc1b6020820152919050565b620028b4620023b56040518060400160405280600781526020016604f534c2d332e360cc1b8152506200223460201b60201c565b15620028df57505060408051808201909152600781526604f534c2d332e360cc1b6020820152919050565b62002916620023b56040518060400160405280600a81526020016904170616368652d322e360b41b8152506200223460201b60201c565b156200294457505060408051808201909152600a81526904170616368652d322e360b41b6020820152919050565b6200297e620023b56040518060400160405280600d81526020016c4147504c2d332e302d6f6e6c7960981b8152506200223460201b60201c565b80620029c35750620029c3620023b56040518060400160405280601181526020017020a3a8261699971816b7b916b630ba32b960791b8152506200223460201b60201c565b15620029f157505060408051808201909152600a815269474e55204147504c763360b01b6020820152919050565b62002a26620023b5604051806040016040528060088152602001674255534c2d312e3160c01b8152506200223460201b60201c565b1562002a5157505060408051808201909152600781526642534c20312e3160c81b6020820152919050565b604080840151845191516200039a929060200162004872565b60608060005b845181101562002b0d578185828151811062002a905762002a90620041ae565b602002602001015160405160200162002aab92919062003de9565b60405160208183030381529060405291506001855162002acc91906200478a565b811462002af8578160405160200162002ae69190620049c6565b60405160208183030381529060405291505b8062002b0481620049ed565b91505062002a70565b5060408051600380825260808201909252600091816020015b606081526020019060019003908162002b26579050509050838160008151811062002b555762002b55620041ae565b6020026020010181905250604051806040016040528060028152602001612d6360f01b8152508160018151811062002b915762002b91620041ae565b6020026020010181905250818160028151811062002bb35762002bb3620041ae565b6020908102919091010152949350505050565b602080830151835183519284015160009362002be69291849190620035f5565b14159392505050565b604080518082019091526000808252602080830182905284518582015185519286015162002c1e93906200372a565b905083602001518162002c3291906200478a565b8451859062002c439083906200478a565b90525060208401525090919050565b604080518082019091526000808252602082015281518351101562002c795750816200021b565b602080830151908401516001911462002ca15750815160208481015190840151829020919020145b801562002cd75782518451859062002cbb9083906200478a565b905250825160208501805162002cd39083906200485c565b9052505b509192915050565b604080518082019091526000808252602082015262002d008383836200386e565b5092915050565b6060600082600001516001600160401b0381111562002d2a5762002d2a62003cd1565b6040519080825280601f01601f19166020018201604052801562002d55576020820181803683370190505b5060208481015185519293509083019162002d0091839162003922565b6060600062002d806200058c565b6040805160ff808252612000820190925291925060009190816020015b606081526020019060019003908162002d9d5790505090506000604051806040016040528060038152602001620dce0f60eb1b81525082828062002de190620042bc565b935060ff168151811062002df95762002df9620041ae565b6020026020010181905250604051806040016040528060078152602001665e312e33322e3360c81b81525060405160200162002e36919062004a09565b60405160208183030381529060405282828062002e5390620042bc565b935060ff168151811062002e6b5762002e6b620041ae565b60200260200101819052506040518060400160405280600881526020016776616c696461746560c01b81525082828062002ea590620042bc565b935060ff168151811062002ebd5762002ebd620041ae565b60200260200101819052508260405160200162002edb9190620041f4565b60405160208183030381529060405282828062002ef890620042bc565b935060ff168151811062002f105762002f10620041ae565b60200260200101819052506040518060400160405280600a8152602001690b4b58dbdb9d1c9858dd60b21b81525082828062002f4c90620042bc565b935060ff168151811062002f645762002f64620041ae565b602090810291909101015262002f7b8784620039ab565b828262002f8881620042bc565b935060ff168151811062002fa05762002fa0620041ae565b602090810291909101015285515115620030455760408051808201909152600b81526a2d2d7265666572656e636560a81b6020820152828262002fe381620042bc565b935060ff168151811062002ffb5762002ffb620041ae565b60209081029190910101528551620030149084620039ab565b82826200302181620042bc565b935060ff1681518110620030395762003039620041ae565b60200260200101819052505b856080015115620030ba5760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b0000000000000000602082015282826200309181620042bc565b935060ff1681518110620030a957620030a9620041ae565b60200260200101819052506200311b565b84156200311b576040805180820190915260128152712d2d726571756972655265666572656e636560701b60208201528282620030f781620042bc565b935060ff16815181106200310f576200310f620041ae565b60200260200101819052505b60408601515115620031b25760408051808201909152600d81526c2d2d756e73616665416c6c6f7760981b602082015282826200315881620042bc565b935060ff1681518110620031705762003170620041ae565b602002602001018190525085604001518282806200318e90620042bc565b935060ff1681518110620031a657620031a6620041ae565b60200260200101819052505b856060015115620032225760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282620031fe81620042bc565b935060ff1681518110620032165762003216620041ae565b60200260200101819052505b60008160ff166001600160401b0381111562003242576200324262003cd1565b6040519080825280602002602001820160405280156200327757816020015b6060815260200190600190039081620032615790505b50905060005b8260ff168160ff161015620032e557838160ff1681518110620032a457620032a4620041ae565b6020026020010151828260ff1681518110620032c457620032c4620041ae565b60200260200101819052508080620032dc90620042bc565b9150506200327d565b50979650505050505050565b6040805180820190915260008082526020820152815183511015620033185750816200021b565b8151835160208501516000929162003330916200485c565b6200333c91906200478a565b602084015190915060019082146200335e575082516020840151819020908220145b80156200337c57835185518690620033789083906200478a565b9052505b50929392505050565b805182516020808501519084015160009384939092620033a79284906200372a565b620033b391906200485c565b90505b83516020850151620033c991906200485c565b811162002d005781620033dc81620049ed565b925050826000015162003418856020015183620033fa91906200478a565b86516200340891906200478a565b855160208701518591906200372a565b6200342491906200485c565b9050620033b6565b606060006200343c848462003385565b620034499060016200485c565b6001600160401b0381111562003463576200346362003cd1565b6040519080825280602002602001820160405280156200349857816020015b6060815260200190600190039081620034825790505b50905060005b8151811015620034ee57620034b862001ec5868662002cdf565b828281518110620034cd57620034cd620041ae565b60200260200101819052508080620034e590620049ed565b9150506200349e565b509392505050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831062003540577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106200356d576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106200358c57662386f26fc10000830492506010015b6305f5e1008310620035a5576305f5e100830492506008015b6127108310620035ba57612710830492506004015b60648310620035cd576064830492506002015b600a83106200021b5760010192915050565b6000620035ed8383620039ef565b159392505050565b600080858411620037205760208411620036c057600084156200364b576001620036218660206200478a565b6200362e90600862004a50565b6200363b90600262004b67565b6200364791906200478a565b1990505b83518116856200365c89896200485c565b6200366891906200478a565b805190935082165b818114620036a8578784116200368d5787945050505050620019ad565b83620036998162004b75565b94505082845116905062003670565b620036b487856200485c565b945050505050620019ad565b838320620036cf85886200478a565b620036db90876200485c565b91505b8582106200371e578482208082036200370857620036fd86846200485c565b9350505050620019ad565b620037156001846200478a565b925050620036de565b505b5092949350505050565b60008381868511620038575760208511620037fc576000851562003781576001620037578760206200478a565b6200376490600862004a50565b6200377190600262004b67565b6200377d91906200478a565b1990505b84518116600087620037948b8b6200485c565b620037a091906200478a565b855190915083165b828114620037ed57818610620037d257620037c48b8b6200485c565b9650505050505050620019ad565b85620037de81620049ed565b965050838651169050620037a8565b859650505050505050620019ad565b508383206000905b6200381086896200478a565b821162003855578583208082036200382f5783945050505050620019ad565b6200383c6001856200485c565b93505081806200384c90620049ed565b92505062003804565b505b6200386387876200485c565b979650505050505050565b60408051808201909152600080825260208083018290528551868201518651928701516200389d93906200372a565b602080870180519186019190915251909150620038bb90826200478a565b835284516020860151620038d091906200485c565b8103620038e1576000855262003919565b83518351620038f191906200485c565b85518690620039029083906200478a565b90525083516200391390826200485c565b60208601525b50909392505050565b602081106200396257815183526200393c6020846200485c565b92506200394b6020836200485c565b91506200395a6020826200478a565b905062003922565b6000198115620039985760016200397b8360206200478a565b620039899061010062004b67565b6200399591906200478a565b90505b9151835183169219169190911790915250565b60606000620039bb84846200062c565b8051602080830151604051939450620039d79390910162004b8f565b60405160208183030381529060405291505092915050565b815181516000919081111562003a03575081515b6020808501519084015160005b8381101562003ad2578251825180821462003a9b57600019602087101562003a785760018462003a428960206200478a565b62003a4e91906200485c565b62003a5b90600862004a50565b62003a6890600262004b67565b62003a7491906200478a565b1990505b818116838216818103911462003a985797506200021b9650505050505050565b50505b62003aa86020866200485c565b945062003ab76020856200485c565b9350505060208162003aca91906200485c565b905062003a10565b508451865162000c44919062004bcf565b610cca80620059c683390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200162003b3662003b3b565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200162003b366040518060800160405280600081526020016000815260200160008152602001600081525090565b60005b8381101562003bca57818101518382015260200162003bb0565b50506000910152565b6000815180845262003bed81602086016020860162003bad565b601f01601f19169290920160200192915050565b6001600160a01b0383168152604060208201819052600090620019ad9083018462003bd3565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835162003c6181601a85016020880162003bad565b6101d160f51b601a91840191820152835162003c8581601c84016020880162003bad565b01601c01949350505050565b6020815260006200029c602083018462003bd3565b60006020828403121562003cb957600080fd5b81516001600160a01b03811681146200029c57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171562003d0c5762003d0c62003cd1565b60405290565b60006001600160401b038084111562003d2f5762003d2f62003cd1565b604051601f8501601f19908116603f0116810190828211818310171562003d5a5762003d5a62003cd1565b8160405280935085815286868601111562003d7457600080fd5b62003d8486602083018762003bad565b5050509392505050565b600082601f83011262003da057600080fd5b6200029c8383516020850162003d12565b60006020828403121562003dc457600080fd5b81516001600160401b0381111562003ddb57600080fd5b620002178482850162003d8e565b6000835162003dfd81846020880162003bad565b83519083019062003e1381836020880162003bad565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835162003e5681601a85016020880162003bad565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835162003e9581603384016020880162003bad565b601160f91b60339290910191820152603401949350505050565b60408152600b60408201526a1193d55391149657d3d55560aa1b60608201526080602082015260006200029c608083018462003bd3565b60006020828403121562003ef957600080fd5b81516001600160401b0381111562003f1057600080fd5b8201601f8101841362003f2257600080fd5b620002178482516020840162003d12565b6000855162003f47818460208a0162003bad565b8083019050602f60f81b808252865162003f69816001850160208b0162003bad565b60019201918201819052855162003f88816002850160208a0162003bad565b6002920191820152835162003fa581600384016020880162003bad565b64173539b7b760d91b600392909101918201526008019695505050505050565b60408152600062003fda604083018462003bd3565b828103602084015260048152630b985cdd60e21b60208201526040810191505092915050565b6000602082840312156200401357600080fd5b815180151581146200029c57600080fd5b7f436f756c64206e6f742066696e642041535420696e20617274696661637420008152600082516200405e81601f85016020870162003bad565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f939091019283015250611b5b60f21b603f820152604101919050565b604081526000620040b2604083018462003bd3565b8281036020840152601181527005cc2e6e85cc2c4e6ded8eae8caa0c2e8d607b1b60208201526040810191505092915050565b604081526000620040fa604083018462003bd3565b8281036020840152600c81526b2e6173742e6c6963656e736560a01b60208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b270000000000000000000000008152600082516200416281601485016020870162003bad565b6b13ae9735b2b1b1b0b5991a9b60a11b6014939091019283015250602001919050565b6040815260006200419a604083018562003bd3565b828103602084015262000298818562003bd3565b634e487b7160e01b600052603260045260246000fd5b6000601160f91b8083528351620041e381600186016020880162003bad565b600193019283015250600201919050565b600082516200420881846020870162003bad565b6a2f6275696c642d696e666f60a81b920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201526a0391031b7b73a3930b1ba160ad1b6040820152600082516200429981604b85016020870162003bad565b91909101604b0192915050565b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff8103620042d557620042d5620042a6565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81526801a595b9d0b58db1a560be1b6020820152600082516200432a81602985016020870162003bad565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f504154480000000000000000000060608201526080602082015260006200029c608083018462003bd3565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015620043d957603f19888603018452620043c685835162003bd3565b94509285019290850190600101620043a7565b5092979650505050505050565b600060208284031215620043f957600080fd5b81516001600160401b03808211156200441157600080fd5b90830190606082860312156200442657600080fd5b6200443062003ce7565b82518060030b81146200444257600080fd5b81526020830151828111156200445757600080fd5b620044658782860162003d8e565b6020830152506040830151828111156200447e57600080fd5b6200448c8782860162003d8e565b60408301525095945050505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e642077697468208152601160f91b602082015260008251620044df81602185016020870162003bad565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e65207769746820707265666978208152602760f81b602082015260008351620046b181602185016020880162003bad565b6c0139034b71037baba383aba1d1609d1b6021918401918201528351620046e081602e84016020880162003bad565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c815268034b230ba34b7b71d160bd1b6020820152600082516200432a81602985016020870162003bad565b7f55706772616465207361666574792076616c69646174696f6e206661696c65648152611d0560f11b6020820152600082516200477d81602285016020870162003bad565b9190910160220192915050565b818103818111156200021b576200021b620042a6565b6d021b7b73a3930b1ba103730b6b2960951b815260008251620047cb81600e85016020870162003bad565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201526730b1ba173539b7b760c11b606e820152607601919050565b808201808211156200021b576200021b620042a6565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351620048ac81601885016020880162003bad565b6301034b7160e51b6018918401918201528351620048d281601c84016020880162003bad565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b60008251620049da81846020870162003bad565b600160fd1b920191825250600101919050565b60006001820162004a025762004a02620042a6565b5060010190565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825162004a4381601c85016020870162003bad565b91909101601c0192915050565b80820281158282048414176200021b576200021b620042a6565b600181815b8085111562004aab57816000190482111562004a8f5762004a8f620042a6565b8085161562004a9d57918102915b93841c939080029062004a6f565b509250929050565b60008262004ac4575060016200021b565b8162004ad3575060006200021b565b816001811462004aec576002811462004af75762004b17565b60019150506200021b565b60ff84111562004b0b5762004b0b620042a6565b50506001821b6200021b565b5060208310610133831016604e8410600b841016171562004b3c575081810a6200021b565b62004b48838362004a6a565b806000190482111562004b5f5762004b5f620042a6565b029392505050565b60006200029c838362004ab3565b60008162004b875762004b87620042a6565b506000190190565b6000835162004ba381846020880162003bad565b601d60f91b908301908152835162004bc381600184016020880162003bad565b01600101949350505050565b818103600083128015838313168383128216171562002d005762002d00620042a6565b610dc48062004c026000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80636133b4bb1161005b5780636133b4bb1461012b57806381100bf01461013e578063c8a023621461015e578063d9caed121461017157600080fd5b8063116191b61461008d57806321fc65f2146100d65780633c2f05a8146100eb5780635b1125911461010b575b600080fd5b6001546100ad9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100e96100e4366004610aff565b610184565b005b6003546100ad9073ffffffffffffffffffffffffffffffffffffffff1681565b6002546100ad9073ffffffffffffffffffffffffffffffffffffffff1681565b6100e9610139366004610b6e565b61030e565b6004546100ad9073ffffffffffffffffffffffffffffffffffffffff1681565b6100e961016c366004610aff565b61052a565b6100e961017f366004610bc8565b61069b565b61018c61078b565b60025473ffffffffffffffffffffffffffffffffffffffff1633146101dd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546102049073ffffffffffffffffffffffffffffffffffffffff8781169116856107ce565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906102629088908890889088908890600401610c4d565b600060405180830381600087803b15801561027c57600080fd5b505af1158015610290573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102f593929190610c98565b60405180910390a36103076001600055565b5050505050565b60035473ffffffffffffffffffffffffffffffffffffffff166340c10f1930610338866005610cbb565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401600060405180830381600087803b1580156103a357600080fd5b505af11580156103b7573d6000803e3d6000fd5b50506003546006546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152600560248201529116925063a9059cbb91506044016020604051808303816000875af1158015610436573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045a9190610cf5565b506003546104819073ffffffffffffffffffffffffffffffffffffffff1685858585610184565b6003546001546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201529116906370a0823190602401602060405180830381865afa1580156104f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105179190610d17565b1561052457610524610d30565b50505050565b61053261078b565b60025473ffffffffffffffffffffffffffffffffffffffff163314610583576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546105aa9073ffffffffffffffffffffffffffffffffffffffff8781169116856107ce565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906106089088908890889088908890600401610c4d565b600060405180830381600087803b15801561062257600080fd5b505af1158015610636573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102f593929190610c98565b6106a361078b565b60025473ffffffffffffffffffffffffffffffffffffffff1633146106f4576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61071573ffffffffffffffffffffffffffffffffffffffff841683836107ce565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8360405161077491815260200190565b60405180910390a36107866001600055565b505050565b6002600054036107c7576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261078691859190600090610867908416836108e0565b9050805160001415801561088c57508080602001905181019061088a9190610cf5565b155b15610786576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606108ee838360006108f7565b90505b92915050565b606081471015610935576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016108d7565b6000808573ffffffffffffffffffffffffffffffffffffffff16848660405161095e9190610d5f565b60006040518083038185875af1925050503d806000811461099b576040519150601f19603f3d011682016040523d82523d6000602084013e6109a0565b606091505b50915091506109b08683836109bc565b925050505b9392505050565b6060826109d1576109cc82610a4b565b6109b5565b81511580156109f5575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610a44576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016108d7565b50806109b5565b805115610a5b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610ab157600080fd5b919050565b60008083601f840112610ac857600080fd5b50813567ffffffffffffffff811115610ae057600080fd5b602083019150836020828501011115610af857600080fd5b9250929050565b600080600080600060808688031215610b1757600080fd5b610b2086610a8d565b9450610b2e60208701610a8d565b935060408601359250606086013567ffffffffffffffff811115610b5157600080fd5b610b5d88828901610ab6565b969995985093965092949392505050565b60008060008060608587031215610b8457600080fd5b610b8d85610a8d565b935060208501359250604085013567ffffffffffffffff811115610bb057600080fd5b610bbc87828801610ab6565b95989497509550505050565b600080600060608486031215610bdd57600080fd5b610be684610a8d565b9250610bf460208501610a8d565b9150604084013590509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015260806060830152610c8d608083018486610c04565b979650505050505050565b838152604060208201526000610cb2604083018486610c04565b95945050505050565b808201808211156108f1577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060208284031215610d0757600080fd5b815180151581146109b557600080fd5b600060208284031215610d2957600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000825160005b81811015610d805760208186018101518583015201610d66565b50600092019182525091905056fea2646970667358221220eb028202b4da53149bed08dab79e88c9d242f872840a2a15ea961a98e5b81d6564736f6c6343000815003360806040523480156200001157600080fd5b5060405162000cca38038062000cca833981016040819052620000349162000123565b818160036200004483826200021c565b5060046200005382826200021c565b5050505050620002e8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008657600080fd5b81516001600160401b0380821115620000a357620000a36200005e565b604051601f8301601f19908116603f01168101908282118183101715620000ce57620000ce6200005e565b81604052838152602092508683858801011115620000eb57600080fd5b600091505b838210156200010f5785820183015181830184015290820190620000f0565b600093810190920192909252949350505050565b600080604083850312156200013757600080fd5b82516001600160401b03808211156200014f57600080fd5b6200015d8683870162000074565b935060208501519150808211156200017457600080fd5b50620001838582860162000074565b9150509250929050565b600181811c90821680620001a257607f821691505b602082108103620001c357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021757600081815260208120601f850160051c81016020861015620001f25750805b601f850160051c820191505b818110156200021357828155600101620001fe565b5050505b505050565b81516001600160401b038111156200023857620002386200005e565b62000250816200024984546200018d565b84620001c9565b602080601f8311600181146200028857600084156200026f5750858301515b600019600386901b1c1916600185901b17855562000213565b600085815260208120601f198616915b82811015620002b95788860151825594840194600190910190840162000298565b5085821015620002d85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6109d280620002f86000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108ba565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dc565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f39061090f565b80601f016020809104026020016040519081016040528092919081815260200182805461021f9061090f565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f39061090f565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610962565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b600060208083528351808285015260005b818110156107ec578581018301518582016040015282016107d0565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b9150604084013590509250925092565b6000602082840312156108cc57600080fd5b6108d58261082b565b9392505050565b600080604083850312156108ef57600080fd5b6108f88361082b565b91506109066020840161082b565b90509250929050565b600181811c9082168061092357607f821691505b60208210810361095c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220556869bd33d6741656e444b7d99e56e0c3a9495b8426ba227d4f4af169660e8264736f6c634300081500330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f7420", + Bin: "0x600480546001600160a01b03191633908117909155600e60809081526d11d85d195dd85e5155934b9cdbdb60921b60a05260e49190915261012361010452604460c090815261012460405260e080516001600160e01b0390811663485cc95560e01b179091526100719291906101f316565b600580546001600160a01b03929092166001600160a01b03199283168117909155600680549092161790553480156100a857600080fd5b5060065460045460016000556001600160a01b0391821691168115806100d557506001600160a01b038116155b156100f35760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b0319918216179091556002805492909316911617905560405161012b9061370b565b60408082526004908201819052631d195cdd60e21b606083015260806020830181905282015263151154d560e21b60a082015260c001604051809103906000f08015801561017d573d6000803e3d6000fd5b50600380546001600160a01b0319166001600160a01b0392831617905560065460405163ae7a3a6f60e01b815230600482015291169063ae7a3a6f90602401600060405180830381600087803b1580156101d657600080fd5b505af11580156101ea573d6000803e3d6000fd5b5050505061478c565b60006101fd613718565b610208848483610212565b9150505b92915050565b60008061021f858461028e565b90506102836040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f7879000000815250828660405160200161026d929190613821565b60408051601f198184030181529190528561029a565b9150505b9392505050565b600061028783836102ce565b60c081015151600090156102c4576102bd84848460c001516102ef60201b60201c565b9050610287565b6102bd8484610468565b60006102da8383610535565b6102878383602001518461029a60201b60201c565b6000806102fa610545565b9050600061030886836105df565b905060006103258260600151836020015185610a0260201b60201c565b9050600061033583838989610bb7565b9050600061034282611833565b602081015181519192509060030b1561039b5789826040015160405160200161036c929190613845565b60408051601f198184030181529082905262461bcd60e51b8252610392916004016138ab565b60405180910390fd5b60006103e46040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a2000000000000000000000008152508360016119ca60201b60201c565b60405163c6ce059d60e01b81529091506000805160206162118339815191529063c6ce059d906104189084906004016138ab565b602060405180830381865afa158015610435573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045991906138be565b9b9a5050505050505050505050565b604051638d1cc92560e01b8152600090819060008051602061621183398151915290638d1cc9259061049e9087906004016138ab565b600060405180830381865afa1580156104bb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104e391908101906139b3565b9050600061051282856040516020016104fd9291906139e7565b60408051601f19818403018152919052611b6a565b90506001600160a01b03811661020857848460405160200161036c929190613a16565b61054182826000611b7d565b5050565b60408051808201825260038152621bdd5d60ea1b602082015290516334515cdb60e21b815260609160008051602061621183398151915291829063d145736c90610593908490600401613aa5565b600060405180830381865afa1580156105b0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105d89190810190613ada565b9250505090565b6106116040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b600060008051602061621183398151915290506106566040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b61065f85611c57565b6020820152600061066f86611eac565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa1580156106b1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106d99190810190613ada565b868385602001516040516020016106f39493929190613b22565b60408051601f19818403018152908290526360f9bb1160e01b825291506000906001600160a01b038616906360f9bb11906107329085906004016138ab565b600060405180830381865afa15801561074f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107779190810190613ada565b604051636da11afb60e11b81529091506001600160a01b0386169063db4235f6906107a6908490600401613bba565b602060405180830381865afa1580156107c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e79190613bf3565b6107fc578160405160200161036c9190613c15565b6040516309389f5960e31b81526001600160a01b038616906349c4fac890610828908490600401613c8c565b600060405180830381865afa158015610845573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261086d9190810190613ada565b8452604051636da11afb60e11b81526001600160a01b0386169063db4235f69061089b908490600401613cd2565b602060405180830381865afa1580156108b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108dc9190613bf3565b15610958576040516309389f5960e31b81526001600160a01b038616906349c4fac89061090d908490600401613cd2565b600060405180830381865afa15801561092a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109529190810190613ada565b60408501525b846001600160a01b03166349c4fac882866000015160405160200161097d9190613d13565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016109a9929190613d6e565b600060405180830381865afa1580156109c6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109ee9190810190613ada565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b6060815260200190600190039081610a1e579050509050604051806040016040528060048152602001630677265760e41b81525081600081518110610a6557610a65613d93565b6020026020010181905250604051806040016040528060038152602001620b5c9b60ea1b81525081600181518110610a9f57610a9f613d93565b602002602001018190525084604051602001610abb9190613da9565b60405160208183030381529060405281600281518110610add57610add613d93565b602002602001018190525082604051602001610af99190613dde565b60405160208183030381529060405281600381518110610b1b57610b1b613d93565b60209081029190910101526000610b3182611833565b9050600081602001519050610b98610b6b60405180604001604052806005815260200164173539b7b760d91b81525061202f60201b60201c565b6040805180820182526000808252602091820152815180830190925284518252808501908201529061205c565b610bad578560405160200161036c9190613e0d565b9695505050505050565b60a08101516040805180820182526000808252602091820152815180830190925282518083529281019101526060906000805160206162118339815191529015610c01565b511590565b610d1d57826020015115610c915760405162461bcd60e51b8152602060048201526058602482015260008051602061623183398151915260448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401610392565b8260c0015115610d1d5760405162461bcd60e51b8152602060048201526053602482015260008051602061623183398151915260448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401610392565b6040805160ff8082526120008201909252600091816020015b6060815260200190600190039081610d365790505090506000604051806040016040528060038152602001620dce0f60eb1b815250828280610d7790613ea2565b935060ff1681518110610d8c57610d8c613d93565b60200260200101819052506040518060400160405280600d81526020016c302e302e312d616c7068612e3760981b815250604051602001610dcd9190613ec1565b604051602081830303815290604052828280610de890613ea2565b935060ff1681518110610dfd57610dfd613d93565b6020026020010181905250604051806040016040528060068152602001656465706c6f7960d01b815250828280610e3390613ea2565b935060ff1681518110610e4857610e48613d93565b60200260200101819052506040518060400160405280600e81526020016d2d2d636f6e74726163744e616d6560901b815250828280610e8690613ea2565b935060ff1681518110610e9b57610e9b613d93565b60200260200101819052508760200151828280610eb790613ea2565b935060ff1681518110610ecc57610ecc613d93565b60200260200101819052506040518060400160405280600e81526020016d05a5ac6dedce8e4c2c6e8a0c2e8d60931b815250828280610f0a90613ea2565b935060ff1681518110610f1f57610f1f613d93565b602090810291909101015287518282610f3781613ea2565b935060ff1681518110610f4c57610f4c613d93565b6020026020010181905250604051806040016040528060098152602001680b4b58da185a5b925960ba1b815250828280610f8590613ea2565b935060ff1681518110610f9a57610f9a613d93565b6020908102919091010152610fae466120bd565b8282610fb981613ea2565b935060ff1681518110610fce57610fce613d93565b60200260200101819052506040518060400160405280600f81526020016e2d2d6275696c64496e666f46696c6560881b81525082828061100d90613ea2565b935060ff168151811061102257611022613d93565b60200260200101819052508682828061103a90613ea2565b935060ff168151811061104f5761104f613d93565b602090810291909101015285511561115d5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f64650000000000000000000000602082015282826110a081613ea2565b935060ff16815181106110b5576110b5613d93565b60209081029190910101526040516371aad10d60e01b81526001600160a01b038416906371aad10d906110ec9089906004016138ab565b600060405180830381865afa158015611109573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111319190810190613ada565b828261113c81613ea2565b935060ff168151811061115157611151613d93565b60200260200101819052505b84602001511561120a576040805180820190915260128152712d2d766572696679536f75726365436f646560701b6020820152828261119b81613ea2565b935060ff16815181106111b0576111b0613d93565b60200260200101819052506040518060400160405280600581526020016466616c736560d81b8152508282806111e590613ea2565b935060ff16815181106111fa576111fa613d93565b6020026020010181905250611371565b611220610bfc8660a0015161202f60201b60201c565b6112a35760408051808201909152600d81526c2d2d6c6963656e73655479706560981b6020820152828261125381613ea2565b935060ff168151811061126857611268613d93565b60200260200101819052508460a001516040516020016112889190613da9565b6040516020818303038152906040528282806111e590613ea2565b8460c001511580156112c857506112c6610bfc896040015161202f60201b60201c565b155b156113715760408051808201909152600d81526c2d2d6c6963656e73655479706560981b602082015282826112fc81613ea2565b935060ff168151811061131157611311613d93565b60209081029190910101526113258861214f565b6040516020016113359190613da9565b60405160208183030381529060405282828061135090613ea2565b935060ff168151811061136557611365613d93565b60200260200101819052505b611387610bfc866040015161202f60201b60201c565b61140a5760408051808201909152600b81526a0b4b5c995b185e595c925960aa1b602082015282826113b881613ea2565b935060ff16815181106113cd576113cd613d93565b602002602001018190525084604001518282806113e990613ea2565b935060ff16815181106113fe576113fe613d93565b60200260200101819052505b6060850151156114fb576040805180820190915260068152650b4b5cd85b1d60d21b6020820152828261143c81613ea2565b935060ff168151811061145157611451613d93565b60209081029190910101526060850151604051631623433d60e31b815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa1580156114a7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526114cf9190810190613ada565b82826114da81613ea2565b935060ff16815181106114ef576114ef613d93565b60200260200101819052505b60e0850151511561158d5760408051808201909152600a8152690b4b59d85cd31a5b5a5d60b21b6020820152828261153281613ea2565b935060ff168151811061154757611547613d93565b602090810291909101015260e085015151611561906120bd565b828261156c81613ea2565b935060ff168151811061158157611581613d93565b60200260200101819052505b60e0850151602001511561162a5760408051808201909152600a8152692d2d676173507269636560b01b602082015282826115c781613ea2565b935060ff16815181106115dc576115dc613d93565b60200260200101819052506115fe8560e00151602001516120bd60201b60201c565b828261160981613ea2565b935060ff168151811061161e5761161e613d93565b60200260200101819052505b60e085015160400151156116cb5760408051808201909152600e81526d2d2d6d617846656550657247617360901b6020820152828261166881613ea2565b935060ff168151811061167d5761167d613d93565b602002602001018190525061169f8560e00151604001516120bd60201b60201c565b82826116aa81613ea2565b935060ff16815181106116bf576116bf613d93565b60200260200101819052505b60e0850151606001511561177b5760408051808201909152601681527f2d2d6d61785072696f72697479466565506572476173000000000000000000006020820152828261171881613ea2565b935060ff168151811061172d5761172d613d93565b602002602001018190525061174f8560e00151606001516120bd60201b60201c565b828261175a81613ea2565b935060ff168151811061176f5761176f613d93565b60200260200101819052505b60008160ff166001600160401b03811115611798576117986138e7565b6040519080825280602002602001820160405280156117cb57816020015b60608152602001906001900390816117b65790505b50905060005b8260ff168160ff16101561182457838160ff16815181106117f4576117f4613d93565b6020026020010151828260ff168151811061181157611811613d93565b60209081029190910101526001016117d1565b5093505050505b949350505050565b61185a6040518060600160405280600060030b815260200160608152602001606081525090565b6040805180820182526004808252630c4c2e6d60e31b602083015291516334515cdb60e21b815260008051602061621183398151915292600091849163d145736c916118a891869101613f18565b600060405180830381865afa1580156118c5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526118ed9190810190613ada565b905060006118fb8683612805565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b815260040161192b9190613f5f565b6000604051808303816000875af115801561194a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119729190810190613fc4565b805190915060030b1580159061198b5750602081015151155b801561199a5750604081015151155b15610bad57816000815181106119b2576119b2613d93565b602002602001015160405160200161036c9190614077565b606060006119ff8560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528651825280870190820152909150611a369082905b9061293f565b15611b33576000611ab382611aad81611aa7611a798a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90612966565b906129c3565b9050611ae7611ae0604051806040016040528060018152602001600560f91b81525061202f60201b60201c565b829061293f565b15611b2157611b1e611b17604051806040016040528060018152602001600560f91b81525061202f60201b60201c565b8290612a48565b90505b611b2a81612a6e565b92505050610287565b8215611b4c57848460405160200161036c929190614247565b5050604080516020810190915260008152610287565b509392505050565b6000808251602084016000f09392505050565b8160a0015115611b8c57505050565b6000611b99848484612ad3565b90506000611ba682611833565b602081015181519192509060030b158015611c195750611c19611bed604051806040016040528060078152602001665355434345535360c81b81525061202f60201b60201c565b604080518082018252600080825260209182015281518083019092528451825280850190820152611a30565b15611c2657505050505050565b60408201515115611c4657816040015160405160200161036c91906142c2565b8060405160200161036c919061430c565b60606000611c8c8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b9050611cc3611cbc604051806040016040528060048152602001630b9cdbdb60e21b81525061202f60201b60201c565b829061205c565b15611d0557610287611d00611cf9604051806040016040528060048152602001630b9cdbdb60e21b81525061202f60201b60201c565b8390612fe6565b612a6e565b611d37611d30604051806040016040528060018152602001601d60f91b81525061202f60201b60201c565b8290613070565b600103611d9f57611d69611b17604051806040016040528060018152602001601d60f91b81525061202f60201b60201c565b50610287611d00611d98604051806040016040528060018152602001601d60f91b81525061202f60201b60201c565b8390612a48565b611dce611cbc60405180604001604052806005815260200164173539b7b760d91b81525061202f60201b60201c565b15611e9b576000611e0682611e01604051806040016040528060018152602001602f60f81b81525061202f60201b60201c565b613105565b905060008160018351611e19919061435c565b81518110611e2957611e29613d93565b60200260200101519050611e92611d00611e6560405180604001604052806005815260200164173539b7b760d91b81525061202f60201b60201c565b60408051808201825260008082526020918201528151808301909252855182528086019082015290612fe6565b95945050505050565b8260405160200161036c919061436f565b60606000611ee18360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b9050611f11611cbc604051806040016040528060048152602001630b9cdbdb60e21b81525061202f60201b60201c565b15611f1f5761028781612a6e565b611f4a611d30604051806040016040528060018152602001601d60f91b81525061202f60201b60201c565b600103611f7f57610287611d00611d98604051806040016040528060018152602001601d60f91b81525061202f60201b60201c565b611fae611cbc60405180604001604052806005815260200164173539b7b760d91b81525061202f60201b60201c565b15611e9b576000611fe182611e01604051806040016040528060018152602001602f60f81b81525061202f60201b60201c565b905060018151111561201d578060028251611ffc919061435c565b8151811061200c5761200c613d93565b602002602001015192505050919050565b508260405160200161036c919061436f565b60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b8051825160009111156120715750600061020c565b8151835160208501516000929161208791614429565b612091919061435c565b9050826020015181036120a857600191505061020c565b82516020840151819020912014905092915050565b606060006120ca836131a9565b60010190506000816001600160401b038111156120e9576120e96138e7565b6040519080825280601f01601f191660200182016040528015612113576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461211d57509392505050565b60606000612166836040015161202f60201b60201c565b90506121a361219c6040518060400160405280600a8152602001691553931250d15394d15160b21b81525061202f60201b60201c565b829061328b565b156121ca5750506040805180820190915260048152634e6f6e6560e01b6020820152919050565b6121fd61219c60405180604001604052806009815260200168556e6c6963656e736560b81b81525061202f60201b60201c565b15612229575050604080518082019091526009815268556e6c6963656e736560b81b6020820152919050565b61225661219c6040518060400160405280600381526020016213525560ea1b81525061202f60201b60201c565b1561227c57505060408051808201909152600381526213525560ea1b6020820152919050565b6122b261219c6040518060400160405280600c81526020016b47504c2d322e302d6f6e6c7960a01b81525061202f60201b60201c565b806122f257506122f261219c6040518060400160405280601081526020016f23a8261699171816b7b916b630ba32b960811b81525061202f60201b60201c565b1561231e57505060408051808201909152600981526823a72a9023a8263b1960b91b6020820152919050565b61235461219c6040518060400160405280600c81526020016b47504c2d332e302d6f6e6c7960a01b81525061202f60201b60201c565b80612394575061239461219c6040518060400160405280601081526020016f23a8261699971816b7b916b630ba32b960811b81525061202f60201b60201c565b156123c0575050604080518082019091526009815268474e552047504c763360b81b6020820152919050565b6123f761219c6040518060400160405280600d81526020016c4c47504c2d322e312d6f6e6c7960981b81525061202f60201b60201c565b80612438575061243861219c604051806040016040528060118152602001702623a8261699171896b7b916b630ba32b960791b81525061202f60201b60201c565b1561246757505060408051808201909152600c81526b474e55204c47504c76322e3160a01b6020820152919050565b61249e61219c6040518060400160405280600d81526020016c4c47504c2d332e302d6f6e6c7960981b81525061202f60201b60201c565b806124df57506124df61219c604051806040016040528060118152602001702623a8261699971816b7b916b630ba32b960791b81525061202f60201b60201c565b1561250c57505060408051808201909152600a815269474e55204c47504c763360b01b6020820152919050565b61254261219c6040518060400160405280600c81526020016b4253442d322d436c6175736560a01b81525061202f60201b60201c565b1561257157505060408051808201909152600c81526b4253442d322d436c6175736560a01b6020820152919050565b6125a761219c6040518060400160405280600c81526020016b4253442d332d436c6175736560a01b81525061202f60201b60201c565b156125d657505060408051808201909152600c81526b4253442d332d436c6175736560a01b6020820152919050565b61260761219c6040518060400160405280600781526020016604d504c2d322e360cc1b81525061202f60201b60201c565b1561263157505060408051808201909152600781526604d504c2d322e360cc1b6020820152919050565b61266261219c6040518060400160405280600781526020016604f534c2d332e360cc1b81525061202f60201b60201c565b1561268c57505060408051808201909152600781526604f534c2d332e360cc1b6020820152919050565b6126c061219c6040518060400160405280600a81526020016904170616368652d322e360b41b81525061202f60201b60201c565b156126ed57505060408051808201909152600a81526904170616368652d322e360b41b6020820152919050565b61272461219c6040518060400160405280600d81526020016c4147504c2d332e302d6f6e6c7960981b81525061202f60201b60201c565b80612765575061276561219c6040518060400160405280601181526020017020a3a8261699971816b7b916b630ba32b960791b81525061202f60201b60201c565b1561279257505060408051808201909152600a815269474e55204147504c763360b01b6020820152919050565b6127c461219c604051806040016040528060088152602001674255534c2d312e3160c01b81525061202f60201b60201c565b156127ee57505060408051808201909152600781526642534c20312e3160c81b6020820152919050565b6040808401518451915161036c929060200161443c565b60608060005b8451811015612890578185828151811061282757612827613d93565b60200260200101516040516020016128409291906139e7565b60405160208183030381529060405291506001855161285f919061435c565b81146128885781604051602001612876919061458c565b60405160208183030381529060405291505b60010161280b565b5060408051600380825260808201909252600091816020015b60608152602001906001900390816128a957905050905083816000815181106128d4576128d4613d93565b6020026020010181905250604051806040016040528060028152602001612d6360f01b8152508160018151811061290d5761290d613d93565b6020026020010181905250818160028151811061292c5761292c613d93565b6020908102919091010152949350505050565b602080830151835183519284015160009361295d929184919061329f565b14159392505050565b604080518082019091526000808252602080830182905284518582015185519286015161299393906133b0565b90508360200151816129a5919061435c565b845185906129b490839061435c565b90525060208401525090919050565b60408051808201909152600080825260208201528151835110156129e857508161020c565b6020808301519084015160019114612a0f5750815160208481015190840151829020919020145b8015612a4057825184518590612a2690839061435c565b9052508251602085018051612a3c908390614429565b9052505b509192915050565b6040805180820190915260008082526020820152612a678383836134d0565b5092915050565b6060600082600001516001600160401b03811115612a8e57612a8e6138e7565b6040519080825280601f01601f191660200182016040528015612ab8576020820181803683370190505b50602084810151855192935090830191612a67918391613576565b60606000612adf610545565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081612afc5790505090506000604051806040016040528060038152602001620dce0f60eb1b815250828280612b3d90613ea2565b935060ff1681518110612b5257612b52613d93565b6020026020010181905250604051806040016040528060078152602001665e312e33322e3360c81b815250604051602001612b8d91906145b1565b604051602081830303815290604052828280612ba890613ea2565b935060ff1681518110612bbd57612bbd613d93565b60200260200101819052506040518060400160405280600881526020016776616c696461746560c01b815250828280612bf590613ea2565b935060ff1681518110612c0a57612c0a613d93565b602002602001018190525082604051602001612c269190613dde565b604051602081830303815290604052828280612c4190613ea2565b935060ff1681518110612c5657612c56613d93565b60200260200101819052506040518060400160405280600a8152602001690b4b58dbdb9d1c9858dd60b21b815250828280612c9090613ea2565b935060ff1681518110612ca557612ca5613d93565b6020908102919091010152612cba87846135f0565b8282612cc581613ea2565b935060ff1681518110612cda57612cda613d93565b602090810291909101015285515115612d725760408051808201909152600b81526a2d2d7265666572656e636560a81b60208201528282612d1a81613ea2565b935060ff1681518110612d2f57612d2f613d93565b60209081029190910101528551612d4690846135f0565b8282612d5181613ea2565b935060ff1681518110612d6657612d66613d93565b60200260200101819052505b856080015115612de05760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282612dbb81613ea2565b935060ff1681518110612dd057612dd0613d93565b6020026020010181905250612e3b565b8415612e3b576040805180820190915260128152712d2d726571756972655265666572656e636560701b60208201528282612e1a81613ea2565b935060ff1681518110612e2f57612e2f613d93565b60200260200101819052505b60408601515115612ec75760408051808201909152600d81526c2d2d756e73616665416c6c6f7760981b60208201528282612e7581613ea2565b935060ff1681518110612e8a57612e8a613d93565b60200260200101819052508560400151828280612ea690613ea2565b935060ff1681518110612ebb57612ebb613d93565b60200260200101819052505b856060015115612f315760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282612f1081613ea2565b935060ff1681518110612f2557612f25613d93565b60200260200101819052505b60008160ff166001600160401b03811115612f4e57612f4e6138e7565b604051908082528060200260200182016040528015612f8157816020015b6060815260200190600190039081612f6c5790505b50905060005b8260ff168160ff161015612fda57838160ff1681518110612faa57612faa613d93565b6020026020010151828260ff1681518110612fc757612fc7613d93565b6020908102919091010152600101612f87565b50979650505050505050565b604080518082019091526000808252602082015281518351101561300b57508161020c565b8151835160208501516000929161302191614429565b61302b919061435c565b6020840151909150600190821461304c575082516020840151819020908220145b80156130675783518551869061306390839061435c565b9052505b50929392505050565b8051825160208085015190840151600093849390926130909284906133b0565b61309a9190614429565b90505b835160208501516130ae9190614429565b8111612a6757816130be816145f6565b92505082600001516130f48560200151836130d9919061435c565b86516130e5919061435c565b855160208701518591906133b0565b6130fe9190614429565b905061309d565b606060006131138484613070565b61311e906001614429565b6001600160401b03811115613135576131356138e7565b60405190808252806020026020018201604052801561316857816020015b60608152602001906001900390816131535790505b50905060005b8151811015611b6257613184611d008686612a48565b82828151811061319657613196613d93565b602090810291909101015260010161316e565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106131f2577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef8100000000831061321e576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061323c57662386f26fc10000830492506010015b6305f5e1008310613254576305f5e100830492506008015b612710831061326857612710830492506004015b6064831061327a576064830492506002015b600a831061020c5760010192915050565b60006132978383613630565b159392505050565b6000808584116133a6576020841161335257600084156132ea5760016132c686602061435c565b6132d190600861460f565b6132dc90600261470d565b6132e6919061435c565b1990505b83518116856132f98989614429565b613303919061435c565b805190935082165b81811461333d57878411613325578794505050505061182b565b8361332f81614719565b94505082845116905061330b565b6133478785614429565b94505050505061182b565b83832061335f858861435c565b6133699087614429565b91505b8582106133a457848220808203613391576133878684614429565b935050505061182b565b61339c60018461435c565b92505061336c565b505b5092949350505050565b600083818685116134bb576020851161346a57600085156133fc5760016133d887602061435c565b6133e390600861460f565b6133ee90600261470d565b6133f8919061435c565b1990505b8451811660008761340d8b8b614429565b613417919061435c565b855190915083165b82811461345c57818610613444576134378b8b614429565b965050505050505061182b565b8561344e816145f6565b96505083865116905061341f565b85965050505050505061182b565b508383206000905b61347c868961435c565b82116134b957858320808203613498578394505050505061182b565b6134a3600185614429565b93505081806134b1906145f6565b925050613472565b505b6134c58787614429565b979650505050505050565b60408051808201909152600080825260208083018290528551868201518651928701516134fd93906133b0565b602080870180519186019190915251909150613519908261435c565b83528451602086015161352c9190614429565b810361353b576000855261356d565b835183516135499190614429565b8551869061355890839061435c565b90525083516135679082614429565b60208601525b50909392505050565b602081106135ae578151835261358d602084614429565b925061359a602083614429565b91506135a760208261435c565b9050613576565b60001981156135dd5760016135c483602061435c565b6135d09061010061470d565b6135da919061435c565b90505b9151835183169219169190911790915250565b606060006135fe84846105df565b805160208083015160405193945061361893909101614730565b60405160208183030381529060405291505092915050565b8151815160009190811115613643575081515b6020808501519084015160005b838110156136fc57825182518082146136cc5760001960208710156136ab5760018461367d89602061435c565b6136879190614429565b61369290600861460f565b61369d90600261470d565b6136a7919061435c565b1990505b81811683821681810391146136c957975061020c9650505050505050565b50505b6136d7602086614429565b94506136e4602085614429565b935050506020816136f59190614429565b9050613650565b5084518651610bad919061476c565b610c9f8061557283390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161375b613760565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200161375b6040518060800160405280600081526020016000815260200160008152602001600081525090565b60005b838110156137ec5781810151838201526020016137d4565b50506000910152565b6000815180845261380d8160208601602086016137d1565b601f01601f19169290920160200192915050565b6001600160a01b038316815260406020820181905260009061182b908301846137f5565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161387d81601a8501602088016137d1565b6101d160f51b601a91840191820152835161389f81601c8401602088016137d1565b01601c01949350505050565b60208152600061028760208301846137f5565b6000602082840312156138d057600080fd5b81516001600160a01b038116811461028757600080fd5b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561391f5761391f6138e7565b60405290565b6000806001600160401b0384111561393f5761393f6138e7565b50604051601f19601f85018116603f011681018181106001600160401b038211171561396d5761396d6138e7565b60405283815290508082840185101561398557600080fd5b611b628460208301856137d1565b600082601f8301126139a457600080fd5b61028783835160208501613925565b6000602082840312156139c557600080fd5b81516001600160401b038111156139db57600080fd5b61020884828501613993565b600083516139f98184602088016137d1565b835190830190613a0d8183602088016137d1565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351613a4e81601a8501602088016137d1565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a918401918201528351613a8b8160338401602088016137d1565b601160f91b60339290910191820152603401949350505050565b60408152600b60408201526a1193d55391149657d3d55560aa1b606082015260806020820152600061028760808301846137f5565b600060208284031215613aec57600080fd5b81516001600160401b03811115613b0257600080fd5b8201601f81018413613b1357600080fd5b61020884825160208401613925565b60008551613b34818460208a016137d1565b602f60f81b9083019081528551613b52816001840160208a016137d1565b602f60f81b600192909101918201528451613b748160028401602089016137d1565b600181830101915050602f60f81b60018201528351613b9a8160028401602088016137d1565b64173539b7b760d91b600292909101918201526007019695505050505050565b604081526000613bcd60408301846137f5565b828103602084015260048152630b985cdd60e21b60208201526040810191505092915050565b600060208284031215613c0557600080fd5b8151801515811461028757600080fd5b7f436f756c64206e6f742066696e642041535420696e2061727469666163742000815260008251613c4d81601f8501602087016137d1565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f939091019283015250611b5b60f21b603f820152604101919050565b604081526000613c9f60408301846137f5565b8281036020840152601181527005cc2e6e85cc2c4e6ded8eae8caa0c2e8d607b1b60208201526040810191505092915050565b604081526000613ce560408301846137f5565b8281036020840152600c81526b2e6173742e6c6963656e736560a01b60208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b27000000000000000000000000815260008251613d4b8160148501602087016137d1565b6b13ae9735b2b1b1b0b5991a9b60a11b6014939091019283015250602001919050565b604081526000613d8160408301856137f5565b828103602084015261028381856137f5565b634e487b7160e01b600052603260045260246000fd5b601160f91b81528151600090613dc68160018501602087016137d1565b601160f91b6001939091019283015250600201919050565b60008251613df08184602087016137d1565b6a2f6275696c642d696e666f60a81b920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201526a0391031b7b73a3930b1ba160ad1b604082015260008251613e7f81604b8501602087016137d1565b91909101604b0192915050565b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff8103613eb857613eb8613e8c565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81526801a595b9d0b58db1a560be1b602082015260008251613f0b8160298501602087016137d1565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f5041544800000000000000000000606082015260806020820152600061028760808301846137f5565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015613fb857603f19878603018452613fa38583516137f5565b94506020938401939190910190600101613f87565b50929695505050505050565b600060208284031215613fd657600080fd5b81516001600160401b03811115613fec57600080fd5b820160608185031215613ffe57600080fd5b6140066138fd565b81518060030b811461401757600080fd5b815260208201516001600160401b0381111561403257600080fd5b61403e86828501613993565b60208301525060408201516001600160401b0381111561405d57600080fd5b61406986828501613993565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e642077697468208152601160f91b6020820152600082516140b98160218501602087016137d1565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e65207769746820707265666978208152602760f81b6020820152600083516142898160218501602088016137d1565b6c0139034b71037baba383aba1d1609d1b60219184019182015283516142b681602e8401602088016137d1565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c815268034b230ba34b7b71d160bd1b602082015260008251613f0b8160298501602087016137d1565b7f55706772616465207361666574792076616c69646174696f6e206661696c65648152611d0560f11b60208201526000825161434f8160228501602087016137d1565b9190910160220192915050565b8181038181111561020c5761020c613e8c565b6d021b7b73a3930b1ba103730b6b2960951b81526000825161439881600e8501602087016137d1565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201526730b1ba173539b7b760c11b606e820152607601919050565b8082018082111561020c5761020c613e8c565b7f53504458206c6963656e7365206964656e7469666965722000000000000000008152600083516144748160188501602088016137d1565b6301034b7160e51b601891840191820152835161449881601c8401602088016137d1565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161459e8184602087016137d1565b600160fd1b920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f726540000000008152600082516145e981601c8501602087016137d1565b91909101601c0192915050565b60006001820161460857614608613e8c565b5060010190565b808202811582820484141761020c5761020c613e8c565b6001815b60018411156146615780850481111561464557614645613e8c565b600184161561465357908102905b60019390931c92800261462a565b935093915050565b6000826146785750600161020c565b816146855750600061020c565b816001811461469b57600281146146a5576146c1565b600191505061020c565b60ff8411156146b6576146b6613e8c565b50506001821b61020c565b5060208310610133831016604e8410600b84101617156146e4575081810a61020c565b6146f16000198484614626565b806000190482111561470557614705613e8c565b029392505050565b60006102878383614669565b60008161472857614728613e8c565b506000190190565b600083516147428184602088016137d1565b601d60f91b90830190815283516147608160018401602088016137d1565b01600101949350505050565b8181036000831280158383131683831282161715612a6757612a67613e8c565b610dd78061479b6000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80636133b4bb1161005b5780636133b4bb1461012b57806381100bf01461013e578063c8a023621461015e578063d9caed121461017157600080fd5b8063116191b61461008d57806321fc65f2146100d65780633c2f05a8146100eb5780635b1125911461010b575b600080fd5b6001546100ad9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100e96100e4366004610aff565b610184565b005b6003546100ad9073ffffffffffffffffffffffffffffffffffffffff1681565b6002546100ad9073ffffffffffffffffffffffffffffffffffffffff1681565b6100e9610139366004610b6e565b61030e565b6004546100ad9073ffffffffffffffffffffffffffffffffffffffff1681565b6100e961016c366004610aff565b61052a565b6100e961017f366004610bc8565b61069b565b61018c61078b565b60025473ffffffffffffffffffffffffffffffffffffffff1633146101dd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546102049073ffffffffffffffffffffffffffffffffffffffff8781169116856107ce565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906102629088908890889088908890600401610c4e565b600060405180830381600087803b15801561027c57600080fd5b505af1158015610290573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102f593929190610cab565b60405180910390a36103076001600055565b5050505050565b60035473ffffffffffffffffffffffffffffffffffffffff166340c10f1930610338866005610cce565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401600060405180830381600087803b1580156103a357600080fd5b505af11580156103b7573d6000803e3d6000fd5b50506003546006546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152600560248201529116925063a9059cbb91506044016020604051808303816000875af1158015610436573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045a9190610d08565b506003546104819073ffffffffffffffffffffffffffffffffffffffff1685858585610184565b6003546001546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201529116906370a0823190602401602060405180830381865afa1580156104f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105179190610d2a565b1561052457610524610d43565b50505050565b61053261078b565b60025473ffffffffffffffffffffffffffffffffffffffff163314610583576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546105aa9073ffffffffffffffffffffffffffffffffffffffff8781169116856107ce565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906106089088908890889088908890600401610c4e565b600060405180830381600087803b15801561062257600080fd5b505af1158015610636573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102f593929190610cab565b6106a361078b565b60025473ffffffffffffffffffffffffffffffffffffffff1633146106f4576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61071573ffffffffffffffffffffffffffffffffffffffff841683836107ce565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8360405161077491815260200190565b60405180910390a36107866001600055565b505050565b6002600054036107c7576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261078691859190600090610867908416836108e0565b9050805160001415801561088c57508080602001905181019061088a9190610d08565b155b15610786576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606108ee838360006108f7565b90505b92915050565b606081471015610935576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016108d7565b6000808573ffffffffffffffffffffffffffffffffffffffff16848660405161095e9190610d72565b60006040518083038185875af1925050503d806000811461099b576040519150601f19603f3d011682016040523d82523d6000602084013e6109a0565b606091505b50915091506109b08683836109bc565b925050505b9392505050565b6060826109d1576109cc82610a4b565b6109b5565b81511580156109f5575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610a44576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016108d7565b50806109b5565b805115610a5b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610ab157600080fd5b919050565b60008083601f840112610ac857600080fd5b50813567ffffffffffffffff811115610ae057600080fd5b602083019150836020828501011115610af857600080fd5b9250929050565b600080600080600060808688031215610b1757600080fd5b610b2086610a8d565b9450610b2e60208701610a8d565b935060408601359250606086013567ffffffffffffffff811115610b5157600080fd5b610b5d88828901610ab6565b969995985093965092949392505050565b60008060008060608587031215610b8457600080fd5b610b8d85610a8d565b935060208501359250604085013567ffffffffffffffff811115610bb057600080fd5b610bbc87828801610ab6565b95989497509550505050565b600080600060608486031215610bdd57600080fd5b610be684610a8d565b9250610bf460208501610a8d565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff85166020820152836040820152608060608201526000610ca0608083018486610c05565b979650505050505050565b838152604060208201526000610cc5604083018486610c05565b95945050505050565b808201808211156108f1577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060208284031215610d1a57600080fd5b815180151581146109b557600080fd5b600060208284031215610d3c57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000825160005b81811015610d935760208186018101518583015201610d79565b50600092019182525091905056fea2646970667358221220b0a7bb2e0e1fca0564f282b7e276b762b03ff9d51eb208ba06692fe22a5d3e1664736f6c634300081a0033608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a00330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f7420", } // ERC20CustodyNewEchidnaTestABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/gatewayevm.sol/gatewayevm.go b/v2/pkg/gatewayevm.sol/gatewayevm.go index 63af4416..8b0ea580 100644 --- a/v2/pkg/gatewayevm.sol/gatewayevm.go +++ b/v2/pkg/gatewayevm.sol/gatewayevm.go @@ -32,7 +32,7 @@ var ( // GatewayEVMMetaData contains all meta data concerning the GatewayEVM contract. var GatewayEVMMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"UPGRADE_INTERFACE_VERSION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"call\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"custody\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"execute\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"executeRevert\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"executeWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_tssAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_zetaToken\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revertWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setConnector\",\"inputs\":[{\"name\":\"_zetaConnector\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setCustody\",\"inputs\":[{\"name\":\"_custody\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"tssAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"zetaConnector\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"zetaToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ERC1967InvalidImplementation\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC1967NonPayable\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OwnableInvalidOwner\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"UUPSUnauthorizedCallContext\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UUPSUnsupportedProxiableUUID\",\"inputs\":[{\"name\":\"slot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125a562000104600039600081816114fb01528181611524015261196a01526125a56000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a6101953660046120e9565b610467565b005b3480156101a857600080fd5b5061019a6101b736600461214d565b610568565b6101cf6101ca36600461214d565b6105ba565b6040516101dc919061220e565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b36600461214d565b61065f565b61019a61023e36600461214d565b610784565b34801561024f57600080fd5b5061019a61025e366004612221565b61091c565b61019a610271366004612283565b610b49565b34801561028257600080fd5b5061019a610291366004612363565b610b68565b3480156102a257600080fd5b506102ab610e6f565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e9e565b34801561031a57600080fd5b5061019a6103293660046123d2565b610eb2565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf3660046120e9565b610f4f565b3480156103e057600080fd5b5061019a6103ef366004612363565b611050565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f3660046120e9565b6111f4565b61019a6104423660046120e9565b611250565b34801561045357600080fd5b5061019a610462366004612424565b611375565b6001546001600160a01b031633146104ab576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b0316156104ee576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661052e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516105ad9291906124a9565b60405180910390a3505050565b6001546060906001600160a01b03163314610601576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061060e858585611420565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161064d939291906124c5565b60405180910390a290505b9392505050565b34600003610699576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106e6576040519150601f19603f3d011682016040523d82523d6000602084013e6106eb565b606091505b509091505080151560000361072c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161077694939291906124df565b60405180910390a350505050565b6001546001600160a01b031633146107c8576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610816576040519150601f19603f3d011682016040523d82523d6000602084013e61081b565b606091505b509150915081610857576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061089e90879087906004016124a9565b600060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161090d939291906124c5565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109675750825b905060008267ffffffffffffffff1660011480156109845750303b155b905081158015610992575080155b156109c9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610a2a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a4757506001600160a01b038616155b15610a7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a87336114c7565b610a8f6114d8565b610a976114e0565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610b405784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b516114f0565b610b5a826115c0565b610b6482826115c8565b5050565b610b706116ec565b6000546001600160a01b03163314801590610b9657506002546001600160a01b03163314155b15610bcd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c07576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c11858561176d565b610c47576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd39190612508565b610d09576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d16858484611420565b9050610d22868661176d565b610d58576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc919061252a565b90508015610dee57610dee87826117fd565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610e35939291906124c5565b60405180910390a35050610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e7961195f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610ea66119c1565b610eb06000611a35565b565b83600003610eec576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef7338486611abe565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610f4094939291906124df565b60405180910390a35050505050565b6001546001600160a01b03163314610f93576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615610fd6576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611016576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6110586116ec565b6000546001600160a01b0316331480159061107e57506002546001600160a01b03163314155b156110b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036110ef576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111036001600160a01b0386168585611c09565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b59061114a90859085906004016124a9565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516111c3939291906124c5565b60405180910390a3610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6111fc6119c1565b6001600160a01b038116611244576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61124d81611a35565b50565b3460000361128a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146112d7576040519150601f19603f3d011682016040523d82523d6000602084013e6112dc565b606091505b509091505080151560000361131d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b816000036113af576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ba338284611abe565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105ad9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b0316348686604051611440929190612543565b60006040518083038185875af1925050503d806000811461147d576040519150601f19603f3d011682016040523d82523d6000602084013e611482565b606091505b5091509150816114be576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b6114cf611c7d565b61124d81611ce4565b610eb0611c7d565b6114e8611c7d565b610eb0611cec565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061158957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661157d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124d6119c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611640575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163d9181019061252a565b60015b611681576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146116dd576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161123b565b6116e78383611cf4565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611767576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190612508565b6003546001600160a01b039081169083160361191f576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a39190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b505050505050565b600054610b64906001600160a01b03848116911683611c09565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336119f37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610eb0576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161123b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611bed57611ae96001600160a01b038316843084611d4a565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b799190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611bd957600080fd5b505af1158015610b40573d6000803e3d6000fd5b6000546116e7906001600160a01b038481169186911684611d4a565b6040516001600160a01b038381166024830152604482018390526116e791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d89565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610eb0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc611c7d565b611939611c7d565b611cfd82611e05565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d42576116e78282611ead565b610b64611f1a565b6040516001600160a01b038481166024830152838116604483015260648201839052611d839186918216906323b872dd90608401611c36565b50505050565b6000611d9e6001600160a01b03841683611f52565b90508051600014158015611dc3575080806020019051810190611dc19190612508565b155b156116e7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161123b565b806001600160a01b03163b600003611e54576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611eca9190612553565b600060405180830381855af49150503d8060008114611f05576040519150601f19603f3d011682016040523d82523d6000602084013e611f0a565b606091505b50915091506114be858383611f60565b3415610eb0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061065883836000611fd5565b606082611f7557611f708261208b565b610658565b8151158015611f8c57506001600160a01b0384163b155b15611fce576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161123b565b5080610658565b606081471015612013576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161123b565b600080856001600160a01b0316848660405161202f9190612553565b60006040518083038185875af1925050503d806000811461206c576040519150601f19603f3d011682016040523d82523d6000602084013e612071565b606091505b5091509150612081868383611f60565b9695505050505050565b80511561209b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b03811681146120e457600080fd5b919050565b6000602082840312156120fb57600080fd5b610658826120cd565b60008083601f84011261211657600080fd5b50813567ffffffffffffffff81111561212e57600080fd5b60208301915083602082850101111561214657600080fd5b9250929050565b60008060006040848603121561216257600080fd5b61216b846120cd565b9250602084013567ffffffffffffffff81111561218757600080fd5b61219386828701612104565b9497909650939450505050565b60005b838110156121bb5781810151838201526020016121a3565b50506000910152565b600081518084526121dc8160208601602086016121a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061065860208301846121c4565b6000806040838503121561223457600080fd5b61223d836120cd565b915061224b602084016120cd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561229657600080fd5b61229f836120cd565b9150602083013567ffffffffffffffff808211156122bc57600080fd5b818501915085601f8301126122d057600080fd5b8135818111156122e2576122e2612254565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561232857612328612254565b8160405282815288602084870101111561234157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060008060006080868803121561237b57600080fd5b612384866120cd565b9450612392602087016120cd565b935060408601359250606086013567ffffffffffffffff8111156123b557600080fd5b6123c188828901612104565b969995985093965092949392505050565b6000806000806000608086880312156123ea57600080fd5b6123f3866120cd565b945060208601359350612408604087016120cd565b9250606086013567ffffffffffffffff8111156123b557600080fd5b60008060006060848603121561243957600080fd5b612442846120cd565b925060208401359150612457604085016120cd565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006124bd602083018486612460565b949350505050565b8381526040602082015260006114be604083018486612460565b8481526001600160a01b0384166020820152606060408201526000612081606083018486612460565b60006020828403121561251a57600080fd5b8151801515811461065857600080fd5b60006020828403121561253c57600080fd5b5051919050565b8183823760009101908152919050565b600082516125658184602087016121a0565b919091019291505056fea2646970667358221220cfb0cd8f88c89af68defecd56673162e00d93537392524753b2d72f45706700c64736f6c63430008150033", + Bin: "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125cc6100fd600039600081816114fb01528181611524015261196a01526125cc6000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a6101953660046120e9565b610467565b005b3480156101a857600080fd5b5061019a6101b736600461214d565b610568565b6101cf6101ca36600461214d565b6105ba565b6040516101dc919061220e565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b36600461214d565b61065f565b61019a61023e36600461214d565b610784565b34801561024f57600080fd5b5061019a61025e366004612221565b61091c565b61019a610271366004612283565b610b49565b34801561028257600080fd5b5061019a61029136600461238a565b610b68565b3480156102a257600080fd5b506102ab610e6f565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e9e565b34801561031a57600080fd5b5061019a6103293660046123f9565b610eb2565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf3660046120e9565b610f4f565b3480156103e057600080fd5b5061019a6103ef36600461238a565b611050565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f3660046120e9565b6111f4565b61019a6104423660046120e9565b611250565b34801561045357600080fd5b5061019a61046236600461244b565b611375565b6001546001600160a01b031633146104ab576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b0316156104ee576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661052e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516105ad9291906124d0565b60405180910390a3505050565b6001546060906001600160a01b03163314610601576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061060e858585611420565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161064d939291906124ec565b60405180910390a290505b9392505050565b34600003610699576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106e6576040519150601f19603f3d011682016040523d82523d6000602084013e6106eb565b606091505b509091505080151560000361072c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a434600087876040516107769493929190612506565b60405180910390a350505050565b6001546001600160a01b031633146107c8576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610816576040519150601f19603f3d011682016040523d82523d6000602084013e61081b565b606091505b509150915081610857576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061089e90879087906004016124d0565b600060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161090d939291906124ec565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109675750825b905060008267ffffffffffffffff1660011480156109845750303b155b905081158015610992575080155b156109c9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610a2a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a4757506001600160a01b038616155b15610a7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a87336114c7565b610a8f6114d8565b610a976114e0565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610b405784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b516114f0565b610b5a826115c0565b610b6482826115c8565b5050565b610b706116ec565b6000546001600160a01b03163314801590610b9657506002546001600160a01b03163314155b15610bcd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c07576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c11858561176d565b610c47576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd3919061252f565b610d09576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d16858484611420565b9050610d22868661176d565b610d58576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc9190612551565b90508015610dee57610dee87826117fd565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610e35939291906124ec565b60405180910390a35050610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e7961195f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610ea66119c1565b610eb06000611a35565b565b83600003610eec576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef7338486611abe565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610f409493929190612506565b60405180910390a35050505050565b6001546001600160a01b03163314610f93576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615610fd6576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611016576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6110586116ec565b6000546001600160a01b0316331480159061107e57506002546001600160a01b03163314155b156110b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036110ef576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111036001600160a01b0386168585611c09565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b59061114a90859085906004016124d0565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516111c3939291906124ec565b60405180910390a3610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6111fc6119c1565b6001600160a01b038116611244576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61124d81611a35565b50565b3460000361128a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146112d7576040519150601f19603f3d011682016040523d82523d6000602084013e6112dc565b606091505b509091505080151560000361131d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b816000036113af576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ba338284611abe565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105ad9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b031634868660405161144092919061256a565b60006040518083038185875af1925050503d806000811461147d576040519150601f19603f3d011682016040523d82523d6000602084013e611482565b606091505b5091509150816114be576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b6114cf611c7d565b61124d81611ce4565b610eb0611c7d565b6114e8611c7d565b610eb0611cec565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061158957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661157d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124d6119c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611640575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163d91810190612551565b60015b611681576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146116dd576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161123b565b6116e78383611cf4565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611767576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610658919061252f565b6003546001600160a01b039081169083160361191f576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a3919061252f565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b505050505050565b600054610b64906001600160a01b03848116911683611c09565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336119f37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610eb0576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161123b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611bed57611ae96001600160a01b038316843084611d4a565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b79919061252f565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611bd957600080fd5b505af1158015610b40573d6000803e3d6000fd5b6000546116e7906001600160a01b038481169186911684611d4a565b6040516001600160a01b038381166024830152604482018390526116e791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d89565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610eb0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc611c7d565b611939611c7d565b611cfd82611e05565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d42576116e78282611ead565b610b64611f1a565b6040516001600160a01b038481166024830152838116604483015260648201839052611d839186918216906323b872dd90608401611c36565b50505050565b6000611d9e6001600160a01b03841683611f52565b90508051600014158015611dc3575080806020019051810190611dc1919061252f565b155b156116e7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161123b565b806001600160a01b03163b600003611e54576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611eca919061257a565b600060405180830381855af49150503d8060008114611f05576040519150601f19603f3d011682016040523d82523d6000602084013e611f0a565b606091505b50915091506114be858383611f60565b3415610eb0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061065883836000611fd5565b606082611f7557611f708261208b565b610658565b8151158015611f8c57506001600160a01b0384163b155b15611fce576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161123b565b5080610658565b606081471015612013576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161123b565b600080856001600160a01b0316848660405161202f919061257a565b60006040518083038185875af1925050503d806000811461206c576040519150601f19603f3d011682016040523d82523d6000602084013e612071565b606091505b5091509150612081868383611f60565b9695505050505050565b80511561209b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b03811681146120e457600080fd5b919050565b6000602082840312156120fb57600080fd5b610658826120cd565b60008083601f84011261211657600080fd5b50813567ffffffffffffffff81111561212e57600080fd5b60208301915083602082850101111561214657600080fd5b9250929050565b60008060006040848603121561216257600080fd5b61216b846120cd565b9250602084013567ffffffffffffffff81111561218757600080fd5b61219386828701612104565b9497909650939450505050565b60005b838110156121bb5781810151838201526020016121a3565b50506000910152565b600081518084526121dc8160208601602086016121a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061065860208301846121c4565b6000806040838503121561223457600080fd5b61223d836120cd565b915061224b602084016120cd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561229657600080fd5b61229f836120cd565b9150602083013567ffffffffffffffff8111156122bb57600080fd5b8301601f810185136122cc57600080fd5b803567ffffffffffffffff8111156122e6576122e6612254565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561235257612352612254565b60405281815282820160200187101561236a57600080fd5b816020840160208301376000602083830101528093505050509250929050565b6000806000806000608086880312156123a257600080fd5b6123ab866120cd565b94506123b9602087016120cd565b935060408601359250606086013567ffffffffffffffff8111156123dc57600080fd5b6123e888828901612104565b969995985093965092949392505050565b60008060008060006080868803121561241157600080fd5b61241a866120cd565b94506020860135935061242f604087016120cd565b9250606086013567ffffffffffffffff8111156123dc57600080fd5b60008060006060848603121561246057600080fd5b612469846120cd565b92506020840135915061247e604085016120cd565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006124e4602083018486612487565b949350505050565b8381526040602082015260006114be604083018486612487565b8481526001600160a01b0384166020820152606060408201526000612081606083018486612487565b60006020828403121561254157600080fd5b8151801515811461065857600080fd5b60006020828403121561256357600080fd5b5051919050565b8183823760009101908152919050565b6000825161258c8184602087016121a0565b919091019291505056fea2646970667358221220e61dbe900f49590d1bcc0dbd88158d680a474b3ee3da9c5f5d8252f09253a6d964736f6c634300081a0033", } // GatewayEVMABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/gatewayevm.t.sol/gatewayevminboundtest.go b/v2/pkg/gatewayevm.t.sol/gatewayevminboundtest.go index b6c78e61..fb1c8309 100644 --- a/v2/pkg/gatewayevm.t.sol/gatewayevminboundtest.go +++ b/v2/pkg/gatewayevm.t.sol/gatewayevminboundtest.go @@ -50,7 +50,7 @@ type StdInvariantFuzzSelector struct { // GatewayEVMInboundTestMetaData contains all meta data concerning the GatewayEVMInboundTest contract. var GatewayEVMInboundTestMetaData = &bind.MetaData{ ABI: "[{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testCallWithPayload\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositERC20ToCustody\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositERC20ToCustodyWithPayload\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositEthToTss\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositEthToTssWithPayload\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testFailDepositERC20ToCustodyIfAmountIs0\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testFailDepositERC20ToCustodyWithPayloadIfAmountIs0\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testFailDepositEthToTssIfAmountIs0\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testFailDepositEthToTssWithPayloadIfAmountIs0\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedERC20\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"destination\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNoParams\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNonPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strs\",\"type\":\"string[]\",\"indexed\":false,\"internalType\":\"string[]\"},{\"name\":\"nums\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"str\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"num\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedRevert\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055620f42406028553480156200003557600080fd5b5061ab6580620000466000396000f3fe60806040523480156200001157600080fd5b5060043610620001a15760003560e01c8063916a17c611620000e9578063ba414fa61162000097578063e20c9f71116200006e578063e20c9f7114620002cb578063f96c02df14620002d5578063fa7626d414620002df57600080fd5b8063ba414fa6146200029c578063bb93f11e14620002b7578063c13d738f14620002c157600080fd5b8063aa030c1c11620000cc578063aa030c1c146200027e578063b0464fdc1462000288578063b5508aa9146200029257600080fd5b8063916a17c6146200025b5780639fd1e597146200027457600080fd5b806330f7c04f11620001535780636459542a116200012a5780636459542a146200021f57806366d9a9a0146200022957806385226c81146200024257600080fd5b806330f7c04f14620002015780633e5e3c23146200020b5780633f7286f4146200021557600080fd5b80630a9254e411620001885780630a9254e414620001bc5780631ed7831c14620001c65780632ade388014620001e857600080fd5b806306978ca314620001a65780630724d8e314620001b2575b600080fd5b620001b0620002ed565b005b620001b06200041e565b620001b0620005dd565b620001d062000d02565b604051620001df919062006d29565b60405180910390f35b620001f262000d66565b604051620001df919062006dcc565b620001b062000eb4565b620001d06200133c565b620001d06200139e565b620001b062001400565b6200023362001814565b604051620001df919062006f2d565b6200024c620019a2565b604051620001df919062006fd6565b6200026562001a7c565b604051620001df91906200705a565b620001b062001b7b565b620001b062001da2565b6200026562001f8f565b6200024c6200208e565b620002a662002168565b6040519015158152602001620001df565b620001b062002240565b620001b0620023e0565b620001d062002596565b620001b0620025f8565b601f54620002a69060ff1681565b6040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f496e73756666696369656e74455448416d6f756e7400000000000000000000006044820152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb390606401600060405180830381600087803b1580156200038457600080fd5b505af115801562000399573d6000803e3d6000fd5b50506020546026546040517ff340fa010000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063f340fa01915083906024016000604051808303818588803b1580156200040157600080fd5b505af115801562000416573d6000803e3d6000fd5b505050505050565b6027546020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039182166084820152620186a092919091163190737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015620004bb57600080fd5b505af1158015620004d0573d6000803e3d6000fd5b505060265460255460408051878152600060208201819052606082840181905282015290516001600160a01b0393841695509290911692507f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4919081900360800190a36020546026546040517ff340fa010000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015291169063f340fa019084906024016000604051808303818588803b1580156200059757600080fd5b505af1158015620005ac573d6000803e3d6000fd5b50506027546001600160a01b0316319250620005d89150620005d1905084846200711a565b82620027a0565b505050565b602580547fffffffffffffffffffffffff0000000000000000000000000000000000000000908116301790915560268054821661123417905560278054909116615678179055604051620006319062006c43565b60408082526004908201527f746573740000000000000000000000000000000000000000000000000000000060608201526080602082018190526003908201527f54544b000000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f080158015620006b7573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055604051620006fe9062006c43565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f08015801562000783573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081178255604080518082018252600e81527f4761746577617945564d2e736f6c000000000000000000000000000000000000602082015260275491519190941692810192909252604482015262000869919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc9550000000000000000000000000000000000000000000000000000000017905262002821565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915560275460405191921690620008ef9062006c51565b6001600160a01b03928316815291166020820152604001604051809103906000f08015801562000923573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392831617905560205460245460275460405192841693918216929116906200097a9062006c5f565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015620009b7573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556027546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b15801562000a6457600080fd5b505af115801562000a79573d6000803e3d6000fd5b50506027546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b15801562000af057600080fd5b505af115801562000b05573d6000803e3d6000fd5b50506020546021546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b15801562000b6c57600080fd5b505af115801562000b81573d6000803e3d6000fd5b50506020546022546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b15801562000be857600080fd5b505af115801562000bfd573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562000c6057600080fd5b505af115801562000c75573d6000803e3d6000fd5b50506023546025546028546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810191909152911692506340c10f199150604401600060405180830381600087803b15801562000ce757600080fd5b505af115801562000cfc573d6000803e3d6000fd5b50505050565b6060601680548060200260200160405190810160405280929190818152602001828054801562000d5c57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000d3d575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101562000eab57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101562000e9357838290600052602060002001805462000dff9062007130565b80601f016020809104026020016040519081016040528092919081815260200182805462000e2d9062007130565b801562000e7e5780601f1062000e525761010080835404028352916020019162000e7e565b820191906000526020600020905b81548152906001019060200180831162000e6057829003601f168201915b50505050508152602001906001019062000ddd565b50505050815250508152602001906001019062000d8a565b50505050905090565b6023546021546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09260009216906370a0823190602401602060405180830381865afa15801562000f21573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f4791906200717f565b905062000f56600082620027a0565b6026546040516001600160a01b03909116602482015260009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae76000000000000000000000000000000000000000000000000000000000179052602354905491517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015260248101879052929350169063095ea7b3906044016020604051808303816000875af11580156200103a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001060919062007199565b506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015620010f057600080fd5b505af115801562001105573d6000803e3d6000fd5b50506026546025546023546040516001600160a01b03938416955091831693507f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4926200115a928992909116908790620071bd565b60405180910390a36020546026546023546040517f8c6f037f0000000000000000000000000000000000000000000000000000000081526001600160a01b0393841693638c6f037f93620011bd93908216928992909116908790600401620071e7565b600060405180830381600087803b158015620011d857600080fd5b505af1158015620011ed573d6000803e3d6000fd5b50506023546021546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156200125a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200128091906200717f565b90506200128e8482620027a0565b6023546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015620012f9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200131f91906200717f565b90506200133585602854620005d191906200721b565b5050505050565b6060601880548060200260200160405190810160405280929190818152602001828054801562000d5c576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000d3d575050505050905090565b6060601780548060200260200160405190810160405280929190818152602001828054801562000d5c576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000d3d575050505050905090565b6023546021546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09260009216906370a0823190602401602060405180830381865afa1580156200146d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200149391906200717f565b9050620014a2600082620027a0565b6023546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526024810185905291169063095ea7b3906044016020604051808303816000875af115801562001511573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001537919062007199565b506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015620015c757600080fd5b505af1158015620015dc573d6000803e3d6000fd5b5050602654602554602354604080518881526001600160a01b039283166020820152606081830181905260009082015290519382169550911692507f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4919081900360800190a36020546026546023546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015260248101869052908216604482015291169063f45346dc90606401600060405180830381600087803b158015620016b757600080fd5b505af1158015620016cc573d6000803e3d6000fd5b50506023546021546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa15801562001739573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200175f91906200717f565b90506200176d8382620027a0565b6023546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015620017d8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620017fe91906200717f565b905062000cfc84602854620005d191906200721b565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101562000eab57838290600052602060002090600202016040518060400160405290816000820180546200186e9062007130565b80601f01602080910402602001604051908101604052809291908181526020018280546200189c9062007130565b8015620018ed5780601f10620018c157610100808354040283529160200191620018ed565b820191906000526020600020905b815481529060010190602001808311620018cf57829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156200198957602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620019355790505b5050505050815250508152602001906001019062001838565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101562000eab578382906000526020600020018054620019e89062007130565b80601f016020809104026020016040519081016040528092919081815260200182805462001a169062007130565b801562001a675780601f1062001a3b5761010080835404028352916020019162001a67565b820191906000526020600020905b81548152906001019060200180831162001a4957829003601f168201915b505050505081526020019060010190620019c6565b6060601d805480602002602001604051908101604052809291908181526020016000905b8282101562000eab5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562001b6257602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162001b0e5790505b5050505050815250508152602001906001019062001aa0565b6027546026546040516001600160a01b039182166024820152620186a09291909116319060009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801562001c8d57600080fd5b505af115801562001ca2573d6000803e3d6000fd5b50506026546025546040516001600160a01b039283169450911691507f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49062001cf29087906000908790620071bd565b60405180910390a36020546026546040517f29c59b5d0000000000000000000000000000000000000000000000000000000081526001600160a01b03928316926329c59b5d92879262001d4e9290911690869060040162007231565b6000604051808303818588803b15801562001d6857600080fd5b505af115801562001d7d573d6000803e3d6000fd5b50506027546001600160a01b031631925062000cfc9150620005d1905085856200711a565b6026546040516001600160a01b03909116602482015260009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801562001ea657600080fd5b505af115801562001ebb573d6000803e3d6000fd5b50506026546025546040516001600160a01b039283169450911691507f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde39062001f0690859062007255565b60405180910390a36020546026546040517f1b8b921d0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831692631b8b921d9262001f5f92911690859060040162007231565b600060405180830381600087803b15801562001f7a57600080fd5b505af115801562001335573d6000803e3d6000fd5b6060601c805480602002602001604051908101604052809291908181526020016000905b8282101562000eab5760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200207557602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620020215790505b5050505050815250508152602001906001019062001fb3565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101562000eab578382906000526020600020018054620020d49062007130565b80601f0160208091040260200160405190810160405280929190818152602001828054620021029062007130565b8015620021535780601f10620021275761010080835404028352916020019162002153565b820191906000526020600020905b8154815290600101906020018083116200213557829003601f168201915b505050505081526020019060010190620020b2565b60085460009060ff161562002181575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa15801562002213573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200223991906200717f565b1415905090565b6026546040516001600160a01b039091166024820152600090819060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae76000000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb390620023389060040160208082526017908201527f496e73756666696369656e744552433230416d6f756e74000000000000000000604082015260600190565b600060405180830381600087803b1580156200235357600080fd5b505af115801562002368573d6000803e3d6000fd5b50506020546026546023546040517f8c6f037f0000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550638c6f037f9450620023c59392831692889216908790600401620071e7565b600060405180830381600087803b1580156200040157600080fd5b6026546040516001600160a01b039091166024820152600090819060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae76000000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb390620024d89060040160208082526015908201527f496e73756666696369656e74455448416d6f756e740000000000000000000000604082015260600190565b600060405180830381600087803b158015620024f357600080fd5b505af115801562002508573d6000803e3d6000fd5b50506020546026546040517f29c59b5d0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506329c59b5d935086926200255e921690869060040162007231565b6000604051808303818588803b1580156200257857600080fd5b505af11580156200258d573d6000803e3d6000fd5b50505050505050565b6060601580548060200260200160405190810160405280929190818152602001828054801562000d5c576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000d3d575050505050905090565b6023546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260006024820181905292919091169063095ea7b3906044016020604051808303816000875af11580156200266c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002692919062007199565b506040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f496e73756666696369656e744552433230416d6f756e740000000000000000006044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb390606401600060405180830381600087803b1580156200272757600080fd5b505af11580156200273c573d6000803e3d6000fd5b50506020546026546023546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810187905290821660448201529116925063f45346dc915060640162001f5f565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b1580156200280c57600080fd5b505afa15801562000416573d6000803e3d6000fd5b60006200282d62006c6d565b6200283a84848362002844565b9150505b92915050565b600080620028538584620028c5565b9050620028ba6040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001620028a492919062007231565b60405160208183030381529060405285620028d3565b9150505b9392505050565b6000620028be838362002907565b60c08101515160009015620028fb57620028f384848460c0015162002926565b9050620028be565b620028f3848462002ae2565b600062002915838362002bd9565b620028be83836020015184620028d3565b6000806200293362002beb565b9050600062002943868362002cc3565b905060006200295c826060015183602001518562003198565b905060006200296e83838989620033c2565b905060006200297d8262004322565b602081015181519192509060030b15620029f557898260400151604051602001620029aa9291906200726a565b60408051601f19818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252620029ec9160040162007255565b60405180910390fd5b600062002a3a6040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a20000000000000000000000081525083600162004506565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d9062002a8f90849060040162007255565b602060405180830381865afa15801562002aad573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002ad39190620072ef565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc9259062002b3990879060040162007255565b600060405180830381865afa15801562002b57573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002b81919081019062007415565b9050600062002bb3828560405160200162002b9e9291906200744e565b60405160208183030381529060405262004714565b90506001600160a01b0381166200283a578484604051602001620029aa92919062007481565b62002be78282600062004727565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c9062002c7490849060040162007530565b600060405180830381865afa15801562002c92573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002cbc919081019062007579565b9250505090565b62002cf66040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d905062002d426040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b62002d4d8562004838565b6020820152600062002d5f8662004c3d565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa15801562002da2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002dcc919081019062007579565b8683856020015160405160200162002de89493929190620075c7565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb119062002e4290859060040162007255565b600060405180830381865afa15801562002e60573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002e8a919081019062007579565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f69062002ed49084906004016200768d565b602060405180830381865afa15801562002ef2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002f18919062007199565b62002f305781604051602001620029aa9190620076e1565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac89062002f7790849060040162007775565b600060405180830381865afa15801562002f95573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002fbf919081019062007579565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f69062003008908490600401620077c9565b602060405180830381865afa15801562003026573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200304c919062007199565b15620030e7576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac89062003099908490600401620077c9565b600060405180830381865afa158015620030b7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620030e1919081019062007579565b60408501525b846001600160a01b03166349c4fac88286600001516040516020016200310e91906200781d565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016200313c9291906200788b565b600060405180830381865afa1580156200315a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003184919081019062007579565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b6060815260200190600190039081620031b45790505090506040518060400160405280600481526020017f677265700000000000000000000000000000000000000000000000000000000081525081600081518110620032185762003218620078b4565b60200260200101819052506040518060400160405280600381526020017f2d726c0000000000000000000000000000000000000000000000000000000000815250816001815181106200326f576200326f620078b4565b6020026020010181905250846040516020016200328d9190620078e3565b60405160208183030381529060405281600281518110620032b257620032b2620078b4565b602002602001018190525082604051602001620032d091906200792f565b60405160208183030381529060405281600381518110620032f557620032f5620078b4565b602002602001018190525060006200330d8262004322565b602080820151604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000008185019081528251808401845260008082529086015282518084019093529051825292810192909252919250620033a0906040805180820182526000808252602091820152815180830190925284518252808501908201529062004ed9565b620033b85785604051602001620029aa919062007972565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d901562003413565b511590565b6200358c57826020015115620034d2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401620029ec565b8260c00151156200358c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401620029ec565b6040805160ff8082526120008201909252600091816020015b6060815260200190600190039081620035a557905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280620036039062007a05565b935060ff16815181106200361b576200361b620078b4565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e37000000000000000000000000000000000000008152506040516020016200366e919062007a27565b6040516020818303038152906040528282806200368b9062007a05565b935060ff1681518110620036a357620036a3620078b4565b60200260200101819052506040518060400160405280600681526020017f6465706c6f790000000000000000000000000000000000000000000000000000815250828280620036f29062007a05565b935060ff16815181106200370a576200370a620078b4565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d65000000000000000000000000000000000000815250828280620037599062007a05565b935060ff1681518110620037715762003771620078b4565b602002602001018190525087602001518282806200378f9062007a05565b935060ff1681518110620037a757620037a7620078b4565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e747261637450617468000000000000000000000000000000000000815250828280620037f69062007a05565b935060ff16815181106200380e576200380e620078b4565b602090810291909101015287518282620038288162007a05565b935060ff1681518110620038405762003840620078b4565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e496400000000000000000000000000000000000000000000008152508282806200388f9062007a05565b935060ff1681518110620038a757620038a7620078b4565b6020026020010181905250620038bd4662004f42565b8282620038ca8162007a05565b935060ff1681518110620038e257620038e2620078b4565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c650000000000000000000000000000000000815250828280620039319062007a05565b935060ff1681518110620039495762003949620078b4565b602002602001018190525086828280620039639062007a05565b935060ff16815181106200397b576200397b620078b4565b602090810291909101015285511562003ab25760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f6465000000000000000000000060208201528282620039cf8162007a05565b935060ff1681518110620039e757620039e7620078b4565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d9062003a3990899060040162007255565b600060405180830381865afa15801562003a57573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003a81919081019062007579565b828262003a8e8162007a05565b935060ff168151811062003aa65762003aa6620078b4565b60200260200101819052505b84602001511562003b8e5760408051808201909152601281527f2d2d766572696679536f75726365436f646500000000000000000000000000006020820152828262003afe8162007a05565b935060ff168151811062003b165762003b16620078b4565b60200260200101819052506040518060400160405280600581526020017f66616c736500000000000000000000000000000000000000000000000000000081525082828062003b659062007a05565b935060ff168151811062003b7d5762003b7d620078b4565b602002602001018190525062003d72565b62003bc86200340e8660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b62003c655760408051808201909152600d81527f2d2d6c6963656e736554797065000000000000000000000000000000000000006020820152828262003c0e8162007a05565b935060ff168151811062003c265762003c26620078b4565b60200260200101819052508460a0015160405160200162003c489190620078e3565b60405160208183030381529060405282828062003b659062007a05565b8460c0015115801562003caa57506040808901518151808301835260008082526020918201528251808401909352815183529081019082015262003ca890511590565b155b1562003d725760408051808201909152600d81527f2d2d6c6963656e736554797065000000000000000000000000000000000000006020820152828262003cf18162007a05565b935060ff168151811062003d095762003d09620078b4565b602002602001018190525062003d1f8862004fe9565b60405160200162003d319190620078e3565b60405160208183030381529060405282828062003d4e9062007a05565b935060ff168151811062003d665762003d66620078b4565b60200260200101819052505b6040808601518151808301835260008082526020918201528251808401909352815183529081019082015262003da790511590565b62003e475760408051808201909152600b81527f2d2d72656c6179657249640000000000000000000000000000000000000000006020820152828262003ded8162007a05565b935060ff168151811062003e055762003e05620078b4565b6020026020010181905250846040015182828062003e239062007a05565b935060ff168151811062003e3b5762003e3b620078b4565b60200260200101819052505b60608501511562003f765760408051808201909152600681527f2d2d73616c7400000000000000000000000000000000000000000000000000006020820152828262003e938162007a05565b935060ff168151811062003eab5762003eab620078b4565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa15801562003f1b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003f45919081019062007579565b828262003f528162007a05565b935060ff168151811062003f6a5762003f6a620078b4565b60200260200101819052505b60e085015151156200402a5760408051808201909152600a81527f2d2d6761734c696d6974000000000000000000000000000000000000000000006020820152828262003fc38162007a05565b935060ff168151811062003fdb5762003fdb620078b4565b602002602001018190525062003ff98560e001516000015162004f42565b8282620040068162007a05565b935060ff16815181106200401e576200401e620078b4565b60200260200101819052505b60e08501516020015115620040e15760408051808201909152600a81527f2d2d676173507269636500000000000000000000000000000000000000000000602082015282826200407a8162007a05565b935060ff1681518110620040925762004092620078b4565b6020026020010181905250620040b08560e001516020015162004f42565b8282620040bd8162007a05565b935060ff1681518110620040d557620040d5620078b4565b60200260200101819052505b60e08501516040015115620041985760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282620041318162007a05565b935060ff1681518110620041495762004149620078b4565b6020026020010181905250620041678560e001516040015162004f42565b8282620041748162007a05565b935060ff16815181106200418c576200418c620078b4565b60200260200101819052505b60e085015160600151156200424f5760408051808201909152601681527f2d2d6d61785072696f726974794665655065724761730000000000000000000060208201528282620041e88162007a05565b935060ff1681518110620042005762004200620078b4565b60200260200101819052506200421e8560e001516060015162004f42565b82826200422b8162007a05565b935060ff1681518110620042435762004243620078b4565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156200427057620042706200731a565b604051908082528060200260200182016040528015620042a557816020015b60608152602001906001900390816200428f5790505b50905060005b8260ff168160ff1610156200431357838160ff1681518110620042d257620042d2620078b4565b6020026020010151828260ff1681518110620042f257620042f2620078b4565b602002602001018190525080806200430a9062007a05565b915050620042ab565b5093505050505b949350505050565b6200434a6040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c91620043d29186910162007a94565b600060405180830381865afa158015620043f0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200441a919081019062007579565b905060006200442a868362005b13565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b81526004016200445c919062006fd6565b6000604051808303816000875af11580156200447c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620044a6919081019062007add565b805190915060030b15801590620044c05750602081015151155b8015620044d05750604081015151155b15620033b85781600081518110620044ec57620044ec620078b4565b6020026020010151604051602001620029aa919062007b93565b606060006200453c8560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528651825280870190820152909150620045759082905b9062005c8a565b15620046e1576000620045f982620045f284620045eb620045bd8a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b9062005cb3565b9062005d1b565b604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506200465f90829062005c8a565b15620046cc57604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620046c9905b829062005da8565b90505b620046d78162005dd0565b92505050620028be565b8215620046fd578484604051602001620029aa92919062007d81565b5050604080516020810190915260008152620028be565b6000808251602084016000f09392505050565b8160a00151156200473757505050565b60006200474684848462005e3f565b90506000620047558262004322565b602081015181519192509060030b158015620047f45750604080518082018252600781527f535543434553530000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620047f4906040805180820182526000808252602091820152815180830190925284518252808501908201526200456e565b156200480257505050505050565b6040820151511562004825578160400151604051602001620029aa919062007e2c565b80604051602001620029aa919062007e8c565b606060006200486e8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150620048d5905b829062004ed9565b156200494957604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620028be906200494390839062006446565b62005dd0565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620049ad905b8290620064da565b60010362004a8057604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015262004a1690620046c1565b50604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620028be9062004943905b839062005da8565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015262004ae190620048cd565b1562004c2457604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529062004b4c90839062006586565b90506000816001835162004b6191906200721b565b8151811062004b745762004b74620078b4565b6020026020010151905062004c1b6200494362004bed6040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925285518252808601908201529062006446565b95945050505050565b82604051602001620029aa919062007ef9565b50919050565b6060600062004c738360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915062004cd790620048cd565b1562004ce857620028be8162005dd0565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015262004d4990620049a5565b60010362004db757604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620028be90620049439062004a78565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015262004e1890620048cd565b1562004c2457604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529062004e8390839062006586565b905060018151111562004ec557806002825162004ea191906200721b565b8151811062004eb45762004eb4620078b4565b602002602001015192505050919050565b5082604051602001620029aa919062007ef9565b80518251600091111562004ef0575060006200283e565b8151835160208501516000929162004f08916200711a565b62004f1491906200721b565b90508260200151810362004f2d5760019150506200283e565b82516020840151819020912014905092915050565b6060600062004f518362006651565b600101905060008167ffffffffffffffff81111562004f745762004f746200731a565b6040519080825280601f01601f19166020018201604052801562004f9f576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508462004fa957509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e534544000000000000000000000000000000000000000000008184019081528551808701875283815284019290925284518086019095525184529083015260609162005077905b82906200673a565b15620050b857505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015262005119906200506f565b156200515a57505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620051bb906200506f565b15620051fc57505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526200525d906200506f565b80620052c55750604080518082018252601081527f47504c2d322e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620052c5906200506f565b156200530657505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015262005367906200506f565b80620053cf5750604080518082018252601081527f47504c2d332e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620053cf906200506f565b156200541057505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015262005471906200506f565b80620054d95750604080518082018252601181527f4c47504c2d322e312d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620054d9906200506f565b156200551a57505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526200557b906200506f565b80620055e35750604080518082018252601181527f4c47504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620055e3906200506f565b156200562457505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015262005685906200506f565b15620056c657505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015262005727906200506f565b156200576857505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620057c9906200506f565b156200580a57505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526200586b906200506f565b15620058ac57505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e3000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526200590d906200506f565b156200594e57505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620059af906200506f565b8062005a175750604080518082018252601181527f4147504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015262005a17906200506f565b1562005a5857505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015262005ab9906200506f565b1562005afa57505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b60408084015184519151620029aa929060200162007fd9565b60608060005b845181101562005bb6578185828151811062005b395762005b39620078b4565b602002602001015160405160200162005b549291906200744e565b60405160208183030381529060405291506001855162005b7591906200721b565b811462005ba1578160405160200162005b8f919062008146565b60405160208183030381529060405291505b8062005bad8162008189565b91505062005b19565b5060408051600380825260808201909252600091816020015b606081526020019060019003908162005bcf579050509050838160008151811062005bfe5762005bfe620078b4565b60200260200101819052506040518060400160405280600281526020017f2d630000000000000000000000000000000000000000000000000000000000008152508160018151811062005c555762005c55620078b4565b6020026020010181905250818160028151811062005c775762005c77620078b4565b6020908102919091010152949350505050565b602080830151835183519284015160009362005caa929184919062006750565b14159392505050565b6040805180820190915260008082526020820152600062005ce7846000015185602001518560000151866020015162006885565b905083602001518162005cfb91906200721b565b8451859062005d0c9083906200721b565b90525060208401525090919050565b604080518082019091526000808252602082015281518351101562005d425750816200283e565b602080830151908401516001911462005d6a5750815160208481015190840151829020919020145b801562005da05782518451859062005d849083906200721b565b905250825160208501805162005d9c9083906200711a565b9052505b509192915050565b604080518082019091526000808252602082015262005dc9838383620069c9565b5092915050565b60606000826000015167ffffffffffffffff81111562005df45762005df46200731a565b6040519080825280601f01601f19166020018201604052801562005e1f576020820181803683370190505b509050600060208201905062005dc9818560200151866000015162006a82565b6060600062005e4d62002beb565b6040805160ff808252612000820190925291925060009190816020015b606081526020019060019003908162005e6a57905050905060006040518060400160405280600381526020017f6e7078000000000000000000000000000000000000000000000000000000000081525082828062005ec89062007a05565b935060ff168151811062005ee05762005ee0620078b4565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e330000000000000000000000000000000000000000000000000081525060405160200162005f339190620081a6565b60405160208183030381529060405282828062005f509062007a05565b935060ff168151811062005f685762005f68620078b4565b60200260200101819052506040518060400160405280600881526020017f76616c696461746500000000000000000000000000000000000000000000000081525082828062005fb79062007a05565b935060ff168151811062005fcf5762005fcf620078b4565b60200260200101819052508260405160200162005fed91906200792f565b6040516020818303038152906040528282806200600a9062007a05565b935060ff1681518110620060225762006022620078b4565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280620060719062007a05565b935060ff1681518110620060895762006089620078b4565b6020026020010181905250620060a0878462006b0b565b8282620060ad8162007a05565b935060ff1681518110620060c557620060c5620078b4565b6020908102919091010152855151156200617e5760408051808201909152600b81527f2d2d7265666572656e6365000000000000000000000000000000000000000000602082015282826200611a8162007a05565b935060ff1681518110620061325762006132620078b4565b60200260200101819052506200614d86600001518462006b0b565b82826200615a8162007a05565b935060ff1681518110620061725762006172620078b4565b60200260200101819052505b856080015115620061f35760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282620061ca8162007a05565b935060ff1681518110620061e257620061e2620078b4565b60200260200101819052506200625f565b84156200625f5760408051808201909152601281527f2d2d726571756972655265666572656e63650000000000000000000000000000602082015282826200623b8162007a05565b935060ff1681518110620062535762006253620078b4565b60200260200101819052505b60408601515115620063065760408051808201909152600d81527f2d2d756e73616665416c6c6f770000000000000000000000000000000000000060208201528282620062ac8162007a05565b935060ff1681518110620062c457620062c4620078b4565b60200260200101819052508560400151828280620062e29062007a05565b935060ff1681518110620062fa57620062fa620078b4565b60200260200101819052505b856060015115620063765760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282620063528162007a05565b935060ff16815181106200636a576200636a620078b4565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156200639757620063976200731a565b604051908082528060200260200182016040528015620063cc57816020015b6060815260200190600190039081620063b65790505b50905060005b8260ff168160ff1610156200643a57838160ff1681518110620063f957620063f9620078b4565b6020026020010151828260ff1681518110620064195762006419620078b4565b60200260200101819052508080620064319062007a05565b915050620063d2565b50979650505050505050565b60408051808201909152600080825260208201528151835110156200646d5750816200283e565b8151835160208501516000929162006485916200711a565b6200649191906200721b565b60208401519091506001908214620064b3575082516020840151819020908220145b8015620064d157835185518690620064cd9083906200721b565b9052505b50929392505050565b600080826000015162006500856000015186602001518660000151876020015162006885565b6200650c91906200711a565b90505b835160208501516200652291906200711a565b811162005dc95781620065358162008189565b9250508260000151620065728560200151836200655391906200721b565b86516200656191906200721b565b838660000151876020015162006885565b6200657e91906200711a565b90506200650f565b60606000620065968484620064da565b620065a39060016200711a565b67ffffffffffffffff811115620065be57620065be6200731a565b604051908082528060200260200182016040528015620065f357816020015b6060815260200190600190039081620065dd5790505b50905060005b815181101562006649576200661362004943868662005da8565b828281518110620066285762006628620078b4565b60200260200101819052508080620066409062008189565b915050620065f9565b509392505050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106200669b577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310620066c8576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310620066e757662386f26fc10000830492506010015b6305f5e100831062006700576305f5e100830492506008015b61271083106200671557612710830492506004015b6064831062006728576064830492506002015b600a83106200283e5760010192915050565b600062006748838362006b4f565b159392505050565b6000808584116200687b57602084116200681b5760008415620067a65760016200677c8660206200721b565b62006789906008620081ed565b6200679690600262008304565b620067a291906200721b565b1990505b8351811685620067b789896200711a565b620067c391906200721b565b805190935082165b8181146200680357878411620067e857879450505050506200431a565b83620067f48162008312565b945050828451169050620067cb565b6200680f87856200711a565b9450505050506200431a565b8383206200682a85886200721b565b6200683690876200711a565b91505b858210620068795784822080820362006863576200685886846200711a565b93505050506200431a565b620068706001846200721b565b92505062006839565b505b5092949350505050565b60008381868511620069b25760208511620069575760008515620068dc576001620068b28760206200721b565b620068bf906008620081ed565b620068cc90600262008304565b620068d891906200721b565b1990505b84518116600087620068ef8b8b6200711a565b620068fb91906200721b565b855190915083165b82811462006948578186106200692d576200691f8b8b6200711a565b96505050505050506200431a565b85620069398162008189565b96505083865116905062006903565b8596505050505050506200431a565b508383206000905b6200696b86896200721b565b8211620069b0578583208082036200698a57839450505050506200431a565b620069976001856200711a565b9350508180620069a79062008189565b9250506200695f565b505b620069be87876200711a565b979650505050505050565b60408051808201909152600080825260208201526000620069fd856000015186602001518660000151876020015162006885565b60208087018051918601919091525190915062006a1b90826200721b565b83528451602086015162006a3091906200711a565b810362006a41576000855262006a79565b8351835162006a5191906200711a565b8551869062006a629083906200721b565b905250835162006a7390826200711a565b60208601525b50909392505050565b6020811062006ac2578151835262006a9c6020846200711a565b925062006aab6020836200711a565b915062006aba6020826200721b565b905062006a82565b600019811562006af857600162006adb8360206200721b565b62006ae99061010062008304565b62006af591906200721b565b90505b9151835183169219169190911790915250565b6060600062006b1b848462002cc3565b805160208083015160405193945062006b37939091016200832c565b60405160208183030381529060405291505092915050565b815181516000919081111562006b63575081515b6020808501519084015160005b8381101562006c32578251825180821462006bfb57600019602087101562006bd85760018462006ba28960206200721b565b62006bae91906200711a565b62006bbb906008620081ed565b62006bc890600262008304565b62006bd491906200721b565b1990505b818116838216818103911462006bf85797506200283e9650505050505050565b50505b62006c086020866200711a565b945062006c176020856200711a565b9350505060208162006c2a91906200711a565b905062006b70565b5084518651620033b8919062008388565b610cca80620083ac83390190565b610b35806200907683390190565b610f858062009bab83390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200162006cb262006cb7565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200162006cb26040518060800160405280600081526020016000815260200160008152602001600081525090565b6020808252825182820181905260009190848201906040850190845b8181101562006d6c5783516001600160a01b03168352928401929184019160010162006d45565b50909695505050505050565b60005b8381101562006d9557818101518382015260200162006d7b565b50506000910152565b6000815180845262006db881602086016020860162006d78565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b8581101562006ebe577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b8181101562006ea7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089850301835262006e9484865162006d9e565b948e01949350918d019160010162006e57565b505050978a01979450509188019160010162006df3565b50919a9950505050505050505050565b600081518084526020808501945080840160005b8381101562006f225781517fffffffff00000000000000000000000000000000000000000000000000000000168752958201959082019060010162006ee2565b509495945050505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101562006fc8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08984030185528151805187855262006f998886018262006d9e565b91890151858303868b015291905062006fb3818362006ece565b96890196945050509086019060010162006f54565b509098975050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156200704d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526200703a85835162006d9e565b9450928501929085019060010162006ffd565b5092979650505050505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101562006fc8578883037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0018552815180516001600160a01b03168452870151878401879052620070d78785018262006ece565b958801959350509086019060010162007081565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156200283e576200283e620070eb565b600181811c908216806200714557607f821691505b60208210810362004c37577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000602082840312156200719257600080fd5b5051919050565b600060208284031215620071ac57600080fd5b81518015158114620028be57600080fd5b8381526001600160a01b038316602082015260606040820152600062004c1b606083018462006d9e565b60006001600160a01b03808716835285602084015280851660408401525060806060830152620033b8608083018462006d9e565b818103818111156200283e576200283e620070eb565b6001600160a01b03831681526040602082015260006200431a604083018462006d9e565b602081526000620028be602083018462006d9e565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351620072a481601a85016020880162006d78565b7f3a20000000000000000000000000000000000000000000000000000000000000601a918401918201528351620072e381601c84016020880162006d78565b01601c01949350505050565b6000602082840312156200730257600080fd5b81516001600160a01b0381168114620028be57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156200736f576200736f6200731a565b60405290565b600067ffffffffffffffff808411156200739357620073936200731a565b604051601f8501601f19908116603f01168101908282118183101715620073be57620073be6200731a565b81604052809350858152868686011115620073d857600080fd5b620073e886602083018762006d78565b5050509392505050565b600082601f8301126200740457600080fd5b620028be8383516020850162007375565b6000602082840312156200742857600080fd5b815167ffffffffffffffff8111156200744057600080fd5b6200283a84828501620073f2565b600083516200746281846020880162006d78565b8351908301906200747881836020880162006d78565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351620074bb81601a85016020880162006d78565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a918401918201528351620074fa81603384016020880162006d78565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f55540000000000000000000000000000000000000000006060820152608060208201526000620028be608083018462006d9e565b6000602082840312156200758c57600080fd5b815167ffffffffffffffff811115620075a457600080fd5b8201601f81018413620075b657600080fd5b6200283a8482516020840162007375565b60008551620075db818460208a0162006d78565b80830190507f2f00000000000000000000000000000000000000000000000000000000000000808252865162007619816001850160208b0162006d78565b60019201918201819052855162007638816002850160208a0162006d78565b600292019182015283516200765581600384016020880162006d78565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600392909101918201526008019695505050505050565b604081526000620076a2604083018462006d9e565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e20617274696661637420008152600082516200771b81601f85016020870162006d78565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b6040815260006200778a604083018462006d9e565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b604081526000620077de604083018462006d9e565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b270000000000000000000000008152600082516200785781601485016020870162006d78565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b604081526000620078a0604083018562006d9e565b8281036020840152620028ba818562006d9e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007f220000000000000000000000000000000000000000000000000000000000000080835283516200791e81600186016020880162006d78565b600193019283015250600201919050565b600082516200794381846020870162006d78565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e747261637420000000000000000000000000000000000000000000604082015260008251620079f881604b85016020870162006d78565b91909101604b0192915050565b600060ff821660ff810362007a1e5762007a1e620070eb565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825162007a8781602985016020870162006d78565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f50415448000000000000000000006060820152608060208201526000620028be608083018462006d9e565b60006020828403121562007af057600080fd5b815167ffffffffffffffff8082111562007b0957600080fd5b908301906060828603121562007b1e57600080fd5b62007b2862007349565b82518060030b811462007b3a57600080fd5b815260208301518281111562007b4f57600080fd5b62007b5d87828601620073f2565b60208301525060408301518281111562007b7657600080fd5b62007b8487828601620073f2565b60408301525095945050505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825162007bf381602185016020870162006d78565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f270000000000000000000000000000000000000000000000000000000000000060208201526000835162007de181602185016020880162006d78565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835162007e2081602e84016020880162006d78565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825162007a8781602985016020870162006d78565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a00000000000000000000000000000000000000000000000000000000000060208201526000825162007eec81602285016020870162006d78565b9190910160220192915050565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825162007f3381600e85016020870162006d78565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e7469666965722000000000000000008152600083516200801381601885016020880162006d78565b7f20696e200000000000000000000000000000000000000000000000000000000060189184019182015283516200805281601c84016020880162006d78565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b600082516200815a81846020870162006d78565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b600060001982036200819f576200819f620070eb565b5060010190565b7f406f70656e7a657070656c696e2f75706772616465732d636f72654000000000815260008251620081e081601c85016020870162006d78565b91909101601c0192915050565b80820281158282048414176200283e576200283e620070eb565b600181815b80851115620082485781600019048211156200822c576200822c620070eb565b808516156200823a57918102915b93841c93908002906200820c565b509250929050565b60008262008261575060016200283e565b8162008270575060006200283e565b81600181146200828957600281146200829457620082b4565b60019150506200283e565b60ff841115620082a857620082a8620070eb565b50506001821b6200283e565b5060208310610133831016604e8410600b8410161715620082d9575081810a6200283e565b620082e5838362008207565b8060001904821115620082fc57620082fc620070eb565b029392505050565b6000620028be838362008250565b600081620083245762008324620070eb565b506000190190565b600083516200834081846020880162006d78565b7f3a0000000000000000000000000000000000000000000000000000000000000090830190815283516200837c81600184016020880162006d78565b01600101949350505050565b818103600083128015838313168383128216171562005dc95762005dc9620070eb56fe60806040523480156200001157600080fd5b5060405162000cca38038062000cca833981016040819052620000349162000123565b818160036200004483826200021c565b5060046200005382826200021c565b5050505050620002e8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008657600080fd5b81516001600160401b0380821115620000a357620000a36200005e565b604051601f8301601f19908116603f01168101908282118183101715620000ce57620000ce6200005e565b81604052838152602092508683858801011115620000eb57600080fd5b600091505b838210156200010f5785820183015181830184015290820190620000f0565b600093810190920192909252949350505050565b600080604083850312156200013757600080fd5b82516001600160401b03808211156200014f57600080fd5b6200015d8683870162000074565b935060208501519150808211156200017457600080fd5b50620001838582860162000074565b9150509250929050565b600181811c90821680620001a257607f821691505b602082108103620001c357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021757600081815260208120601f850160051c81016020861015620001f25750805b601f850160051c820191505b818110156200021357828155600101620001fe565b5050505b505050565b81516001600160401b038111156200023857620002386200005e565b62000250816200024984546200018d565b84620001c9565b602080601f8311600181146200028857600084156200026f5750858301515b600019600386901b1c1916600185901b17855562000213565b600085815260208120601f198616915b82811015620002b95788860151825594840194600190910190840162000298565b5085821015620002d85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6109d280620002f86000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108ba565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dc565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f39061090f565b80601f016020809104026020016040519081016040528092919081815260200182805461021f9061090f565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f39061090f565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610962565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b600060208083528351808285015260005b818110156107ec578581018301518582016040015282016107d0565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b9150604084013590509250925092565b6000602082840312156108cc57600080fd5b6108d58261082b565b9392505050565b600080604083850312156108ef57600080fd5b6108f88361082b565b91506109066020840161082b565b90509250929050565b600181811c9082168061092357607f821691505b60208210810361095c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220556869bd33d6741656e444b7d99e56e0c3a9495b8426ba227d4f4af169660e8264736f6c63430008150033608060405234801561001057600080fd5b50604051610b35380380610b3583398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a37806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bd565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610942565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102819392919061098d565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610942565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102819392919061098d565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109b0565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109d2565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff8082111561087557600080fd5b818801915088601f83011261088957600080fd5b81358181111561089857600080fd5b8960208285010111156108aa57600080fd5b9699959850939650602001949392505050565b6000806000606084860312156108d257600080fd5b6108db846107f9565b92506108e9602085016107f9565b9150604084013590509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109826080830184866108f9565b979650505050505050565b8381526040602082015260006109a76040830184866108f9565b95945050505050565b6000602082840312156109c257600080fd5b8151801515811461065e57600080fd5b6000825160005b818110156109f357602081860181015185830152016109d9565b50600092019182525091905056fea2646970667358221220add5c975d5cd9c8b4afe35ea370aed6f4c4571bcc8cfe91b243cc9add705e36664736f6c6343000815003360c060405260001960025534801561001657600080fd5b50604051610f85380380610f85833981016040819052610035916100d8565b60016000558282826001600160a01b038316158061005a57506001600160a01b038216155b8061006c57506001600160a01b038116155b1561008a5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b031916919092161790555061011b915050565b80516001600160a01b03811681146100d357600080fd5b919050565b6000806000606084860312156100ed57600080fd5b6100f6846100bc565b9250610104602085016100bc565b9150610112604085016100bc565b90509250925092565b60805160a051610deb61019a6000396000818161012601528181610216015281816103580152818161041e01528181610541015281816106630152818161077c015281816108be015281816109840152610af101526000818160d501528181610322015281816103ef0152818161088801526109550152610deb6000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80635b112591116100765780636f8b44b01161005b5780636f8b44b01461017b578063743e0c9b1461018e578063d5abeb01146101a157600080fd5b80635b112591146101485780635e3e9fef1461016857600080fd5b806302d5c899146100a8578063106e6290146100bd578063116191b6146100d057806321e093b114610121575b600080fd5b6100bb6100b6366004610bca565b6101b8565b005b6100bb6100cb366004610c59565b6104e3565b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b6001546100f79073ffffffffffffffffffffffffffffffffffffffff1681565b6100bb610176366004610bca565b61071e565b6100bb610189366004610c8c565b610a30565b6100bb61019c366004610c8c565b610abc565b6101aa60025481565b604051908152602001610118565b6101c0610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610211576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561027f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a39190610ca5565b6102ad9086610cbe565b11156102e5576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561039c57600080fd5b505af11580156103b0573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd4915061044e907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d47565b600060405180830381600087803b15801561046857600080fd5b505af115801561047c573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516104ca93929190610d92565b60405180910390a26104dc6001600055565b5050505050565b6104eb610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff16331461053c576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ce9190610ca5565b6105d89084610cbe565b1115610610576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156106a757600080fd5b505af11580156106bb573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161070791815260200190565b60405180910390a26107196001600055565b505050565b610726610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610777576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108099190610ca5565b6108139086610cbe565b111561084b576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561090257600080fd5b505af1158015610916573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506109b4907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d47565b600060405180830381600087803b1580156109ce57600080fd5b505af11580156109e2573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516104ca93929190610d92565b60015473ffffffffffffffffffffffffffffffffffffffff163314610a81576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a150565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610b4a57600080fd5b505af11580156104dc573d6000803e3d6000fd5b600260005403610b9a576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff81168114610bc557600080fd5b919050565b600080600080600060808688031215610be257600080fd5b610beb86610ba1565b945060208601359350604086013567ffffffffffffffff80821115610c0f57600080fd5b818801915088601f830112610c2357600080fd5b813581811115610c3257600080fd5b896020828501011115610c4457600080fd5b96999598505060200195606001359392505050565b600080600060608486031215610c6e57600080fd5b610c7784610ba1565b95602085013595506040909401359392505050565b600060208284031215610c9e57600080fd5b5035919050565b600060208284031215610cb757600080fd5b5051919050565b80820180821115610cf8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015260806060830152610d87608083018486610cfe565b979650505050505050565b838152604060208201526000610dac604083018486610cfe565b9594505050505056fea2646970667358221220c1247105cac785b4e05127d6e13cb72f7443d98af6ef964c579e161b48ffece664736f6c63430008150033a2646970667358221220a02922097a2220a9ba04b1ed36e582e7d5e37c462da063acbc8fb3651def270c64736f6c63430008150033", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055620f4240602855348015603357600080fd5b5061a674806100436000396000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c8063916a17c6116100d8578063ba414fa61161008c578063e20c9f7111610066578063e20c9f711461027b578063f96c02df14610283578063fa7626d41461028b57600080fd5b8063ba414fa614610253578063bb93f11e1461026b578063c13d738f1461027357600080fd5b8063aa030c1c116100bd578063aa030c1c1461023b578063b0464fdc14610243578063b5508aa91461024b57600080fd5b8063916a17c61461021e5780639fd1e5971461023357600080fd5b806330f7c04f1161013a5780636459542a116101145780636459542a146101ec57806366d9a9a0146101f457806385226c811461020957600080fd5b806330f7c04f146101d45780633e5e3c23146101dc5780633f7286f4146101e457600080fd5b80630a9254e41161016b5780630a9254e4146101995780631ed7831c146101a15780632ade3880146101bf57600080fd5b806306978ca3146101875780630724d8e314610191575b600080fd5b61018f610298565b005b61018f6103c5565b61018f61057c565b6101a9610c87565b6040516101b6919061687e565b60405180910390f35b6101c7610ce9565b6040516101b6919061691a565b61018f610e2b565b6101a9611298565b6101a96112f8565b61018f611358565b6101fc611755565b6040516101b69190616a80565b6102116118d7565b6040516101b69190616b1e565b6102266119a7565b6040516101b69190616b95565b61018f611aa2565b61018f611cbe565b610226611ea3565b610211611f9e565b61025b61206e565b60405190151581526020016101b6565b61018f612142565b61018f6122dc565b6101a961248b565b61018f6124eb565b601f5461025b9060ff1681565b6040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f496e73756666696369656e74455448416d6f756e7400000000000000000000006044820152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb390606401600060405180830381600087803b15801561032e57600080fd5b505af1158015610342573d6000803e3d6000fd5b50506020546026546040517ff340fa010000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063f340fa01915083906024016000604051808303818588803b1580156103a957600080fd5b505af11580156103bd573d6000803e3d6000fd5b505050505050565b6027546020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039182166084820152620186a092919091163190737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561046157600080fd5b505af1158015610475573d6000803e3d6000fd5b505060265460255460408051878152600060208201819052606082840181905282015290516001600160a01b0393841695509290911692507f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4919081900360800190a36020546026546040517ff340fa010000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015291169063f340fa019084906024016000604051808303818588803b15801561053b57600080fd5b505af115801561054f573d6000803e3d6000fd5b50506027546001600160a01b0316319250610577915061057190508484616c5b565b8261268d565b505050565b602580547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602680548216611234179055602780549091166156781790556040516105ce9061679e565b60408082526004908201527f746573740000000000000000000000000000000000000000000000000000000060608201526080602082018190526003908201527f54544b000000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f080158015610653573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516106989061679e565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f08015801561071c573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081178255604080518082018252600e81527f4761746577617945564d2e736f6c0000000000000000000000000000000000006020820152602754915191909416928101929092526044820152610800919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc9550000000000000000000000000000000000000000000000000000000017905261270c565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915560275460405191921690610884906167ab565b6001600160a01b03928316815291166020820152604001604051809103906000f0801580156108b7573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055602054602454602754604051928416939182169291169061090c906167b8565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610948573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556027546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b1580156109f457600080fd5b505af1158015610a08573d6000803e3d6000fd5b50506027546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015610a7e57600080fd5b505af1158015610a92573d6000803e3d6000fd5b50506020546021546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b158015610af857600080fd5b505af1158015610b0c573d6000803e3d6000fd5b50506020546022546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b158015610b7257600080fd5b505af1158015610b86573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610be857600080fd5b505af1158015610bfc573d6000803e3d6000fd5b50506023546025546028546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810191909152911692506340c10f199150604401600060405180830381600087803b158015610c6d57600080fd5b505af1158015610c81573d6000803e3d6000fd5b50505050565b60606016805480602002602001604051908101604052809291908181526020018280548015610cdf57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610cc1575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015610e2257600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610e0b578382906000526020600020018054610d7e90616c6e565b80601f0160208091040260200160405190810160405280929190818152602001828054610daa90616c6e565b8015610df75780601f10610dcc57610100808354040283529160200191610df7565b820191906000526020600020905b815481529060010190602001808311610dda57829003601f168201915b505050505081526020019060010190610d5f565b505050508152505081526020019060010190610d0d565b50505050905090565b6023546021546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09260009216906370a0823190602401602060405180830381865afa158015610e97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ebb9190616cbb565b9050610ec860008261268d565b6026546040516001600160a01b03909116602482015260009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae76000000000000000000000000000000000000000000000000000000000179052602354905491517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015260248101879052929350169063095ea7b3906044016020604051808303816000875af1158015610fab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fcf9190616cd4565b506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561105e57600080fd5b505af1158015611072573d6000803e3d6000fd5b50506026546025546023546040516001600160a01b03938416955091831693507f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4926110c5928992909116908790616cf6565b60405180910390a36020546026546023546040517f8c6f037f0000000000000000000000000000000000000000000000000000000081526001600160a01b0393841693638c6f037f9361112693908216928992909116908790600401616d1e565b600060405180830381600087803b15801561114057600080fd5b505af1158015611154573d6000803e3d6000fd5b50506023546021546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156111c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111e49190616cbb565b90506111f0848261268d565b6023546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa15801561125a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127e9190616cbb565b9050611291856028546105719190616d55565b5050505050565b60606018805480602002602001604051908101604052809291908181526020018280548015610cdf576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610cc1575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610cdf576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610cc1575050505050905090565b6023546021546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a09260009216906370a0823190602401602060405180830381865afa1580156113c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e89190616cbb565b90506113f560008261268d565b6023546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526024810185905291169063095ea7b3906044016020604051808303816000875af1158015611463573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114879190616cd4565b506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561151657600080fd5b505af115801561152a573d6000803e3d6000fd5b5050602654602554602354604080518881526001600160a01b039283166020820152606081830181905260009082015290519382169550911692507f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4919081900360800190a36020546026546023546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015260248101869052908216604482015291169063f45346dc90606401600060405180830381600087803b15801561160457600080fd5b505af1158015611618573d6000803e3d6000fd5b50506023546021546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611684573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a89190616cbb565b90506116b4838261268d565b6023546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa15801561171e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117429190616cbb565b9050610c81846028546105719190616d55565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015610e2257838290600052602060002090600202016040518060400160405290816000820180546117ac90616c6e565b80601f01602080910402602001604051908101604052809291908181526020018280546117d890616c6e565b80156118255780601f106117fa57610100808354040283529160200191611825565b820191906000526020600020905b81548152906001019060200180831161180857829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156118bf57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161186c5790505b50505050508152505081526020019060010190611779565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015610e2257838290600052602060002001805461191a90616c6e565b80601f016020809104026020016040519081016040528092919081815260200182805461194690616c6e565b80156119935780601f1061196857610100808354040283529160200191611993565b820191906000526020600020905b81548152906001019060200180831161197657829003601f168201915b5050505050815260200190600101906118fb565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015610e225760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015611a8a57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611a375790505b505050505081525050815260200190600101906119cb565b6027546026546040516001600160a01b039182166024820152620186a09291909116319060009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611bb357600080fd5b505af1158015611bc7573d6000803e3d6000fd5b50506026546025546040516001600160a01b039283169450911691507f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a490611c159087906000908790616cf6565b60405180910390a36020546026546040517f29c59b5d0000000000000000000000000000000000000000000000000000000081526001600160a01b03928316926329c59b5d928792611c6f92909116908690600401616d68565b6000604051808303818588803b158015611c8857600080fd5b505af1158015611c9c573d6000803e3d6000fd5b50506027546001600160a01b0316319250610c81915061057190508585616c5b565b6026546040516001600160a01b03909116602482015260009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611dc157600080fd5b505af1158015611dd5573d6000803e3d6000fd5b50506026546025546040516001600160a01b039283169450911691507f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde390611e1e908590616d8a565b60405180910390a36020546026546040517f1b8b921d0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831692631b8b921d92611e75929116908590600401616d68565b600060405180830381600087803b158015611e8f57600080fd5b505af1158015611291573d6000803e3d6000fd5b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015610e225760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015611f8657602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611f335790505b50505050508152505081526020019060010190611ec7565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015610e22578382906000526020600020018054611fe190616c6e565b80601f016020809104026020016040519081016040528092919081815260200182805461200d90616c6e565b801561205a5780601f1061202f5761010080835404028352916020019161205a565b820191906000526020600020905b81548152906001019060200180831161203d57829003601f168201915b505050505081526020019060010190611fc2565b60085460009060ff1615612086575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015612117573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061213b9190616cbb565b1415905090565b6026546040516001600160a01b039091166024820152600090819060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae76000000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb3906122399060040160208082526017908201527f496e73756666696369656e744552433230416d6f756e74000000000000000000604082015260600190565b600060405180830381600087803b15801561225357600080fd5b505af1158015612267573d6000803e3d6000fd5b50506020546026546023546040517f8c6f037f0000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550638c6f037f94506122c29392831692889216908790600401616d1e565b600060405180830381600087803b1580156103a957600080fd5b6026546040516001600160a01b039091166024820152600090819060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae76000000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb3906123d39060040160208082526015908201527f496e73756666696369656e74455448416d6f756e740000000000000000000000604082015260600190565b600060405180830381600087803b1580156123ed57600080fd5b505af1158015612401573d6000803e3d6000fd5b50506020546026546040517f29c59b5d0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506329c59b5d935086926124559216908690600401616d68565b6000604051808303818588803b15801561246e57600080fd5b505af1158015612482573d6000803e3d6000fd5b50505050505050565b60606015805480602002602001604051908101604052809291908181526020018280548015610cdf576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610cc1575050505050905090565b6023546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260006024820181905292919091169063095ea7b3906044016020604051808303816000875af115801561255e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125829190616cd4565b506040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f496e73756666696369656e744552433230416d6f756e740000000000000000006044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb390606401600060405180830381600087803b15801561261657600080fd5b505af115801561262a573d6000803e3d6000fd5b50506020546026546023546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810187905290821660448201529116925063f45346dc9150606401611e75565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b1580156126f857600080fd5b505afa1580156103bd573d6000803e3d6000fd5b60006127166167c5565b61272184848361272b565b9150505b92915050565b60008061273885846127a6565b905061279b6040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001612786929190616d68565b604051602081830303815290604052856127b2565b9150505b9392505050565b600061279f83836127e0565b60c081015151600090156127d6576127cf84848460c001516127fb565b905061279f565b6127cf84846129a1565b60006127ec8383612a8c565b61279f838360200151846127b2565b600080612806612a9c565b905060006128148683612b6f565b9050600061282b8260600151836020015185613015565b9050600061283b83838989613227565b90506000612848826140a4565b602081015181519192509060030b156128bb57898260400151604051602001612872929190616d9d565b60408051601f19818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526128b291600401616d8a565b60405180910390fd5b60006128fe6040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001614273565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d90612951908490600401616d8a565b602060405180830381865afa15801561296e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129929190616e1e565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc925906129f6908790600401616d8a565b600060405180830381865afa158015612a13573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612a3b9190810190616f2f565b90506000612a698285604051602001612a55929190616f64565b604051602081830303815290604052614473565b90506001600160a01b038116612721578484604051602001612872929190616f93565b612a9882826000614486565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90612b2390849060040161703e565b600060405180830381865afa158015612b40573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612b689190810190617085565b9250505090565b612ba16040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050612bec6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b612bf585614589565b60208201526000612c058661496e565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015612c47573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612c6f9190810190617085565b86838560200151604051602001612c8994939291906170ce565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190612ce1908590600401616d8a565b600060405180830381865afa158015612cfe573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612d269190810190617085565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690612d6e9084906004016171d2565b602060405180830381865afa158015612d8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612daf9190616cd4565b612dc457816040516020016128729190617224565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890612e099084906004016172b6565b600060405180830381865afa158015612e26573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612e4e9190810190617085565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690612e95908490600401617308565b602060405180830381865afa158015612eb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ed69190616cd4565b15612f6b576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890612f20908490600401617308565b600060405180830381865afa158015612f3d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612f659190810190617085565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001612f90919061735a565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401612fbc9291906173c6565b600060405180830381865afa158015612fd9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526130019190810190617085565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816130315790505090506040518060400160405280600481526020017f677265700000000000000000000000000000000000000000000000000000000081525081600081518110613091576130916173eb565b60200260200101819052506040518060400160405280600381526020017f2d726c0000000000000000000000000000000000000000000000000000000000815250816001815181106130e5576130e56173eb565b602002602001018190525084604051602001613101919061741a565b60405160208183030381529060405281600281518110613123576131236173eb565b60200260200101819052508260405160200161313f9190617486565b60405160208183030381529060405281600381518110613161576131616173eb565b60200260200101819052506000613177826140a4565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506132089060408051808201825260008082526020918201528151808301909252845182528085019082015290614bf1565b61321d578560405160200161287291906174c7565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015613277565b511590565b6133eb57826020015115613333576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a4016128b2565b8260c00151156133eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a4016128b2565b6040805160ff8082526120008201909252600091816020015b606081526020019060019003908161340457905050905060006040518060400160405280600381526020017f6e7078000000000000000000000000000000000000000000000000000000000081525082828061345f90617558565b935060ff1681518110613474576134746173eb565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e37000000000000000000000000000000000000008152506040516020016134c59190617577565b6040516020818303038152906040528282806134e090617558565b935060ff16815181106134f5576134f56173eb565b60200260200101819052506040518060400160405280600681526020017f6465706c6f79000000000000000000000000000000000000000000000000000081525082828061354290617558565b935060ff1681518110613557576135576173eb565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d650000000000000000000000000000000000008152508282806135a490617558565b935060ff16815181106135b9576135b96173eb565b602002602001018190525087602001518282806135d590617558565b935060ff16815181106135ea576135ea6173eb565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163745061746800000000000000000000000000000000000081525082828061363790617558565b935060ff168151811061364c5761364c6173eb565b60209081029190910101528751828261366481617558565b935060ff1681518110613679576136796173eb565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e496400000000000000000000000000000000000000000000008152508282806136c690617558565b935060ff16815181106136db576136db6173eb565b60200260200101819052506136ef46614c52565b82826136fa81617558565b935060ff168151811061370f5761370f6173eb565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c65000000000000000000000000000000000081525082828061375c90617558565b935060ff1681518110613771576137716173eb565b60200260200101819052508682828061378990617558565b935060ff168151811061379e5761379e6173eb565b60209081029190910101528551156138c55760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f64650000000000000000000000602082015282826137ef81617558565b935060ff1681518110613804576138046173eb565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d90613854908990600401616d8a565b600060405180830381865afa158015613871573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526138999190810190617085565b82826138a481617558565b935060ff16815181106138b9576138b96173eb565b60200260200101819052505b8460200151156139955760408051808201909152601281527f2d2d766572696679536f75726365436f646500000000000000000000000000006020820152828261390e81617558565b935060ff1681518110613923576139236173eb565b60200260200101819052506040518060400160405280600581526020017f66616c736500000000000000000000000000000000000000000000000000000081525082828061397090617558565b935060ff1681518110613985576139856173eb565b6020026020010181905250613b5c565b6139cd6132728660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b613a605760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282613a1081617558565b935060ff1681518110613a2557613a256173eb565b60200260200101819052508460a00151604051602001613a45919061741a565b60405160208183030381529060405282828061397090617558565b8460c00151158015613aa3575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152613aa190511590565b155b15613b5c5760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282613ae781617558565b935060ff1681518110613afc57613afc6173eb565b6020026020010181905250613b1088614cf2565b604051602001613b20919061741a565b604051602081830303815290604052828280613b3b90617558565b935060ff1681518110613b5057613b506173eb565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152613b9090511590565b613c255760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282613bd381617558565b935060ff1681518110613be857613be86173eb565b60200260200101819052508460400151828280613c0490617558565b935060ff1681518110613c1957613c196173eb565b60200260200101819052505b606085015115613d465760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282613c6e81617558565b935060ff1681518110613c8357613c836173eb565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015613cf2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613d1a9190810190617085565b8282613d2581617558565b935060ff1681518110613d3a57613d3a6173eb565b60200260200101819052505b60e08501515115613ded5760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282613d9081617558565b935060ff1681518110613da557613da56173eb565b6020026020010181905250613dc18560e0015160000151614c52565b8282613dcc81617558565b935060ff1681518110613de157613de16173eb565b60200260200101819052505b60e08501516020015115613e975760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282613e3a81617558565b935060ff1681518110613e4f57613e4f6173eb565b6020026020010181905250613e6b8560e0015160200151614c52565b8282613e7681617558565b935060ff1681518110613e8b57613e8b6173eb565b60200260200101819052505b60e08501516040015115613f415760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282613ee481617558565b935060ff1681518110613ef957613ef96173eb565b6020026020010181905250613f158560e0015160400151614c52565b8282613f2081617558565b935060ff1681518110613f3557613f356173eb565b60200260200101819052505b60e08501516060015115613feb5760408051808201909152601681527f2d2d6d61785072696f726974794665655065724761730000000000000000000060208201528282613f8e81617558565b935060ff1681518110613fa357613fa36173eb565b6020026020010181905250613fbf8560e0015160600151614c52565b8282613fca81617558565b935060ff1681518110613fdf57613fdf6173eb565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561400957614009616e47565b60405190808252806020026020018201604052801561403c57816020015b60608152602001906001900390816140275790505b50905060005b8260ff168160ff16101561409557838160ff1681518110614065576140656173eb565b6020026020010151828260ff1681518110614082576140826173eb565b6020908102919091010152600101614042565b5093505050505b949350505050565b6140cb6040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c91614151918691016175e2565b600060405180830381865afa15801561416e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526141969190810190617085565b905060006141a486836157e1565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b81526004016141d49190616b1e565b6000604051808303816000875af11580156141f3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261421b9190810190617629565b805190915060030b158015906142345750602081015151155b80156142435750604081015151155b1561321d578160008151811061425b5761425b6173eb565b602002602001015160405160200161287291906176df565b606060006142a88560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506142df9082905b90615936565b1561443c57600061435c82614356846143506143228a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b9061595d565b906159bf565b604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506143c0908290615936565b1561442a57604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614427905b8290615a44565b90505b61443381615a6a565b9250505061279f565b82156144555784846040516020016128729291906178cb565b505060408051602081019091526000815261279f565b509392505050565b6000808251602084016000f09392505050565b8160a001511561449557505050565b60006144a2848484615ad3565b905060006144af826140a4565b602081015181519192509060030b15801561454b5750604080518082018252600781527f53554343455353000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261454b906040805180820182526000808252602091820152815180830190925284518252808501908201526142d9565b1561455857505050505050565b604082015151156145785781604001516040516020016128729190617972565b8060405160200161287291906179d0565b606060006145be8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150614623905b8290614bf1565b1561469257604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261279f9061468d90839061606e565b615a6a565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526146f4905b82906160f8565b6001036147c157604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261475a90614420565b50604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261279f9061468d905b8390615a44565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526148209061461c565b1561495757604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290614888908390616192565b90506000816001835161489b9190616d55565b815181106148ab576148ab6173eb565b6020026020010151905061494e61468d6149216040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925285518252808601908201529061606e565b95945050505050565b826040516020016128729190617a3b565b50919050565b606060006149a38360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150614a059061461c565b15614a135761279f81615a6a565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614a72906146ed565b600103614adc57604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261279f9061468d906147ba565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614b3b9061461c565b1561495757604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290614ba3908390616192565b9050600181511115614bdf578060028251614bbe9190616d55565b81518110614bce57614bce6173eb565b602002602001015192505050919050565b50826040516020016128729190617a3b565b805182516000911115614c0657506000612725565b81518351602085015160009291614c1c91616c5b565b614c269190616d55565b905082602001518103614c3d576001915050612725565b82516020840151819020912014905092915050565b60606000614c5f83616237565b600101905060008167ffffffffffffffff811115614c7f57614c7f616e47565b6040519080825280601f01601f191660200182016040528015614ca9576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084614cb357509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091614d7e905b8290616319565b15614dbe57505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614e1d90614d77565b15614e5d57505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614ebc90614d77565b15614efc57505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614f5b90614d77565b80614fc05750604080518082018252601081527f47504c2d322e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614fc090614d77565b1561500057505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261505f90614d77565b806150c45750604080518082018252601081527f47504c2d332e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526150c490614d77565b1561510457505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261516390614d77565b806151c85750604080518082018252601181527f4c47504c2d322e312d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526151c890614d77565b1561520857505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261526790614d77565b806152cc5750604080518082018252601181527f4c47504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526152cc90614d77565b1561530c57505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261536b90614d77565b156153ab57505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261540a90614d77565b1561544a57505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526154a990614d77565b156154e957505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261554890614d77565b1561558857505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e3000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526155e790614d77565b1561562757505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261568690614d77565b806156eb5750604080518082018252601181527f4147504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526156eb90614d77565b1561572b57505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261578a90614d77565b156157ca57505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b604080840151845191516128729290602001617b19565b60608060005b845181101561586c5781858281518110615803576158036173eb565b602002602001015160405160200161581c929190616f64565b60405160208183030381529060405291506001855161583b9190616d55565b811461586457816040516020016158529190617c82565b60405160208183030381529060405291505b6001016157e7565b5060408051600380825260808201909252600091816020015b606081526020019060019003908161588557905050905083816000815181106158b0576158b06173eb565b60200260200101819052506040518060400160405280600281526020017f2d6300000000000000000000000000000000000000000000000000000000000081525081600181518110615904576159046173eb565b60200260200101819052508181600281518110615923576159236173eb565b6020908102919091010152949350505050565b6020808301518351835192840151600093615954929184919061632d565b14159392505050565b6040805180820190915260008082526020820152600061598f846000015185602001518560000151866020015161643e565b90508360200151816159a19190616d55565b845185906159b0908390616d55565b90525060208401525090919050565b60408051808201909152600080825260208201528151835110156159e4575081612725565b6020808301519084015160019114615a0b5750815160208481015190840151829020919020145b8015615a3c57825184518590615a22908390616d55565b9052508251602085018051615a38908390616c5b565b9052505b509192915050565b6040805180820190915260008082526020820152615a6383838361655e565b5092915050565b60606000826000015167ffffffffffffffff811115615a8b57615a8b616e47565b6040519080825280601f01601f191660200182016040528015615ab5576020820181803683370190505b5090506000602082019050615a638185602001518660000151616609565b60606000615adf612a9c565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081615afc57905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280615b5790617558565b935060ff1681518110615b6c57615b6c6173eb565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001615bbd9190617cc3565b604051602081830303815290604052828280615bd890617558565b935060ff1681518110615bed57615bed6173eb565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280615c3a90617558565b935060ff1681518110615c4f57615c4f6173eb565b602002602001018190525082604051602001615c6b9190617486565b604051602081830303815290604052828280615c8690617558565b935060ff1681518110615c9b57615c9b6173eb565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280615ce890617558565b935060ff1681518110615cfd57615cfd6173eb565b6020026020010181905250615d128784616683565b8282615d1d81617558565b935060ff1681518110615d3257615d326173eb565b602090810291909101015285515115615dde5760408051808201909152600b81527f2d2d7265666572656e636500000000000000000000000000000000000000000060208201528282615d8481617558565b935060ff1681518110615d9957615d996173eb565b6020026020010181905250615db2866000015184616683565b8282615dbd81617558565b935060ff1681518110615dd257615dd26173eb565b60200260200101819052505b856080015115615e4c5760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282615e2781617558565b935060ff1681518110615e3c57615e3c6173eb565b6020026020010181905250615eb2565b8415615eb25760408051808201909152601281527f2d2d726571756972655265666572656e6365000000000000000000000000000060208201528282615e9181617558565b935060ff1681518110615ea657615ea66173eb565b60200260200101819052505b60408601515115615f4e5760408051808201909152600d81527f2d2d756e73616665416c6c6f770000000000000000000000000000000000000060208201528282615efc81617558565b935060ff1681518110615f1157615f116173eb565b60200260200101819052508560400151828280615f2d90617558565b935060ff1681518110615f4257615f426173eb565b60200260200101819052505b856060015115615fb85760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282615f9781617558565b935060ff1681518110615fac57615fac6173eb565b60200260200101819052505b60008160ff1667ffffffffffffffff811115615fd657615fd6616e47565b60405190808252806020026020018201604052801561600957816020015b6060815260200190600190039081615ff45790505b50905060005b8260ff168160ff16101561606257838160ff1681518110616032576160326173eb565b6020026020010151828260ff168151811061604f5761604f6173eb565b602090810291909101015260010161600f565b50979650505050505050565b6040805180820190915260008082526020820152815183511015616093575081612725565b815183516020850151600092916160a991616c5b565b6160b39190616d55565b602084015190915060019082146160d4575082516020840151819020908220145b80156160ef578351855186906160eb908390616d55565b9052505b50929392505050565b600080826000015161611c856000015186602001518660000151876020015161643e565b6161269190616c5b565b90505b8351602085015161613a9190616c5b565b8111615a63578161614a81617d08565b92505082600001516161818560200151836161659190616d55565b86516161719190616d55565b838660000151876020015161643e565b61618b9190616c5b565b9050616129565b606060006161a084846160f8565b6161ab906001616c5b565b67ffffffffffffffff8111156161c3576161c3616e47565b6040519080825280602002602001820160405280156161f657816020015b60608152602001906001900390816161e15790505b50905060005b815181101561446b5761621261468d8686615a44565b828281518110616224576162246173eb565b60209081029190910101526001016161fc565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310616280577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106162ac576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106162ca57662386f26fc10000830492506010015b6305f5e10083106162e2576305f5e100830492506008015b61271083106162f657612710830492506004015b60648310616308576064830492506002015b600a83106127255760010192915050565b600061632583836166c3565b159392505050565b60008085841161643457602084116163e05760008415616378576001616354866020616d55565b61635f906008617d22565b61636a906002617e20565b6163749190616d55565b1990505b83518116856163878989616c5b565b6163919190616d55565b805190935082165b8181146163cb578784116163b3578794505050505061409c565b836163bd81617e2c565b945050828451169050616399565b6163d58785616c5b565b94505050505061409c565b8383206163ed8588616d55565b6163f79087616c5b565b91505b8582106164325784822080820361641f576164158684616c5b565b935050505061409c565b61642a600184616d55565b9250506163fa565b505b5092949350505050565b6000838186851161654957602085116164f8576000851561648a576001616466876020616d55565b616471906008617d22565b61647c906002617e20565b6164869190616d55565b1990505b8451811660008761649b8b8b616c5b565b6164a59190616d55565b855190915083165b8281146164ea578186106164d2576164c58b8b616c5b565b965050505050505061409c565b856164dc81617d08565b9650508386511690506164ad565b85965050505050505061409c565b508383206000905b61650a8689616d55565b821161654757858320808203616526578394505050505061409c565b616531600185616c5b565b935050818061653f90617d08565b925050616500565b505b6165538787616c5b565b979650505050505050565b60408051808201909152600080825260208201526000616590856000015186602001518660000151876020015161643e565b6020808701805191860191909152519091506165ac9082616d55565b8352845160208601516165bf9190616c5b565b81036165ce5760008552616600565b835183516165dc9190616c5b565b855186906165eb908390616d55565b90525083516165fa9082616c5b565b60208601525b50909392505050565b602081106166415781518352616620602084616c5b565b925061662d602083616c5b565b915061663a602082616d55565b9050616609565b6000198115616670576001616657836020616d55565b61666390610100617e20565b61666d9190616d55565b90505b9151835183169219169190911790915250565b606060006166918484612b6f565b80516020808301516040519394506166ab93909101617e43565b60405160208183030381529060405291505092915050565b81518151600091908111156166d6575081515b6020808501519084015160005b8381101561678f578251825180821461675f57600019602087101561673e57600184616710896020616d55565b61671a9190616c5b565b616725906008617d22565b616730906002617e20565b61673a9190616d55565b1990505b818116838216818103911461675c5797506127259650505050505050565b50505b61676a602086616c5b565b9450616777602085616c5b565b935050506020816167889190616c5b565b90506166e3565b508451865161321d9190617e9b565b610c9f80617ebc83390190565b610b4a80618b5b83390190565b610f9a806196a583390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161680861680d565b905290565b604051806101000160405280600015158152602001600015158152602001606081526020016000801916815260200160608152602001606081526020016000151581526020016168086040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b818110156168bf5783516001600160a01b0316835260209384019390920191600101616898565b509095945050505050565b60005b838110156168e55781810151838201526020016168cd565b50506000910152565b600081518084526169068160208601602086016168ca565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015616a16577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b818110156169fc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a85030183526169e68486516168ee565b60209586019590945092909201916001016169ac565b509197505050602094850194929092019150600101616942565b50929695505050505050565b600081518084526020840193506020830160005b82811015616a765781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101616a36565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015616a16577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752616aec60408801826168ee565b9050602082015191508681036020880152616b078183616a22565b965050506020938401939190910190600101616aa8565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015616a16577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452616b808583516168ee565b94506020938401939190910190600101616b46565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015616a16577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152616c166040870182616a22565b9550506020938401939190910190600101616bbd565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561272557612725616c2c565b600181811c90821680616c8257607f821691505b602082108103614968577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060208284031215616ccd57600080fd5b5051919050565b600060208284031215616ce657600080fd5b8151801515811461279f57600080fd5b8381526001600160a01b038316602082015260606040820152600061494e60608301846168ee565b6001600160a01b03851681528360208201526001600160a01b038316604082015260806060820152600061321d60808301846168ee565b8181038181111561272557612725616c2c565b6001600160a01b038316815260406020820152600061409c60408301846168ee565b60208152600061279f60208301846168ee565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351616dd581601a8501602088016168ca565b7f3a20000000000000000000000000000000000000000000000000000000000000601a918401918201528351616e1281601c8401602088016168ca565b01601c01949350505050565b600060208284031215616e3057600080fd5b81516001600160a01b038116811461279f57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715616e9957616e99616e47565b60405290565b60008067ffffffffffffffff841115616eba57616eba616e47565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff82111715616ee957616ee9616e47565b604052838152905080828401851015616f0157600080fd5b61446b8460208301856168ca565b600082601f830112616f2057600080fd5b61279f83835160208501616e9f565b600060208284031215616f4157600080fd5b815167ffffffffffffffff811115616f5857600080fd5b61272184828501616f0f565b60008351616f768184602088016168ca565b835190830190616f8a8183602088016168ca565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351616fcb81601a8501602088016168ca565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a9184019182015283516170088160338401602088016168ca565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f5554000000000000000000000000000000000000000000606082015260806020820152600061279f60808301846168ee565b60006020828403121561709757600080fd5b815167ffffffffffffffff8111156170ae57600080fd5b8201601f810184136170bf57600080fd5b61272184825160208401616e9f565b600085516170e0818460208a016168ca565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161711a816001840160208a016168ca565b7f2f000000000000000000000000000000000000000000000000000000000000006001929091019182015284516171588160028401602089016168ca565b6001818301019150507f2f000000000000000000000000000000000000000000000000000000000000006001820152835161719a8160028401602088016168ca565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b6040815260006171e560408301846168ee565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161725c81601f8501602087016168ca565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b6040815260006172c960408301846168ee565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b60408152600061731b60408301846168ee565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b270000000000000000000000008152600082516173928160148501602087016168ca565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b6040815260006173d960408301856168ee565b828103602084015261279b81856168ee565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f22000000000000000000000000000000000000000000000000000000000000008152600082516174528160018501602087016168ca565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b600082516174988184602087016168ca565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161754b81604b8501602087016168ca565b91909101604b0192915050565b600060ff821660ff810361756e5761756e616c2c565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c694000000000000000000000000000000000000000000000006020820152600082516175d58160298501602087016168ca565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f5041544800000000000000000000606082015260806020820152600061279f60808301846168ee565b60006020828403121561763b57600080fd5b815167ffffffffffffffff81111561765257600080fd5b82016060818503121561766457600080fd5b61766c616e76565b81518060030b811461767d57600080fd5b8152602082015167ffffffffffffffff81111561769957600080fd5b6176a586828501616f0f565b602083015250604082015167ffffffffffffffff8111156176c557600080fd5b6176d186828501616f0f565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161773d8160218501602087016168ca565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f27000000000000000000000000000000000000000000000000000000000000006020820152600083516179298160218501602088016168ca565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161796681602e8401602088016168ca565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a2000000000000000000000000000000000000000000000006020820152600082516175d58160298501602087016168ca565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a000000000000000000000000000000000000000000000000000000000000602082015260008251617a2e8160228501602087016168ca565b9190910160220192915050565b7f436f6e7472616374206e616d6520000000000000000000000000000000000000815260008251617a7381600e8501602087016168ca565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351617b518160188501602088016168ca565b7f20696e20000000000000000000000000000000000000000000000000000000006018918401918201528351617b8e81601c8401602088016168ca565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b60008251617c948184602087016168ca565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f72654000000000815260008251617cfb81601c8501602087016168ca565b91909101601c0192915050565b60006000198203617d1b57617d1b616c2c565b5060010190565b808202811582820484141761272557612725616c2c565b6001815b6001841115617d7457808504811115617d5857617d58616c2c565b6001841615617d6657908102905b60019390931c928002617d3d565b935093915050565b600082617d8b57506001612725565b81617d9857506000612725565b8160018114617dae5760028114617db857617dd4565b6001915050612725565b60ff841115617dc957617dc9616c2c565b50506001821b612725565b5060208310610133831016604e8410600b8410161715617df7575081810a612725565b617e046000198484617d39565b8060001904821115617e1857617e18616c2c565b029392505050565b600061279f8383617d7c565b600081617e3b57617e3b616c2c565b506000190190565b60008351617e558184602088016168ca565b7f3a000000000000000000000000000000000000000000000000000000000000009083019081528351617e8f8160018401602088016168ca565b01600101949350505050565b8181036000831280158383131683831282161715615a6357615a63616c2c56fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a0033608060405234801561001057600080fd5b50604051610b4a380380610b4a83398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a4c806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bf565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610945565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e858585604051610281939291906109a2565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610945565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8858585604051610281939291906109a2565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109c5565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109e7565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff81111561087457600080fd5b8601601f8101881361088557600080fd5b803567ffffffffffffffff81111561089c57600080fd5b8860208284010111156108ae57600080fd5b959894975092955050506020019190565b6000806000606084860312156108d457600080fd5b6108dd846107f9565b92506108eb602085016107f9565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006109976080830184866108fc565b979650505050505050565b8381526040602082015260006109bc6040830184866108fc565b95945050505050565b6000602082840312156109d757600080fd5b8151801515811461065e57600080fd5b6000825160005b81811015610a0857602081860181015185830152016109ee565b50600092019182525091905056fea264697066735822122041336b1568f49be1aa3dcd208e804b373772741e9b7e1726a8869e99fced60c764736f6c634300081a003360c060405260001960025534801561001657600080fd5b50604051610f9a380380610f9a833981016040819052610035916100d8565b60016000558282826001600160a01b038316158061005a57506001600160a01b038216155b8061006c57506001600160a01b038116155b1561008a5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b031916919092161790555061011b915050565b80516001600160a01b03811681146100d357600080fd5b919050565b6000806000606084860312156100ed57600080fd5b6100f6846100bc565b9250610104602085016100bc565b9150610112604085016100bc565b90509250925092565b60805160a051610e0061019a6000396000818161012601528181610216015281816103580152818161041e01528181610541015281816106630152818161077c015281816108be015281816109840152610af101526000818160d501528181610322015281816103ef0152818161088801526109550152610e006000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80635b112591116100765780636f8b44b01161005b5780636f8b44b01461017b578063743e0c9b1461018e578063d5abeb01146101a157600080fd5b80635b112591146101485780635e3e9fef1461016857600080fd5b806302d5c899146100a8578063106e6290146100bd578063116191b6146100d057806321e093b114610121575b600080fd5b6100bb6100b6366004610bca565b6101b8565b005b6100bb6100cb366004610c5c565b6104e3565b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b6001546100f79073ffffffffffffffffffffffffffffffffffffffff1681565b6100bb610176366004610bca565b61071e565b6100bb610189366004610c8f565b610a30565b6100bb61019c366004610c8f565b610abc565b6101aa60025481565b604051908152602001610118565b6101c0610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610211576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561027f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a39190610ca8565b6102ad9086610cc1565b11156102e5576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561039c57600080fd5b505af11580156103b0573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd4915061044e907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d4a565b600060405180830381600087803b15801561046857600080fd5b505af115801561047c573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516104ca93929190610da7565b60405180910390a26104dc6001600055565b5050505050565b6104eb610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff16331461053c576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ce9190610ca8565b6105d89084610cc1565b1115610610576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156106a757600080fd5b505af11580156106bb573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161070791815260200190565b60405180910390a26107196001600055565b505050565b610726610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610777576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108099190610ca8565b6108139086610cc1565b111561084b576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561090257600080fd5b505af1158015610916573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506109b4907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d4a565b600060405180830381600087803b1580156109ce57600080fd5b505af11580156109e2573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516104ca93929190610da7565b60015473ffffffffffffffffffffffffffffffffffffffff163314610a81576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a150565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610b4a57600080fd5b505af11580156104dc573d6000803e3d6000fd5b600260005403610b9a576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff81168114610bc557600080fd5b919050565b600080600080600060808688031215610be257600080fd5b610beb86610ba1565b945060208601359350604086013567ffffffffffffffff811115610c0e57600080fd5b8601601f81018813610c1f57600080fd5b803567ffffffffffffffff811115610c3657600080fd5b886020828401011115610c4857600080fd5b959894975060200195606001359392505050565b600080600060608486031215610c7157600080fd5b610c7a84610ba1565b95602085013595506040909401359392505050565b600060208284031215610ca157600080fd5b5035919050565b600060208284031215610cba57600080fd5b5051919050565b80820180821115610cfb577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff85166020820152836040820152608060608201526000610d9c608083018486610d01565b979650505050505050565b838152604060208201526000610dc1604083018486610d01565b9594505050505056fea2646970667358221220eef04aea35a49145971cb42500074f7c44d89db08a5df2b7d071494c05cc1a2a64736f6c634300081a0033a2646970667358221220ad698860648ef94fdea10e636864a1b938e2e94a1b9b7faa26313a8246d5453e64736f6c634300081a0033", } // GatewayEVMInboundTestABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/gatewayevm.t.sol/gatewayevmtest.go b/v2/pkg/gatewayevm.t.sol/gatewayevmtest.go index 0b56abf8..3440119b 100644 --- a/v2/pkg/gatewayevm.t.sol/gatewayevmtest.go +++ b/v2/pkg/gatewayevm.t.sol/gatewayevmtest.go @@ -50,7 +50,7 @@ type StdInvariantFuzzSelector struct { // GatewayEVMTestMetaData contains all meta data concerning the GatewayEVMTest contract. var GatewayEVMTestMetaData = &bind.MetaData{ ABI: "[{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testExecuteRevert\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteRevertFailsIfSenderIsNotTSS\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteWithERC20FailsIfNotCustoryOrConnector\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveERC20PartialThroughCustody\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveERC20PartialThroughCustodyFailsIfAmountIs0\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveERC20PartialThroughCustodyFailsIfSenderIsNotTSS\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveERC20ThroughCustody\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveERC20ThroughCustodyFailsIfAmountIs0\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveERC20ThroughCustodyFailsIfSenderIsNotTSS\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveNoParams\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveNoParamsThroughCustody\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveNonPayable\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceiveNonPayableFailsIfSenderIsNotTSS\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testForwardCallToReceivePayable\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testRevertWithERC20FailsIfNotCustoryOrConnector\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndRevertThroughCustody\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndRevertThroughCustodyFailsIfAmountIs0\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndRevertThroughCustodyFailsIfSenderIsNotTSS\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawThroughCustody\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawThroughCustodyFailsIfSenderIsNotTSS\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedERC20\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"destination\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNoParams\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNonPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strs\",\"type\":\"string[]\",\"indexed\":false,\"internalType\":\"string[]\"},{\"name\":\"nums\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"str\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"num\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedRevert\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdraw\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndCall\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndRevert\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x6080604052600c8054600160ff199182168117909255601f805490911690911790553480156200002e57600080fd5b5061e9e5806200003f6000396000f3fe60806040523480156200001157600080fd5b5060043610620002365760003560e01c80639620d7ed1162000142578063cebad2a611620000cc578063f68bd1c01162000097578063fa7626d4116200007a578063fa7626d414620003ce578063fb176c1214620003dc578063fe7bdbb214620003e657600080fd5b8063f68bd1c014620003ba578063fa18c09b14620003c457600080fd5b8063cebad2a61462000392578063d46e9b57146200039c578063e20c9f7114620003a6578063eb1ce7f914620003b057600080fd5b8063ba414fa6116200010d578063ba414fa61462000359578063bcd9925e1462000374578063c9350b7f146200037e578063cbd57e2f146200038857600080fd5b80639620d7ed1462000331578063a3f9d0e0146200033b578063b0464fdc1462000345578063b5508aa9146200034f57600080fd5b806344671b9411620001c4578063766d0ded116200018f578063766d0ded14620002eb5780637d7f772a14620002f557806385226c8114620002ff578063916a17c6146200031857600080fd5b806344671b9414620002b457806366d9a9a014620002be5780636a62185414620002d757806371149c9414620002e157600080fd5b80632ade388011620002055780632ade3880146200027d5780633e5e3c2314620002965780633e73ecb414620002a05780633f7286f414620002aa57600080fd5b80630a9254e4146200023b5780631779672f14620002475780631ed7831c14620002515780632206eb651462000273575b600080fd5b62000245620003f0565b005b6200024562000caf565b6200025b62000ede565b6040516200026a919062009d11565b60405180910390f35b6200024562000f42565b620002876200113a565b6040516200026a919062009db4565b6200025b62001288565b62000245620012ea565b6200025b62001883565b62000245620018e5565b620002c862001c8e565b6040516200026a919062009f15565b6200024562001e1c565b6200024562001ee9565b6200024562002727565b62000245620028d3565b6200030962002bc6565b6040516200026a91906200a014565b6200032262002ca0565b6040516200026a91906200a029565b6200024562002d9f565b6200024562002f0f565b6200032262003539565b6200030962003638565b6200036362003712565b60405190151581526020016200026a565b62000245620037ea565b620002456200399a565b6200024562003b92565b6200024562004136565b6200024562004310565b6200025b620043e0565b6200024562004442565b620002456200456b565b6200024562004944565b601f54620003639060ff1681565b6200024562004c7c565b6200024562005322565b602680547fffffffffffffffffffffffff0000000000000000000000000000000000000000908116301790915560278054821661123417905560288054909116615678179055604051620004449062009c1d565b60408082526004908201527f746573740000000000000000000000000000000000000000000000000000000060608201526080602082018190526003908201527f54544b000000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f080158015620004ca573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055604051620005119062009c1d565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f08015801562000596573d6000803e3d6000fd5b50602580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600e81527f4761746577617945564d2e736f6c0000000000000000000000000000000000006020820152602854915191909316602482015260448101919091526200067e919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc955000000000000000000000000000000000000000000000000000000001790526200577e565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915560285460405191921690620007049062009c2b565b6001600160a01b03928316815291166020820152604001604051809103906000f08015801562000738573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392831617905560205460255460285460405192841693918216929116906200078f9062009c39565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015620007cc573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055604051620008139062009c47565b604051809103906000f08015801562000830573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556028546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b158015620008dd57600080fd5b505af1158015620008f2573d6000803e3d6000fd5b50506028546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b1580156200096957600080fd5b505af11580156200097e573d6000803e3d6000fd5b50506020546022546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b158015620009e557600080fd5b505af1158015620009fa573d6000803e3d6000fd5b50506020546023546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b15801562000a6157600080fd5b505af115801562000a76573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562000ad957600080fd5b505af115801562000aee573d6000803e3d6000fd5b5050602480546026546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f4240938101939093521692506340c10f199150604401600060405180830381600087803b15801562000b6057600080fd5b505af115801562000b75573d6000803e3d6000fd5b5050602480546022546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a1209381019390935216925063a9059cbb91506044016020604051808303816000875af115801562000bec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c1291906200a0ba565b506028546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b15801562000c9457600080fd5b505af115801562000ca9573d6000803e3d6000fd5b50505050565b6024805460275460405160009381018490526001600160a01b03928316604482015291166064820152819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a200000000000000000000000000000000000000000000000000000000179052602854905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015b600060405180830381600087803b15801562000d9257600080fd5b505af115801562000da7573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f951e19ed000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024015b600060405180830381600087803b15801562000e3257600080fd5b505af115801562000e47573d6000803e3d6000fd5b50506022546024546021546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506321fc65f2945062000ea6939283169290911690879087906004016200a0de565b600060405180830381600087803b15801562000ec157600080fd5b505af115801562000ed6573d6000803e3d6000fd5b505050505050565b6060601680548060200260200160405190810160405280929190818152602001828054801562000f3857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000f19575b5050505050905090565b60248054602754604051620186a09381018490526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a200000000000000000000000000000000000000000000000000000000179052602654905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200102757600080fd5b505af11580156200103c573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015620010c657600080fd5b505af1158015620010db573d6000803e3d6000fd5b50506020546024546027546040517fb8969bd40000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063b8969bd4945062000ea6939283169290911690879087906004016200a0de565b6060601e805480602002602001604051908101604052809291908181526020016000905b828210156200127f57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101562001267578382906000526020600020018054620011d3906200a112565b80601f016020809104026020016040519081016040528092919081815260200182805462001201906200a112565b8015620012525780601f10620012265761010080835404028352916020019162001252565b820191906000526020600020905b8154815290600101906020018083116200123457829003601f168201915b505050505081526020019060010190620011b1565b5050505081525050815260200190600101906200115e565b50505050905090565b6060601880548060200260200160405190810160405280929190818152602001828054801562000f38576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000f19575050505050905090565b602480546027546040516370a0823160e01b81526001600160a01b039182166004820152620186a09360009392909216916370a082319101602060405180830381865afa15801562001340573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200136691906200a161565b905062001375816000620057a1565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015620013c6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013ec91906200a161565b6027546040516001600160a01b0390911660248201526044810185905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391620014d1916001600160a01b03919091169060009086906004016200a17b565b600060405180830381600087803b158015620014ec57600080fd5b505af115801562001501573d6000803e3d6000fd5b50506022546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156200157b57600080fd5b505af115801562001590573d6000803e3d6000fd5b50506027546024546040518881526001600160a01b039283169450911691507f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb9060200160405180910390a360285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200163657600080fd5b505af11580156200164b573d6000803e3d6000fd5b5050602254602480546027546040517fd9caed120000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082169281019290925260448201899052909116925063d9caed129150606401600060405180830381600087803b158015620016c857600080fd5b505af1158015620016dd573d6000803e3d6000fd5b5050602480546027546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa15801562001730573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200175691906200a161565b9050620017648186620057a1565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015620017b5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620017db91906200a161565b9050620017f481620017ee88876200a1d4565b620057a1565b602480546020546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa15801562001845573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200186b91906200a161565b90506200187a816000620057a1565b50505050505050565b6060601780548060200260200160405190810160405280929190818152602001828054801562000f38576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000f19575050505050905090565b6040805160048082526024820183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6ed701690000000000000000000000000000000000000000000000000000000017905260215492517ff30c7ba30000000000000000000000000000000000000000000000000000000081529192737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba3926200199d926001600160a01b0316916000918791016200a17b565b600060405180830381600087803b158015620019b857600080fd5b505af1158015620019cd573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801562001a4757600080fd5b505af115801562001a5c573d6000803e3d6000fd5b5050602080546040516001600160a01b0390911681527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0935001905060405180910390a16020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801562001b1657600080fd5b505af115801562001b2b573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f915062001b739060009085906200a1ea565b60405180910390a260285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001bd557600080fd5b505af115801562001bea573d6000803e3d6000fd5b50506020546021546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd935062001c40929091169085906004016200a205565b6000604051808303816000875af115801562001c60573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001c8a91908101906200a324565b5050565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156200127f578382906000526020600020906002020160405180604001604052908160008201805462001ce8906200a112565b80601f016020809104026020016040519081016040528092919081815260200182805462001d16906200a112565b801562001d675780601f1062001d3b5761010080835404028352916020019162001d67565b820191906000526020600020905b81548152906001019060200180831162001d4957829003601f168201915b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801562001e0357602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162001daf5790505b5050505050815250508152602001906001019062001cb2565b6024805460275460405160009381018490526001600160a01b03928316604482015291166064820152819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc513169100000000000000000000000000000000000000000000000000000000179052602854905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa79060240162000d77565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a09060009060250160408051808303601f1901815290829052602480546021546370a0823160e01b85526001600160a01b0390811660048601529294506000939216916370a082319101602060405180830381865afa15801562001f7d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001fa391906200a161565b905062001fb2816000620057a1565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa15801562002003573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200202991906200a161565b6020546040516001600160a01b0390911660248201526044810186905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba3916200210e916001600160a01b03919091169060009086906004016200a17b565b600060405180830381600087803b1580156200212957600080fd5b505af11580156200213e573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015620021b857600080fd5b505af1158015620021cd573d6000803e3d6000fd5b50506020546040517f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa93506200221292506001600160a01b039091169087906200a205565b60405180910390a16020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156200229057600080fd5b505af1158015620022a5573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda790620022f290899089906200a1ea565b60405180910390a36022546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156200237057600080fd5b505af115801562002385573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c890620023d290899089906200a1ea565b60405180910390a360285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200243457600080fd5b505af115801562002449573d6000803e3d6000fd5b50506022546024546021546040517fc8a023620000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c8a023629450620024a89392831692909116908a908a906004016200a0de565b600060405180830381600087803b158015620024c357600080fd5b505af1158015620024d8573d6000803e3d6000fd5b5050602480546021546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a0823191015b602060405180830381865afa1580156200252c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200255291906200a161565b9050620025608187620057a1565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015620025b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620025d791906200a161565b9050620025ea81620017ee89876200a1d4565b602480546020546021546040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082169381019390935260009291169063dd62ed3e90604401602060405180830381865afa15801562002661573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200268791906200a161565b905062002696816000620057a1565b602480546020546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015620026e7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200270d91906200a161565b90506200271c816000620057a1565b505050505050505050565b60265460405163ca669fa760e01b81526001600160a01b039091166004820152620186a090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200278657600080fd5b505af11580156200279b573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156200282557600080fd5b505af11580156200283a573d6000803e3d6000fd5b5050602254602480546027546040517fd9caed120000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082169281019290925260448201869052909116925063d9caed129150606401600060405180830381600087803b158015620028b757600080fd5b505af1158015620028cc573d6000803e3d6000fd5b5050505050565b604080516001808252818301909252600091816020015b6060815260200190600190039081620028ea5790505090506040518060400160405280600f81526020017f48656c6c6f2c20466f756e647279210000000000000000000000000000000000815250816000815181106200294e576200294e6200a35d565b6020908102919091010152604080516001808252818301909252600091816020016020820280368337019050509050602a816000815181106200299557620029956200a35d565b6020908102919091010152604051600190600090620029bd908590859085906024016200a3be565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff05b6abf00000000000000000000000000000000000000000000000000000000179052602654905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562002a7157600080fd5b505af115801562002a86573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024015b600060405180830381600087803b15801562002b1157600080fd5b505af115801562002b26573d6000803e3d6000fd5b50506020546021546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd935062002b7c929091169085906004016200a205565b6000604051808303816000875af115801562002b9c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620028cc91908101906200a324565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156200127f57838290600052602060002001805462002c0c906200a112565b80601f016020809104026020016040519081016040528092919081815260200182805462002c3a906200a112565b801562002c8b5780601f1062002c5f5761010080835404028352916020019162002c8b565b820191906000526020600020905b81548152906001019060200180831162002c6d57829003601f168201915b50505050508152602001906001019062002bea565b6060601d805480602002602001604051908101604052809291908181526020016000905b828210156200127f5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562002d8657602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162002d325790505b5050505050815250508152602001906001019062002cc4565b60248054602754604051620186a09381018490526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc513169100000000000000000000000000000000000000000000000000000000179052602654905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015b600060405180830381600087803b15801562002e8557600080fd5b505af115801562002e9a573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e0915060240162000e17565b604080516004808252602480830184526020830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6ed7016900000000000000000000000000000000000000000000000000000000179052805460275494516370a0823160e01b81526001600160a01b0395861693810193909352620186a0946000939116916370a082319101602060405180830381865afa15801562002fba573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002fe091906200a161565b905062002fef816000620057a1565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa15801562003040573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200306691906200a161565b6020546040516001600160a01b0390911660248201526044810186905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba3916200314b916001600160a01b03919091169060009086906004016200a17b565b600060405180830381600087803b1580156200316657600080fd5b505af11580156200317b573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015620031f557600080fd5b505af11580156200320a573d6000803e3d6000fd5b5050602080546040516001600160a01b0390911681527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0935001905060405180910390a16022546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015620032c457600080fd5b505af1158015620032d9573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e906200332690899089906200a1ea565b60405180910390a360285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200338857600080fd5b505af11580156200339d573d6000803e3d6000fd5b50506022546024546021546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506321fc65f29450620033fc9392831692909116908a908a906004016200a0de565b600060405180830381600087803b1580156200341757600080fd5b505af11580156200342c573d6000803e3d6000fd5b5050602480546027546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa1580156200347f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620034a591906200a161565b9050620034b4816000620057a1565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa15801562003505573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200352b91906200a161565b9050620025ea8185620057a1565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156200127f5760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200361f57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620035cb5790505b505050505081525050815260200190600101906200355d565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156200127f5783829060005260206000200180546200367e906200a112565b80601f0160208091040260200160405190810160405280929190818152602001828054620036ac906200a112565b8015620036fd5780601f10620036d157610100808354040283529160200191620036fd565b820191906000526020600020905b815481529060010190602001808311620036df57829003601f168201915b5050505050815260200190600101906200365c565b60085460009060ff16156200372b575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015620037bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620037e391906200a161565b1415905090565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a09060009060250160408051808303601f190181529082905260265463ca669fa760e01b83526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200388657600080fd5b505af11580156200389b573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024015b600060405180830381600087803b1580156200392657600080fd5b505af11580156200393b573d6000803e3d6000fd5b50506022546024546021546040517fc8a023620000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c8a02362945062000ea6939283169290911690879087906004016200a0de565b60248054602754604051620186a09381018490526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a200000000000000000000000000000000000000000000000000000000179052602654905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562003a7f57600080fd5b505af115801562003a94573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801562003b1e57600080fd5b505af115801562003b33573d6000803e3d6000fd5b50506020546024546027546040517f5131ab590000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550635131ab59945062000ea6939283169290911690879087906004016200a0de565b60248054602754604051620186a09381018490526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a2000000000000000000000000000000000000000000000000000000001790526024805460275492516370a0823160e01b81526001600160a01b0393841660048201529394506000939216916370a082319101602060405180830381865afa15801562003c6c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003c9291906200a161565b905062003ca1816000620057a1565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa15801562003cf2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003d1891906200a161565b6020546040516001600160a01b0390911660248201526044810186905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba39162003dfd916001600160a01b03919091169060009086906004016200a17b565b600060405180830381600087803b15801562003e1857600080fd5b505af115801562003e2d573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801562003ea757600080fd5b505af115801562003ebc573d6000803e3d6000fd5b505060208054602454602754604080516001600160a01b0394851681529485018c905291831684830152919091166060830152517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609350908190036080019150a16022546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801562003f9357600080fd5b505af115801562003fa8573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e9062003ff590899089906200a1ea565b60405180910390a360285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200405757600080fd5b505af11580156200406c573d6000803e3d6000fd5b50506022546024546021546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506321fc65f29450620040cb9392831692909116908a908a906004016200a0de565b600060405180830381600087803b158015620040e657600080fd5b505af1158015620040fb573d6000803e3d6000fd5b5050602480546027546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a0823191016200250e565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152670de0b6b3a76400009060009060250160408051808303601f190181529082905260265463ca669fa760e01b83526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620041d757600080fd5b505af1158015620041ec573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156200427657600080fd5b505af11580156200428b573d6000803e3d6000fd5b50506020546021546040517f35c018db0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506335c018db93508692620042e192169086906004016200a205565b6000604051808303818588803b158015620042fb57600080fd5b505af11580156200187a573d6000803e3d6000fd5b60248054602754604051620186a09381018490526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a200000000000000000000000000000000000000000000000000000000179052602654905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa79060240162002e6a565b6060601580548060200260200160405190810160405280929190818152602001828054801562000f38576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000f19575050505050905090565b60008060405160200162004479907f68656c6c6f000000000000000000000000000000000000000000000000000000815260050190565b60408051808303601f190181529082905260285463ca669fa760e01b83526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620044e157600080fd5b505af1158015620044f6573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f951e19ed000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024016200390b565b604080516001808252818301909252600091816020015b6060815260200190600190039081620045825790505090506040518060400160405280600f81526020017f48656c6c6f2c20466f756e64727921000000000000000000000000000000000081525081600081518110620045e657620045e66200a35d565b6020908102919091010152604080516001808252818301909252600091816020016020820280368337019050509050602a816000815181106200462d576200462d6200a35d565b602090810291909101015260405160019060009062004655908590859085906024016200a3be565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff05b6abf0000000000000000000000000000000000000000000000000000000017905260215490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba39162004714916001600160a01b03919091169060009086906004016200a17b565b600060405180830381600087803b1580156200472f57600080fd5b505af115801562004744573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015620047be57600080fd5b505af1158015620047d3573d6000803e3d6000fd5b50506020546040517f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b14693506200481c92506001600160a01b03909116908790879087906200a3fa565b60405180910390a16020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156200489a57600080fd5b505af1158015620048af573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9150620048f79060009085906200a1ea565b60405180910390a260285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa79060240162002af6565b604080517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152815160058183030181526025909101909152602154670de0b6b3a764000091906001600160a01b031631620049a5816000620057a1565b6021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801562004a1b57600080fd5b505af115801562004a30573d6000803e3d6000fd5b50506020546040517f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa935062004a7592506001600160a01b039091169085906200a205565b60405180910390a16020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801562004af357600080fd5b505af115801562004b08573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c915062004b5790670de0b6b3a76400009086906200a1ea565b60405180910390a260285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562004bb957600080fd5b505af115801562004bce573d6000803e3d6000fd5b50506020546021546040517f35c018db0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506335c018db9350879262004c2492169087906004016200a205565b6000604051808303818588803b15801562004c3e57600080fd5b505af115801562004c53573d6000803e3d6000fd5b50506021546001600160a01b031631925062000ca99150829050670de0b6b3a7640000620057a1565b60248054602754604051620186a09381018490526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc5131691000000000000000000000000000000000000000000000000000000001790526024805460275492516370a0823160e01b81526001600160a01b0393841660048201529394506000939216916370a082319101602060405180830381865afa15801562004d56573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004d7c91906200a161565b905062004d8b816000620057a1565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa15801562004ddc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004e0291906200a161565b6020546040516001600160a01b0390911660248201526044810186905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba39162004ee7916001600160a01b03919091169060009086906004016200a17b565b600060405180830381600087803b15801562004f0257600080fd5b505af115801562004f17573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801562004f9157600080fd5b505af115801562004fa6573d6000803e3d6000fd5b50506020547f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af6092506001600160a01b0316905062004fe66002886200a446565b602454602754604080516001600160a01b03958616815260208101949094529184168383015292909216606082015290519081900360800190a16022546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156200509657600080fd5b505af1158015620050ab573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e90620050f890899089906200a1ea565b60405180910390a360285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200515a57600080fd5b505af11580156200516f573d6000803e3d6000fd5b50506022546024546021546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506321fc65f29450620051ce9392831692909116908a908a906004016200a0de565b600060405180830381600087803b158015620051e957600080fd5b505af1158015620051fe573d6000803e3d6000fd5b5050602480546027546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa15801562005251573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200527791906200a161565b90506200528b81620017ee6002896200a446565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015620052dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200530291906200a161565b9050620025ea816200531660028a6200a446565b620017ee90876200a1d4565b60408051808201909152600f81527f48656c6c6f2c20466f756e6472792100000000000000000000000000000000006020820152602154602a90600190670de0b6b3a76400009062005381906000906001600160a01b031631620057a1565b60008484846040516024016200539a939291906200a482565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260215490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba39162005460916001600160a01b039190911690670de0b6b3a76400009086906004016200a17b565b600060405180830381600087803b1580156200547b57600080fd5b505af115801562005490573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156200550a57600080fd5b505af11580156200551f573d6000803e3d6000fd5b50506020546040517f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa93506200556a92506001600160a01b039091169085908990899089906200a4ae565b60405180910390a16020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015620055e857600080fd5b505af1158015620055fd573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f91506200564c90670de0b6b3a76400009085906200a1ea565b60405180910390a260285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620056ae57600080fd5b505af1158015620056c3573d6000803e3d6000fd5b50506020546021546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd935086926200571992169086906004016200a205565b60006040518083038185885af115801562005738573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526200576391908101906200a324565b50602154620028cc9083906001600160a01b031631620057a1565b60006200578a62009c55565b6200579784848362005822565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b1580156200580d57600080fd5b505afa15801562000ed6573d6000803e3d6000fd5b600080620058318584620058a3565b9050620058986040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001620058829291906200a205565b60405160208183030381529060405285620058b1565b9150505b9392505050565b60006200589c8383620058e5565b60c08101515160009015620058d957620058d184848460c0015162005904565b90506200589c565b620058d1848462005ac0565b6000620058f3838362005bb7565b6200589c83836020015184620058b1565b6000806200591162005bc5565b9050600062005921868362005c9d565b905060006200593a826060015183602001518562006172565b905060006200594c838389896200639c565b905060006200595b82620072fc565b602081015181519192509060030b15620059d357898260400151604051602001620059889291906200a4f1565b60408051601f19818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252620059ca916004016200a576565b60405180910390fd5b600062005a186040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001620074e0565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d9062005a6d9084906004016200a576565b602060405180830381865afa15801562005a8b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005ab191906200a58b565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc9259062005b179087906004016200a576565b600060405180830381865afa15801562005b35573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262005b5f91908101906200a324565b9050600062005b91828560405160200162005b7c9291906200a5b6565b604051602081830303815290604052620076ee565b90506001600160a01b03811662005797578484604051602001620059889291906200a5e9565b62001c8a8282600062007701565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c9062005c4e9084906004016200a698565b600060405180830381865afa15801562005c6c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262005c9691908101906200a6e1565b9250505090565b62005cd06040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d905062005d1c6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b62005d278562007812565b6020820152600062005d398662007c17565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa15801562005d7c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262005da691908101906200a6e1565b8683856020015160405160200162005dc294939291906200a72f565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb119062005e1c9085906004016200a576565b600060405180830381865afa15801562005e3a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262005e6491908101906200a6e1565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f69062005eae9084906004016200a7f5565b602060405180830381865afa15801562005ecc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005ef291906200a0ba565b62005f0a57816040516020016200598891906200a849565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac89062005f519084906004016200a8dd565b600060405180830381865afa15801562005f6f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262005f9991908101906200a6e1565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f69062005fe29084906004016200a931565b602060405180830381865afa15801562006000573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200602691906200a0ba565b15620060c1576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890620060739084906004016200a931565b600060405180830381865afa15801562006091573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620060bb91908101906200a6e1565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001620060e891906200a985565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401620061169291906200a9f3565b600060405180830381865afa15801562006134573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200615e91908101906200a6e1565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816200618e5790505090506040518060400160405280600481526020017f677265700000000000000000000000000000000000000000000000000000000081525081600081518110620061f257620061f26200a35d565b60200260200101819052506040518060400160405280600381526020017f2d726c0000000000000000000000000000000000000000000000000000000000815250816001815181106200624957620062496200a35d565b6020026020010181905250846040516020016200626791906200aa1c565b604051602081830303815290604052816002815181106200628c576200628c6200a35d565b602002602001018190525082604051602001620062aa91906200aa68565b60405160208183030381529060405281600381518110620062cf57620062cf6200a35d565b60200260200101819052506000620062e782620072fc565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506200637a906040805180820182526000808252602091820152815180830190925284518252808501908201529062007eb3565b6200639257856040516020016200598891906200aaab565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015620063ed565b511590565b6200656657826020015115620064ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401620059ca565b8260c001511562006566576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401620059ca565b6040805160ff8082526120008201909252600091816020015b60608152602001906001900390816200657f57905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280620065dd906200ab3e565b935060ff1681518110620065f557620065f56200a35d565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e37000000000000000000000000000000000000008152506040516020016200664891906200ab60565b60405160208183030381529060405282828062006665906200ab3e565b935060ff16815181106200667d576200667d6200a35d565b60200260200101819052506040518060400160405280600681526020017f6465706c6f790000000000000000000000000000000000000000000000000000815250828280620066cc906200ab3e565b935060ff1681518110620066e457620066e46200a35d565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d6500000000000000000000000000000000000081525082828062006733906200ab3e565b935060ff16815181106200674b576200674b6200a35d565b6020026020010181905250876020015182828062006769906200ab3e565b935060ff16815181106200678157620067816200a35d565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e747261637450617468000000000000000000000000000000000000815250828280620067d0906200ab3e565b935060ff1681518110620067e857620067e86200a35d565b60209081029190910101528751828262006802816200ab3e565b935060ff16815181106200681a576200681a6200a35d565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e4964000000000000000000000000000000000000000000000081525082828062006869906200ab3e565b935060ff16815181106200688157620068816200a35d565b6020026020010181905250620068974662007f1c565b8282620068a4816200ab3e565b935060ff1681518110620068bc57620068bc6200a35d565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c6500000000000000000000000000000000008152508282806200690b906200ab3e565b935060ff16815181106200692357620069236200a35d565b6020026020010181905250868282806200693d906200ab3e565b935060ff16815181106200695557620069556200a35d565b602090810291909101015285511562006a8c5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f6465000000000000000000000060208201528282620069a9816200ab3e565b935060ff1681518110620069c157620069c16200a35d565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d9062006a139089906004016200a576565b600060405180830381865afa15801562006a31573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262006a5b91908101906200a6e1565b828262006a68816200ab3e565b935060ff168151811062006a805762006a806200a35d565b60200260200101819052505b84602001511562006b685760408051808201909152601281527f2d2d766572696679536f75726365436f646500000000000000000000000000006020820152828262006ad8816200ab3e565b935060ff168151811062006af05762006af06200a35d565b60200260200101819052506040518060400160405280600581526020017f66616c736500000000000000000000000000000000000000000000000000000081525082828062006b3f906200ab3e565b935060ff168151811062006b575762006b576200a35d565b602002602001018190525062006d4c565b62006ba2620063e88660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b62006c3f5760408051808201909152600d81527f2d2d6c6963656e736554797065000000000000000000000000000000000000006020820152828262006be8816200ab3e565b935060ff168151811062006c005762006c006200a35d565b60200260200101819052508460a0015160405160200162006c2291906200aa1c565b60405160208183030381529060405282828062006b3f906200ab3e565b8460c0015115801562006c8457506040808901518151808301835260008082526020918201528251808401909352815183529081019082015262006c8290511590565b155b1562006d4c5760408051808201909152600d81527f2d2d6c6963656e736554797065000000000000000000000000000000000000006020820152828262006ccb816200ab3e565b935060ff168151811062006ce35762006ce36200a35d565b602002602001018190525062006cf98862007fc3565b60405160200162006d0b91906200aa1c565b60405160208183030381529060405282828062006d28906200ab3e565b935060ff168151811062006d405762006d406200a35d565b60200260200101819052505b6040808601518151808301835260008082526020918201528251808401909352815183529081019082015262006d8190511590565b62006e215760408051808201909152600b81527f2d2d72656c6179657249640000000000000000000000000000000000000000006020820152828262006dc7816200ab3e565b935060ff168151811062006ddf5762006ddf6200a35d565b6020026020010181905250846040015182828062006dfd906200ab3e565b935060ff168151811062006e155762006e156200a35d565b60200260200101819052505b60608501511562006f505760408051808201909152600681527f2d2d73616c7400000000000000000000000000000000000000000000000000006020820152828262006e6d816200ab3e565b935060ff168151811062006e855762006e856200a35d565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa15801562006ef5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262006f1f91908101906200a6e1565b828262006f2c816200ab3e565b935060ff168151811062006f445762006f446200a35d565b60200260200101819052505b60e08501515115620070045760408051808201909152600a81527f2d2d6761734c696d6974000000000000000000000000000000000000000000006020820152828262006f9d816200ab3e565b935060ff168151811062006fb55762006fb56200a35d565b602002602001018190525062006fd38560e001516000015162007f1c565b828262006fe0816200ab3e565b935060ff168151811062006ff85762006ff86200a35d565b60200260200101819052505b60e08501516020015115620070bb5760408051808201909152600a81527f2d2d6761735072696365000000000000000000000000000000000000000000006020820152828262007054816200ab3e565b935060ff16815181106200706c576200706c6200a35d565b60200260200101819052506200708a8560e001516020015162007f1c565b828262007097816200ab3e565b935060ff1681518110620070af57620070af6200a35d565b60200260200101819052505b60e08501516040015115620071725760408051808201909152600e81527f2d2d6d6178466565506572476173000000000000000000000000000000000000602082015282826200710b816200ab3e565b935060ff16815181106200712357620071236200a35d565b6020026020010181905250620071418560e001516040015162007f1c565b82826200714e816200ab3e565b935060ff16815181106200716657620071666200a35d565b60200260200101819052505b60e08501516060015115620072295760408051808201909152601681527f2d2d6d61785072696f726974794665655065724761730000000000000000000060208201528282620071c2816200ab3e565b935060ff1681518110620071da57620071da6200a35d565b6020026020010181905250620071f88560e001516060015162007f1c565b828262007205816200ab3e565b935060ff16815181106200721d576200721d6200a35d565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156200724a576200724a6200a229565b6040519080825280602002602001820160405280156200727f57816020015b6060815260200190600190039081620072695790505b50905060005b8260ff168160ff161015620072ed57838160ff1681518110620072ac57620072ac6200a35d565b6020026020010151828260ff1681518110620072cc57620072cc6200a35d565b60200260200101819052508080620072e4906200ab3e565b91505062007285565b5093505050505b949350505050565b620073246040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c91620073ac918691016200abcd565b600060405180830381865afa158015620073ca573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620073f491908101906200a6e1565b9050600062007404868362008aed565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b81526004016200743691906200a014565b6000604051808303816000875af115801562007456573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200748091908101906200ac16565b805190915060030b158015906200749a5750602081015151155b8015620074aa5750604081015151155b15620063925781600081518110620074c657620074c66200a35d565b60200260200101516040516020016200598891906200accc565b60606000620075168560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506200754f9082905b9062008c64565b15620076bb576000620075d382620075cc84620075c5620075978a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b9062008c8d565b9062008cf5565b604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506200763990829062008c64565b15620076a657604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620076a3905b829062008d82565b90505b620076b18162008daa565b925050506200589c565b8215620076d7578484604051602001620059889291906200aeba565b50506040805160208101909152600081526200589c565b6000808251602084016000f09392505050565b8160a00151156200771157505050565b60006200772084848462008e19565b905060006200772f82620072fc565b602081015181519192509060030b158015620077ce5750604080518082018252600781527f535543434553530000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620077ce9060408051808201825260008082526020918201528151808301909252845182528085019082015262007548565b15620077dc57505050505050565b60408201515115620077ff5781604001516040516020016200598891906200af65565b806040516020016200598891906200afc5565b60606000620078488360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150620078af905b829062007eb3565b156200792357604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526200589c906200791d90839062009420565b62008daa565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015262007987905b8290620094b4565b60010362007a5a57604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620079f0906200769b565b50604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526200589c906200791d905b839062008d82565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015262007abb90620078a7565b1562007bfe57604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529062007b2690839062009560565b90506000816001835162007b3b91906200a1d4565b8151811062007b4e5762007b4e6200a35d565b6020026020010151905062007bf56200791d62007bc76040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925285518252808601908201529062009420565b95945050505050565b826040516020016200598891906200b032565b50919050565b6060600062007c4d8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915062007cb190620078a7565b1562007cc2576200589c8162008daa565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015262007d23906200797f565b60010362007d9157604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526200589c906200791d9062007a52565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015262007df290620078a7565b1562007bfe57604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529062007e5d90839062009560565b905060018151111562007e9f57806002825162007e7b91906200a1d4565b8151811062007e8e5762007e8e6200a35d565b602002602001015192505050919050565b50826040516020016200598891906200b032565b80518251600091111562007eca575060006200579b565b8151835160208501516000929162007ee2916200b112565b62007eee91906200a1d4565b90508260200151810362007f075760019150506200579b565b82516020840151819020912014905092915050565b6060600062007f2b836200962b565b600101905060008167ffffffffffffffff81111562007f4e5762007f4e6200a229565b6040519080825280601f01601f19166020018201604052801562007f79576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508462007f8357509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e534544000000000000000000000000000000000000000000008184019081528551808701875283815284019290925284518086019095525184529083015260609162008051905b829062009714565b156200809257505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620080f39062008049565b156200813457505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620081959062008049565b15620081d657505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620082379062008049565b806200829f5750604080518082018252601081527f47504c2d322e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526200829f9062008049565b15620082e057505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620083419062008049565b80620083a95750604080518082018252601081527f47504c2d332e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620083a99062008049565b15620083ea57505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526200844b9062008049565b80620084b35750604080518082018252601181527f4c47504c2d322e312d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620084b39062008049565b15620084f457505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620085559062008049565b80620085bd5750604080518082018252601181527f4c47504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620085bd9062008049565b15620085fe57505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526200865f9062008049565b15620086a057505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620087019062008049565b156200874257505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620087a39062008049565b15620087e457505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620088459062008049565b156200888657505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e300000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620088e79062008049565b156200892857505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620089899062008049565b80620089f15750604080518082018252601181527f4147504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620089f19062008049565b1562008a3257505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015262008a939062008049565b1562008ad457505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b604080840151845191516200598892906020016200b128565b60608060005b845181101562008b90578185828151811062008b135762008b136200a35d565b602002602001015160405160200162008b2e9291906200a5b6565b60405160208183030381529060405291506001855162008b4f91906200a1d4565b811462008b7b578160405160200162008b6991906200b295565b60405160208183030381529060405291505b8062008b87816200b2d8565b91505062008af3565b5060408051600380825260808201909252600091816020015b606081526020019060019003908162008ba9579050509050838160008151811062008bd85762008bd86200a35d565b60200260200101819052506040518060400160405280600281526020017f2d630000000000000000000000000000000000000000000000000000000000008152508160018151811062008c2f5762008c2f6200a35d565b6020026020010181905250818160028151811062008c515762008c516200a35d565b6020908102919091010152949350505050565b602080830151835183519284015160009362008c8492918491906200972a565b14159392505050565b6040805180820190915260008082526020820152600062008cc184600001518560200151856000015186602001516200985f565b905083602001518162008cd591906200a1d4565b8451859062008ce69083906200a1d4565b90525060208401525090919050565b604080518082019091526000808252602082015281518351101562008d1c5750816200579b565b602080830151908401516001911462008d445750815160208481015190840151829020919020145b801562008d7a5782518451859062008d5e9083906200a1d4565b905250825160208501805162008d769083906200b112565b9052505b509192915050565b604080518082019091526000808252602082015262008da3838383620099a3565b5092915050565b60606000826000015167ffffffffffffffff81111562008dce5762008dce6200a229565b6040519080825280601f01601f19166020018201604052801562008df9576020820181803683370190505b509050600060208201905062008da3818560200151866000015162009a5c565b6060600062008e2762005bc5565b6040805160ff808252612000820190925291925060009190816020015b606081526020019060019003908162008e4457905050905060006040518060400160405280600381526020017f6e7078000000000000000000000000000000000000000000000000000000000081525082828062008ea2906200ab3e565b935060ff168151811062008eba5762008eba6200a35d565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e330000000000000000000000000000000000000000000000000081525060405160200162008f0d91906200b2f5565b60405160208183030381529060405282828062008f2a906200ab3e565b935060ff168151811062008f425762008f426200a35d565b60200260200101819052506040518060400160405280600881526020017f76616c696461746500000000000000000000000000000000000000000000000081525082828062008f91906200ab3e565b935060ff168151811062008fa95762008fa96200a35d565b60200260200101819052508260405160200162008fc791906200aa68565b60405160208183030381529060405282828062008fe4906200ab3e565b935060ff168151811062008ffc5762008ffc6200a35d565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e7472616374000000000000000000000000000000000000000000008152508282806200904b906200ab3e565b935060ff16815181106200906357620090636200a35d565b60200260200101819052506200907a878462009ae5565b828262009087816200ab3e565b935060ff16815181106200909f576200909f6200a35d565b602090810291909101015285515115620091585760408051808201909152600b81527f2d2d7265666572656e636500000000000000000000000000000000000000000060208201528282620090f4816200ab3e565b935060ff16815181106200910c576200910c6200a35d565b60200260200101819052506200912786600001518462009ae5565b828262009134816200ab3e565b935060ff16815181106200914c576200914c6200a35d565b60200260200101819052505b856080015115620091cd5760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282620091a4816200ab3e565b935060ff1681518110620091bc57620091bc6200a35d565b602002602001018190525062009239565b8415620092395760408051808201909152601281527f2d2d726571756972655265666572656e636500000000000000000000000000006020820152828262009215816200ab3e565b935060ff16815181106200922d576200922d6200a35d565b60200260200101819052505b60408601515115620092e05760408051808201909152600d81527f2d2d756e73616665416c6c6f77000000000000000000000000000000000000006020820152828262009286816200ab3e565b935060ff16815181106200929e576200929e6200a35d565b60200260200101819052508560400151828280620092bc906200ab3e565b935060ff1681518110620092d457620092d46200a35d565b60200260200101819052505b856060015115620093505760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d6573000000000000000000000000602082015282826200932c816200ab3e565b935060ff16815181106200934457620093446200a35d565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156200937157620093716200a229565b604051908082528060200260200182016040528015620093a657816020015b6060815260200190600190039081620093905790505b50905060005b8260ff168160ff1610156200941457838160ff1681518110620093d357620093d36200a35d565b6020026020010151828260ff1681518110620093f357620093f36200a35d565b602002602001018190525080806200940b906200ab3e565b915050620093ac565b50979650505050505050565b6040805180820190915260008082526020820152815183511015620094475750816200579b565b815183516020850151600092916200945f916200b112565b6200946b91906200a1d4565b602084015190915060019082146200948d575082516020840151819020908220145b8015620094ab57835185518690620094a79083906200a1d4565b9052505b50929392505050565b6000808260000151620094da85600001518660200151866000015187602001516200985f565b620094e691906200b112565b90505b83516020850151620094fc91906200b112565b811162008da357816200950f816200b2d8565b92505082600001516200954c8560200151836200952d91906200a1d4565b86516200953b91906200a1d4565b83866000015187602001516200985f565b6200955891906200b112565b9050620094e9565b60606000620095708484620094b4565b6200957d9060016200b112565b67ffffffffffffffff8111156200959857620095986200a229565b604051908082528060200260200182016040528015620095cd57816020015b6060815260200190600190039081620095b75790505b50905060005b81518110156200962357620095ed6200791d868662008d82565b8282815181106200960257620096026200a35d565b602002602001018190525080806200961a906200b2d8565b915050620095d3565b509392505050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831062009675577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310620096a2576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310620096c157662386f26fc10000830492506010015b6305f5e1008310620096da576305f5e100830492506008015b6127108310620096ef57612710830492506004015b6064831062009702576064830492506002015b600a83106200579b5760010192915050565b600062009722838362009b29565b159392505050565b600080858411620098555760208411620097f5576000841562009780576001620097568660206200a1d4565b620097639060086200b33c565b620097709060026200b453565b6200977c91906200a1d4565b1990505b83518116856200979189896200b112565b6200979d91906200a1d4565b805190935082165b818114620097dd57878411620097c25787945050505050620072f4565b83620097ce816200b461565b945050828451169050620097a5565b620097e987856200b112565b945050505050620072f4565b8383206200980485886200a1d4565b6200981090876200b112565b91505b85821062009853578482208082036200983d576200983286846200b112565b9350505050620072f4565b6200984a6001846200a1d4565b92505062009813565b505b5092949350505050565b600083818685116200998c5760208511620099315760008515620098b65760016200988c8760206200a1d4565b620098999060086200b33c565b620098a69060026200b453565b620098b291906200a1d4565b1990505b84518116600087620098c98b8b6200b112565b620098d591906200a1d4565b855190915083165b82811462009922578186106200990757620098f98b8b6200b112565b9650505050505050620072f4565b8562009913816200b2d8565b965050838651169050620098dd565b859650505050505050620072f4565b508383206000905b6200994586896200a1d4565b82116200998a57858320808203620099645783945050505050620072f4565b620099716001856200b112565b935050818062009981906200b2d8565b92505062009939565b505b6200999887876200b112565b979650505050505050565b60408051808201909152600080825260208201526000620099d785600001518660200151866000015187602001516200985f565b602080870180519186019190915251909150620099f590826200a1d4565b83528451602086015162009a0a91906200b112565b810362009a1b576000855262009a53565b8351835162009a2b91906200b112565b8551869062009a3c9083906200a1d4565b905250835162009a4d90826200b112565b60208601525b50909392505050565b6020811062009a9c578151835262009a766020846200b112565b925062009a856020836200b112565b915062009a946020826200a1d4565b905062009a5c565b600019811562009ad257600162009ab58360206200a1d4565b62009ac3906101006200b453565b62009acf91906200a1d4565b90505b9151835183169219169190911790915250565b6060600062009af5848462005c9d565b805160208083015160405193945062009b11939091016200b47b565b60405160208183030381529060405291505092915050565b815181516000919081111562009b3d575081515b6020808501519084015160005b8381101562009c0c578251825180821462009bd557600019602087101562009bb25760018462009b7c8960206200a1d4565b62009b8891906200b112565b62009b959060086200b33c565b62009ba29060026200b453565b62009bae91906200a1d4565b1990505b818116838216818103911462009bd25797506200579b9650505050505050565b50505b62009be26020866200b112565b945062009bf16020856200b112565b9350505060208162009c0491906200b112565b905062009b4a565b50845186516200639291906200b4d7565b610cca806200b4fb83390190565b610b35806200c1c583390190565b610f85806200ccfa83390190565b610d31806200dc7f83390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200162009c9a62009c9f565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200162009c9a6040518060800160405280600081526020016000815260200160008152602001600081525090565b6020808252825182820181905260009190848201906040850190845b8181101562009d545783516001600160a01b03168352928401929184019160010162009d2d565b50909695505050505050565b60005b8381101562009d7d57818101518382015260200162009d63565b50506000910152565b6000815180845262009da081602086016020860162009d60565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b8581101562009ea6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b8181101562009e8f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089850301835262009e7c84865162009d86565b948e01949350918d019160010162009e3f565b505050978a01979450509188019160010162009ddb565b50919a9950505050505050505050565b600081518084526020808501945080840160005b8381101562009f0a5781517fffffffff00000000000000000000000000000000000000000000000000000000168752958201959082019060010162009eca565b509495945050505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101562009fb0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08984030185528151805187855262009f818886018262009d86565b91890151858303868b015291905062009f9b818362009eb6565b96890196945050509086019060010162009f3c565b509098975050505050505050565b6000815180845260208085019450848260051b860182860160005b858110156200a00757838303895262009ff483835162009d86565b9885019892509084019060010162009fd9565b5090979650505050505050565b6020815260006200589c602083018462009fbe565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101562009fb0578883037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0018552815180516001600160a01b031684528701518784018790526200a0a68785018262009eb6565b95880195935050908601906001016200a050565b6000602082840312156200a0cd57600080fd5b815180151581146200589c57600080fd5b60006001600160a01b0380871683528086166020840152508360408301526080606083015262006392608083018462009d86565b600181811c908216806200a12757607f821691505b60208210810362007c11577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000602082840312156200a17457600080fd5b5051919050565b6001600160a01b038416815282602082015260606040820152600062007bf5606083018462009d86565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156200579b576200579b6200a1a5565b828152604060208201526000620072f4604083018462009d86565b6001600160a01b0383168152604060208201526000620072f4604083018462009d86565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156200a27e576200a27e6200a229565b60405290565b600067ffffffffffffffff808411156200a2a2576200a2a26200a229565b604051601f8501601f19908116603f011681019082821181831017156200a2cd576200a2cd6200a229565b816040528093508581528686860111156200a2e757600080fd5b6200a2f786602083018762009d60565b5050509392505050565b600082601f8301126200a31357600080fd5b6200589c838351602085016200a284565b6000602082840312156200a33757600080fd5b815167ffffffffffffffff8111156200a34f57600080fd5b62005797848285016200a301565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081518084526020808501945080840160005b8381101562009f0a578151875295820195908201906001016200a3a0565b6060815260006200a3d3606083018662009fbe565b82810360208401526200a3e781866200a38c565b9150508215156040830152949350505050565b6001600160a01b03851681526080602082015260006200a41e608083018662009fbe565b82810360408401526200a43281866200a38c565b915050821515606083015295945050505050565b6000826200a47d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6060815260006200a497606083018662009d86565b602083019490945250901515604090910152919050565b6001600160a01b038616815284602082015260a0604082015260006200a4d860a083018662009d86565b6060830194909452509015156080909101529392505050565b7f4661696c656420746f206465706c6f7920636f6e7472616374200000000000008152600083516200a52b81601a85016020880162009d60565b7f3a20000000000000000000000000000000000000000000000000000000000000601a9184019182015283516200a56a81601c84016020880162009d60565b01601c01949350505050565b6020815260006200589c602083018462009d86565b6000602082840312156200a59e57600080fd5b81516001600160a01b03811681146200589c57600080fd5b600083516200a5ca81846020880162009d60565b8351908301906200a5e081836020880162009d60565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e7472616374200000000000008152600083516200a62381601a85016020880162009d60565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a9184019182015283516200a66281603384016020880162009d60565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f555400000000000000000000000000000000000000000060608201526080602082015260006200589c608083018462009d86565b6000602082840312156200a6f457600080fd5b815167ffffffffffffffff8111156200a70c57600080fd5b8201601f810184136200a71e57600080fd5b62005797848251602084016200a284565b600085516200a743818460208a0162009d60565b80830190507f2f0000000000000000000000000000000000000000000000000000000000000080825286516200a781816001850160208b0162009d60565b6001920191820181905285516200a7a0816002850160208a0162009d60565b600292019182015283516200a7bd81600384016020880162009d60565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600392909101918201526008019695505050505050565b6040815260006200a80a604083018462009d86565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e20617274696661637420008152600082516200a88381601f85016020870162009d60565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b6040815260006200a8f2604083018462009d86565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b6040815260006200a946604083018462009d86565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b270000000000000000000000008152600082516200a9bf81601485016020870162009d60565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b6040815260006200aa08604083018562009d86565b828103602084015262005898818562009d86565b60007f220000000000000000000000000000000000000000000000000000000000000080835283516200aa5781600186016020880162009d60565b600193019283015250600201919050565b600082516200aa7c81846020870162009d60565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e7472616374200000000000000000000000000000000000000000006040820152600082516200ab3181604b85016020870162009d60565b91909101604b0192915050565b600060ff821660ff81036200ab57576200ab576200a1a5565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c694000000000000000000000000000000000000000000000006020820152600082516200abc081602985016020870162009d60565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f504154480000000000000000000060608201526080602082015260006200589c608083018462009d86565b6000602082840312156200ac2957600080fd5b815167ffffffffffffffff808211156200ac4257600080fd5b90830190606082860312156200ac5757600080fd5b6200ac616200a258565b82518060030b81146200ac7357600080fd5b81526020830151828111156200ac8857600080fd5b6200ac96878286016200a301565b6020830152506040830151828111156200acaf57600080fd5b6200acbd878286016200a301565b60408301525095945050505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f22000000000000000000000000000000000000000000000000000000000000006020820152600082516200ad2c81602185016020870162009d60565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f27000000000000000000000000000000000000000000000000000000000000006020820152600083516200af1a81602185016020880162009d60565b7f2720696e206f75747075743a200000000000000000000000000000000000000060219184019182015283516200af5981602e84016020880162009d60565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a2000000000000000000000000000000000000000000000006020820152600082516200abc081602985016020870162009d60565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a0000000000000000000000000000000000000000000000000000000000006020820152600082516200b02581602285016020870162009d60565b9190910160220192915050565b7f436f6e7472616374206e616d65200000000000000000000000000000000000008152600082516200b06c81600e85016020870162009d60565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b808201808211156200579b576200579b6200a1a5565b7f53504458206c6963656e7365206964656e7469666965722000000000000000008152600083516200b16281601885016020880162009d60565b7f20696e200000000000000000000000000000000000000000000000000000000060189184019182015283516200b1a181601c84016020880162009d60565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b600082516200b2a981846020870162009d60565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b600060001982036200b2ee576200b2ee6200a1a5565b5060010190565b7f406f70656e7a657070656c696e2f75706772616465732d636f726540000000008152600082516200b32f81601c85016020870162009d60565b91909101601c0192915050565b80820281158282048414176200579b576200579b6200a1a5565b600181815b808511156200b3975781600019048211156200b37b576200b37b6200a1a5565b808516156200b38957918102915b93841c93908002906200b35b565b509250929050565b6000826200b3b0575060016200579b565b816200b3bf575060006200579b565b81600181146200b3d857600281146200b3e3576200b403565b60019150506200579b565b60ff8411156200b3f7576200b3f76200a1a5565b50506001821b6200579b565b5060208310610133831016604e8410600b84101617156200b428575081810a6200579b565b6200b43483836200b356565b80600019048211156200b44b576200b44b6200a1a5565b029392505050565b60006200589c83836200b39f565b6000816200b473576200b4736200a1a5565b506000190190565b600083516200b48f81846020880162009d60565b7f3a0000000000000000000000000000000000000000000000000000000000000090830190815283516200b4cb81600184016020880162009d60565b01600101949350505050565b818103600083128015838313168383128216171562008da35762008da36200a1a556fe60806040523480156200001157600080fd5b5060405162000cca38038062000cca833981016040819052620000349162000123565b818160036200004483826200021c565b5060046200005382826200021c565b5050505050620002e8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008657600080fd5b81516001600160401b0380821115620000a357620000a36200005e565b604051601f8301601f19908116603f01168101908282118183101715620000ce57620000ce6200005e565b81604052838152602092508683858801011115620000eb57600080fd5b600091505b838210156200010f5785820183015181830184015290820190620000f0565b600093810190920192909252949350505050565b600080604083850312156200013757600080fd5b82516001600160401b03808211156200014f57600080fd5b6200015d8683870162000074565b935060208501519150808211156200017457600080fd5b50620001838582860162000074565b9150509250929050565b600181811c90821680620001a257607f821691505b602082108103620001c357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021757600081815260208120601f850160051c81016020861015620001f25750805b601f850160051c820191505b818110156200021357828155600101620001fe565b5050505b505050565b81516001600160401b038111156200023857620002386200005e565b62000250816200024984546200018d565b84620001c9565b602080601f8311600181146200028857600084156200026f5750858301515b600019600386901b1c1916600185901b17855562000213565b600085815260208120601f198616915b82811015620002b95788860151825594840194600190910190840162000298565b5085821015620002d85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6109d280620002f86000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108ba565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dc565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f39061090f565b80601f016020809104026020016040519081016040528092919081815260200182805461021f9061090f565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f39061090f565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610962565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b600060208083528351808285015260005b818110156107ec578581018301518582016040015282016107d0565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b9150604084013590509250925092565b6000602082840312156108cc57600080fd5b6108d58261082b565b9392505050565b600080604083850312156108ef57600080fd5b6108f88361082b565b91506109066020840161082b565b90509250929050565b600181811c9082168061092357607f821691505b60208210810361095c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220556869bd33d6741656e444b7d99e56e0c3a9495b8426ba227d4f4af169660e8264736f6c63430008150033608060405234801561001057600080fd5b50604051610b35380380610b3583398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a37806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bd565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610942565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102819392919061098d565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610942565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102819392919061098d565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109b0565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109d2565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff8082111561087557600080fd5b818801915088601f83011261088957600080fd5b81358181111561089857600080fd5b8960208285010111156108aa57600080fd5b9699959850939650602001949392505050565b6000806000606084860312156108d257600080fd5b6108db846107f9565b92506108e9602085016107f9565b9150604084013590509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109826080830184866108f9565b979650505050505050565b8381526040602082015260006109a76040830184866108f9565b95945050505050565b6000602082840312156109c257600080fd5b8151801515811461065e57600080fd5b6000825160005b818110156109f357602081860181015185830152016109d9565b50600092019182525091905056fea2646970667358221220add5c975d5cd9c8b4afe35ea370aed6f4c4571bcc8cfe91b243cc9add705e36664736f6c6343000815003360c060405260001960025534801561001657600080fd5b50604051610f85380380610f85833981016040819052610035916100d8565b60016000558282826001600160a01b038316158061005a57506001600160a01b038216155b8061006c57506001600160a01b038116155b1561008a5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b031916919092161790555061011b915050565b80516001600160a01b03811681146100d357600080fd5b919050565b6000806000606084860312156100ed57600080fd5b6100f6846100bc565b9250610104602085016100bc565b9150610112604085016100bc565b90509250925092565b60805160a051610deb61019a6000396000818161012601528181610216015281816103580152818161041e01528181610541015281816106630152818161077c015281816108be015281816109840152610af101526000818160d501528181610322015281816103ef0152818161088801526109550152610deb6000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80635b112591116100765780636f8b44b01161005b5780636f8b44b01461017b578063743e0c9b1461018e578063d5abeb01146101a157600080fd5b80635b112591146101485780635e3e9fef1461016857600080fd5b806302d5c899146100a8578063106e6290146100bd578063116191b6146100d057806321e093b114610121575b600080fd5b6100bb6100b6366004610bca565b6101b8565b005b6100bb6100cb366004610c59565b6104e3565b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b6001546100f79073ffffffffffffffffffffffffffffffffffffffff1681565b6100bb610176366004610bca565b61071e565b6100bb610189366004610c8c565b610a30565b6100bb61019c366004610c8c565b610abc565b6101aa60025481565b604051908152602001610118565b6101c0610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610211576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561027f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a39190610ca5565b6102ad9086610cbe565b11156102e5576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561039c57600080fd5b505af11580156103b0573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd4915061044e907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d47565b600060405180830381600087803b15801561046857600080fd5b505af115801561047c573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516104ca93929190610d92565b60405180910390a26104dc6001600055565b5050505050565b6104eb610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff16331461053c576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ce9190610ca5565b6105d89084610cbe565b1115610610576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156106a757600080fd5b505af11580156106bb573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161070791815260200190565b60405180910390a26107196001600055565b505050565b610726610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610777576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108099190610ca5565b6108139086610cbe565b111561084b576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561090257600080fd5b505af1158015610916573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506109b4907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d47565b600060405180830381600087803b1580156109ce57600080fd5b505af11580156109e2573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516104ca93929190610d92565b60015473ffffffffffffffffffffffffffffffffffffffff163314610a81576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a150565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610b4a57600080fd5b505af11580156104dc573d6000803e3d6000fd5b600260005403610b9a576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff81168114610bc557600080fd5b919050565b600080600080600060808688031215610be257600080fd5b610beb86610ba1565b945060208601359350604086013567ffffffffffffffff80821115610c0f57600080fd5b818801915088601f830112610c2357600080fd5b813581811115610c3257600080fd5b896020828501011115610c4457600080fd5b96999598505060200195606001359392505050565b600080600060608486031215610c6e57600080fd5b610c7784610ba1565b95602085013595506040909401359392505050565b600060208284031215610c9e57600080fd5b5035919050565b600060208284031215610cb757600080fd5b5051919050565b80820180821115610cf8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015260806060830152610d87608083018486610cfe565b979650505050505050565b838152604060208201526000610dac604083018486610cfe565b9594505050505056fea2646970667358221220c1247105cac785b4e05127d6e13cb72f7443d98af6ef964c579e161b48ffece664736f6c63430008150033608060405234801561001057600080fd5b506001600055610d0c806100256000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610893565b6102f9565b34801561010057600080fd5b5061006a61010f36600461097d565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a58565b60405180910390a15050565b610226610372565b6000610233600285610ac2565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b6b565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610bb9565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610c9d565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610cba565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff8082111561072757600080fd5b818501915085601f83011261073b57600080fd5b81358181111561074a57600080fd5b86602082850101111561075c57600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e4576107e461076e565b604052919050565b600082601f8301126107fd57600080fd5b813567ffffffffffffffff8111156108175761081761076e565b61084860207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079d565b81815284602083860101111561085d57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087a565b6000806000606084860312156108a857600080fd5b833567ffffffffffffffff8111156108bf57600080fd5b6108cb868287016107ec565b9350506020840135915060408401356108e38161087a565b809150509250925092565b600067ffffffffffffffff8211156109085761090861076e565b5060051b60200190565b600082601f83011261092357600080fd5b81356020610938610933836108ee565b61079d565b82815260059290921b8401810191818101908684111561095757600080fd5b8286015b84811015610972578035835291830191830161095b565b509695505050505050565b60008060006060848603121561099257600080fd5b833567ffffffffffffffff808211156109aa57600080fd5b818601915086601f8301126109be57600080fd5b813560206109ce610933836108ee565b82815260059290921b8401810191818101908a8411156109ed57600080fd5b8286015b84811015610a2557803586811115610a095760008081fd5b610a178d86838b01016107ec565b8452509183019183016109f1565b5097505087013592505080821115610a3c57600080fd5b50610a4986828701610912565b9250506106f360408501610888565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610af8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b18578181015183820152602001610b00565b50506000910152565b60008151808452610b39816020860160208601610afd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610ba060a0830186610b21565b6060830194909452509015156080909101529392505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff87168352602060808185015281875180845260a08601915060a08160051b870101935082890160005b82811015610c49577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60888703018452610c37868351610b21565b95509284019290840190600101610bfd565b50505050838203604085015285518083528187019282019060005b81811015610c8057845183529383019391830191600101610c64565b505085151560608601529250610c94915050565b95945050505050565b600060208284031215610caf57600080fd5b81516104f98161087a565b60008251610ccc818460208701610afd565b919091019291505056fea26469706673582212203c78a9c62b9e8060d1fadf61a8e6e054c88d36bdb3ea73702c26bf13f718fad664736f6c63430008150033a2646970667358221220934345556145900be94e045aa46717112abc66dc8274056becd86fa6702a9eae64736f6c63430008150033", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061e40e8061003c6000396000f3fe608060405234801561001057600080fd5b506004361061020b5760003560e01c80639620d7ed1161012a578063cebad2a6116100bd578063f68bd1c01161008c578063fa7626d411610071578063fa7626d41461035c578063fb176c1214610369578063fe7bdbb21461037157600080fd5b8063f68bd1c01461034c578063fa18c09b1461035457600080fd5b8063cebad2a61461032c578063d46e9b5714610334578063e20c9f711461033c578063eb1ce7f91461034457600080fd5b8063ba414fa6116100f9578063ba414fa6146102fc578063bcd9925e14610314578063c9350b7f1461031c578063cbd57e2f1461032457600080fd5b80639620d7ed146102dc578063a3f9d0e0146102e4578063b0464fdc146102ec578063b5508aa9146102f457600080fd5b806344671b94116101a2578063766d0ded11610171578063766d0ded146102a25780637d7f772a146102aa57806385226c81146102b2578063916a17c6146102c757600080fd5b806344671b941461027557806366d9a9a01461027d5780636a6218541461029257806371149c941461029a57600080fd5b80632ade3880116101de5780632ade3880146102485780633e5e3c231461025d5780633e73ecb4146102655780633f7286f41461026d57600080fd5b80630a9254e4146102105780631779672f1461021a5780631ed7831c146102225780632206eb6514610240575b600080fd5b610218610379565b005b610218610c16565b61022a610e3d565b6040516102379190619751565b60405180910390f35b610218610e9f565b610250611091565b60405161023791906197ed565b61022a6111d3565b610218611233565b61022a6117a9565b610218611809565b610285611ba1565b6040516102379190619953565b610218611d23565b610218611def565b6102186125fa565b6102186127a0565b6102ba612a81565b6040516102379190619a4d565b6102cf612b51565b6040516102379190619a60565b610218612c4c565b610218612db9565b6102cf6133c1565b6102ba6134bc565b61030461358c565b6040519015158152602001610237565b610218613660565b61021861380a565b6102186139fc565b610218613f87565b610218614159565b61022a614228565b610218614288565b6102186143ad565b610218614770565b601f546103049060ff1681565b610218614a96565b610218615114565b602680547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602780548216611234179055602880549091166156781790556040516103cb90619664565b60408082526004908201527f746573740000000000000000000000000000000000000000000000000000000060608201526080602082018190526003908201527f54544b000000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f080158015610450573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905560405161049590619664565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f080158015610519573d6000803e3d6000fd5b50602580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600e81527f4761746577617945564d2e736f6c0000000000000000000000000000000000006020820152602854915191909316602482015260448101919091526105ff919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc95500000000000000000000000000000000000000000000000000000000179052615557565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff000000000000000000000000000000000000000090911681179091556028546040519192169061068390619671565b6001600160a01b03928316815291166020820152604001604051809103906000f0801580156106b6573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055602054602554602854604051928416939182169291169061070b9061967e565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610747573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905560405161078c9061968b565b604051809103906000f0801580156107a8573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556028546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b15801561085457600080fd5b505af1158015610868573d6000803e3d6000fd5b50506028546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b1580156108de57600080fd5b505af11580156108f2573d6000803e3d6000fd5b50506020546022546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b15801561095857600080fd5b505af115801561096c573d6000803e3d6000fd5b50506020546023546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b1580156109d257600080fd5b505af11580156109e6573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610a4857600080fd5b505af1158015610a5c573d6000803e3d6000fd5b5050602480546026546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f4240938101939093521692506340c10f199150604401600060405180830381600087803b158015610acd57600080fd5b505af1158015610ae1573d6000803e3d6000fd5b5050602480546022546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a1209381019390935216925063a9059cbb91506044016020604051808303816000875af1158015610b57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7b9190619af7565b506028546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b158015610bfc57600080fd5b505af1158015610c10573d6000803e3d6000fd5b50505050565b6024805460275460405160009381018490526001600160a01b03928316604482015291166064820152819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a200000000000000000000000000000000000000000000000000000000179052602854905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015b600060405180830381600087803b158015610cf857600080fd5b505af1158015610d0c573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f951e19ed000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024015b600060405180830381600087803b158015610d9657600080fd5b505af1158015610daa573d6000803e3d6000fd5b50506022546024546021546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506321fc65f29450610e0793928316929091169087908790600401619b19565b600060405180830381600087803b158015610e2157600080fd5b505af1158015610e35573d6000803e3d6000fd5b505050505050565b60606016805480602002602001604051908101604052809291908181526020018280548015610e9557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610e77575b5050505050905090565b60248054602754604051620186a09381018490526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a200000000000000000000000000000000000000000000000000000000179052602654905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015610f8357600080fd5b505af1158015610f97573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561102057600080fd5b505af1158015611034573d6000803e3d6000fd5b50506020546024546027546040517fb8969bd40000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063b8969bd49450610e0793928316929091169087908790600401619b19565b6060601e805480602002602001604051908101604052809291908181526020016000905b828210156111ca57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156111b357838290600052602060002001805461112690619b50565b80601f016020809104026020016040519081016040528092919081815260200182805461115290619b50565b801561119f5780601f106111745761010080835404028352916020019161119f565b820191906000526020600020905b81548152906001019060200180831161118257829003601f168201915b505050505081526020019060010190611107565b5050505081525050815260200190600101906110b5565b50505050905090565b60606018805480602002602001604051908101604052809291908181526020018280548015610e95576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610e77575050505050905090565b602480546027546040516370a0823160e01b81526001600160a01b039182166004820152620186a09360009392909216916370a082319101602060405180830381865afa158015611288573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ac9190619b9d565b90506112b9816000615576565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015611309573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061132d9190619b9d565b6027546040516001600160a01b0390911660248201526044810185905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391611410916001600160a01b0391909116906000908690600401619bb6565b600060405180830381600087803b15801561142a57600080fd5b505af115801561143e573d6000803e3d6000fd5b50506022546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156114b757600080fd5b505af11580156114cb573d6000803e3d6000fd5b50506027546024546040518881526001600160a01b039283169450911691507f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb9060200160405180910390a360285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561157057600080fd5b505af1158015611584573d6000803e3d6000fd5b5050602254602480546027546040517fd9caed120000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082169281019290925260448201899052909116925063d9caed129150606401600060405180830381600087803b15801561160057600080fd5b505af1158015611614573d6000803e3d6000fd5b5050602480546027546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa158015611666573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168a9190619b9d565b90506116968186615576565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa1580156116e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170a9190619b9d565b905061171f8161171a8887619c0d565b615576565b602480546020546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa15801561176f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117939190619b9d565b90506117a0816000615576565b50505050505050565b60606017805480602002602001604051908101604052809291908181526020018280548015610e95576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610e77575050505050905090565b6040805160048082526024820183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6ed701690000000000000000000000000000000000000000000000000000000017905260215492517ff30c7ba30000000000000000000000000000000000000000000000000000000081529192737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba3926118bf926001600160a01b031691600091879101619bb6565b600060405180830381600087803b1580156118d957600080fd5b505af11580156118ed573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561196657600080fd5b505af115801561197a573d6000803e3d6000fd5b5050602080546040516001600160a01b0390911681527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0935001905060405180910390a16020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611a3357600080fd5b505af1158015611a47573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9150611a8d906000908590619c20565b60405180910390a260285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611aee57600080fd5b505af1158015611b02573d6000803e3d6000fd5b50506020546021546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd9350611b5692909116908590600401619c39565b6000604051808303816000875af1158015611b75573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611b9d9190810190619d43565b5050565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156111ca5783829060005260206000209060020201604051806040016040529081600082018054611bf890619b50565b80601f0160208091040260200160405190810160405280929190818152602001828054611c2490619b50565b8015611c715780601f10611c4657610100808354040283529160200191611c71565b820191906000526020600020905b815481529060010190602001808311611c5457829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611d0b57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611cb85790505b50505050508152505081526020019060010190611bc5565b6024805460275460405160009381018490526001600160a01b03928316604482015291166064820152819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc513169100000000000000000000000000000000000000000000000000000000179052602854905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401610cde565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a09060009060250160408051808303601f1901815290829052602480546021546370a0823160e01b85526001600160a01b0390811660048601529294506000939216916370a082319101602060405180830381865afa158015611e82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ea69190619b9d565b9050611eb3816000615576565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015611f03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f279190619b9d565b6020546040516001600160a01b0390911660248201526044810186905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba39161200a916001600160a01b0391909116906000908690600401619bb6565b600060405180830381600087803b15801561202457600080fd5b505af1158015612038573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156120b157600080fd5b505af11580156120c5573d6000803e3d6000fd5b50506020546040517f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa935061210892506001600160a01b03909116908790619c39565b60405180910390a16020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561218557600080fd5b505af1158015612199573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda7906121e49089908990619c20565b60405180910390a36022546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561226157600080fd5b505af1158015612275573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8906122c09089908990619c20565b60405180910390a360285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561232157600080fd5b505af1158015612335573d6000803e3d6000fd5b50506022546024546021546040517fc8a023620000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c8a0236294506123929392831692909116908a908a90600401619b19565b600060405180830381600087803b1580156123ac57600080fd5b505af11580156123c0573d6000803e3d6000fd5b5050602480546021546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a0823191015b602060405180830381865afa158015612413573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124379190619b9d565b90506124438187615576565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015612493573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124b79190619b9d565b90506124c78161171a8987619c0d565b602480546020546021546040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082169381019390935260009291169063dd62ed3e90604401602060405180830381865afa15801561253d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125619190619b9d565b905061256e816000615576565b602480546020546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa1580156125be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125e29190619b9d565b90506125ef816000615576565b505050505050505050565b60265460405163ca669fa760e01b81526001600160a01b039091166004820152620186a090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561265857600080fd5b505af115801561266c573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156126f557600080fd5b505af1158015612709573d6000803e3d6000fd5b5050602254602480546027546040517fd9caed120000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082169281019290925260448201869052909116925063d9caed129150606401600060405180830381600087803b15801561278557600080fd5b505af1158015612799573d6000803e3d6000fd5b5050505050565b604080516001808252818301909252600091816020015b60608152602001906001900390816127b75790505090506040518060400160405280600f81526020017f48656c6c6f2c20466f756e6472792100000000000000000000000000000000008152508160008151811061281757612817619d78565b6020908102919091010152604080516001808252818301909252600091816020016020820280368337019050509050602a8160008151811061285b5761285b619d78565b602090810291909101015260405160019060009061288190859085908590602401619dd9565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff05b6abf00000000000000000000000000000000000000000000000000000000179052602654905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561293457600080fd5b505af1158015612948573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024015b600060405180830381600087803b1580156129d257600080fd5b505af11580156129e6573d6000803e3d6000fd5b50506020546021546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd9350612a3a92909116908590600401619c39565b6000604051808303816000875af1158015612a59573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526127999190810190619d43565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156111ca578382906000526020600020018054612ac490619b50565b80601f0160208091040260200160405190810160405280929190818152602001828054612af090619b50565b8015612b3d5780601f10612b1257610100808354040283529160200191612b3d565b820191906000526020600020905b815481529060010190602001808311612b2057829003601f168201915b505050505081526020019060010190612aa5565b6060601d805480602002602001604051908101604052809291908181526020016000905b828210156111ca5760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015612c3457602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411612be15790505b50505050508152505081526020019060010190612b75565b60248054602754604051620186a09381018490526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc513169100000000000000000000000000000000000000000000000000000000179052602654905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015b600060405180830381600087803b158015612d3157600080fd5b505af1158015612d45573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401610d7c565b604080516004808252602480830184526020830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6ed7016900000000000000000000000000000000000000000000000000000000179052805460275494516370a0823160e01b81526001600160a01b0395861693810193909352620186a0946000939116916370a082319101602060405180830381865afa158015612e63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e879190619b9d565b9050612e94816000615576565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015612ee4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f089190619b9d565b6020546040516001600160a01b0390911660248201526044810186905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391612feb916001600160a01b0391909116906000908690600401619bb6565b600060405180830381600087803b15801561300557600080fd5b505af1158015613019573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561309257600080fd5b505af11580156130a6573d6000803e3d6000fd5b5050602080546040516001600160a01b0390911681527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0935001905060405180910390a16022546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561315f57600080fd5b505af1158015613173573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e906131be9089908990619c20565b60405180910390a360285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561321f57600080fd5b505af1158015613233573d6000803e3d6000fd5b50506022546024546021546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506321fc65f294506132909392831692909116908a908a90600401619b19565b600060405180830381600087803b1580156132aa57600080fd5b505af11580156132be573d6000803e3d6000fd5b5050602480546027546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa158015613310573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133349190619b9d565b9050613341816000615576565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015613391573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133b59190619b9d565b90506124c78185615576565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156111ca5760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156134a457602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116134515790505b505050505081525050815260200190600101906133e5565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156111ca5783829060005260206000200180546134ff90619b50565b80601f016020809104026020016040519081016040528092919081815260200182805461352b90619b50565b80156135785780601f1061354d57610100808354040283529160200191613578565b820191906000526020600020905b81548152906001019060200180831161355b57829003601f168201915b5050505050815260200190600101906134e0565b60085460009060ff16156135a4575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015613635573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136599190619b9d565b1415905090565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a09060009060250160408051808303601f190181529082905260265463ca669fa760e01b83526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156136fb57600080fd5b505af115801561370f573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024015b600060405180830381600087803b15801561379957600080fd5b505af11580156137ad573d6000803e3d6000fd5b50506022546024546021546040517fc8a023620000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c8a023629450610e0793928316929091169087908790600401619b19565b60248054602754604051620186a09381018490526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a200000000000000000000000000000000000000000000000000000000179052602654905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156138ee57600080fd5b505af1158015613902573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561398b57600080fd5b505af115801561399f573d6000803e3d6000fd5b50506020546024546027546040517f5131ab590000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550635131ab599450610e0793928316929091169087908790600401619b19565b60248054602754604051620186a09381018490526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a2000000000000000000000000000000000000000000000000000000001790526024805460275492516370a0823160e01b81526001600160a01b0393841660048201529394506000939216916370a082319101602060405180830381865afa158015613ad5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613af99190619b9d565b9050613b06816000615576565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015613b56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b7a9190619b9d565b6020546040516001600160a01b0390911660248201526044810186905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391613c5d916001600160a01b0391909116906000908690600401619bb6565b600060405180830381600087803b158015613c7757600080fd5b505af1158015613c8b573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015613d0457600080fd5b505af1158015613d18573d6000803e3d6000fd5b505060208054602454602754604080516001600160a01b0394851681529485018c905291831684830152919091166060830152517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609350908190036080019150a16022546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015613dee57600080fd5b505af1158015613e02573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e90613e4d9089908990619c20565b60405180910390a360285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015613eae57600080fd5b505af1158015613ec2573d6000803e3d6000fd5b50506022546024546021546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506321fc65f29450613f1f9392831692909116908a908a90600401619b19565b600060405180830381600087803b158015613f3957600080fd5b505af1158015613f4d573d6000803e3d6000fd5b5050602480546027546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a0823191016123f6565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152670de0b6b3a76400009060009060250160408051808303601f190181529082905260265463ca669fa760e01b83526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561402757600080fd5b505af115801561403b573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156140c457600080fd5b505af11580156140d8573d6000803e3d6000fd5b50506020546021546040517f35c018db0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506335c018db9350869261412c9216908690600401619c39565b6000604051808303818588803b15801561414557600080fd5b505af11580156117a0573d6000803e3d6000fd5b60248054602754604051620186a09381018490526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a200000000000000000000000000000000000000000000000000000000179052602654905163ca669fa760e01b81526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401612d17565b60606015805480602002602001604051908101604052809291908181526020018280548015610e95576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610e77575050505050905090565b6000806040516020016142be907f68656c6c6f000000000000000000000000000000000000000000000000000000815260050190565b60408051808303601f190181529082905260285463ca669fa760e01b83526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561432557600080fd5b505af1158015614339573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f951e19ed000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e0915060240161377f565b604080516001808252818301909252600091816020015b60608152602001906001900390816143c45790505090506040518060400160405280600f81526020017f48656c6c6f2c20466f756e6472792100000000000000000000000000000000008152508160008151811061442457614424619d78565b6020908102919091010152604080516001808252818301909252600091816020016020820280368337019050509050602a8160008151811061446857614468619d78565b602090810291909101015260405160019060009061448e90859085908590602401619dd9565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff05b6abf0000000000000000000000000000000000000000000000000000000017905260215490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba39161454b916001600160a01b0391909116906000908690600401619bb6565b600060405180830381600087803b15801561456557600080fd5b505af1158015614579573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156145f257600080fd5b505af1158015614606573d6000803e3d6000fd5b50506020546040517f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146935061464d92506001600160a01b0390911690879087908790619e11565b60405180910390a16020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156146ca57600080fd5b505af11580156146de573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9150614724906000908590619c20565b60405180910390a260285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024016129b8565b604080517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152815160058183030181526025909101909152602154670de0b6b3a764000091906001600160a01b0316316147cf816000615576565b6021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561484457600080fd5b505af1158015614858573d6000803e3d6000fd5b50506020546040517f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa935061489b92506001600160a01b03909116908590619c39565b60405180910390a16020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561491857600080fd5b505af115801561492c573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c915061497990670de0b6b3a7640000908690619c20565b60405180910390a260285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156149da57600080fd5b505af11580156149ee573d6000803e3d6000fd5b50506020546021546040517f35c018db0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506335c018db93508792614a429216908790600401619c39565b6000604051808303818588803b158015614a5b57600080fd5b505af1158015614a6f573d6000803e3d6000fd5b50506021546001600160a01b0316319250610c109150829050670de0b6b3a7640000615576565b60248054602754604051620186a09381018490526001600160a01b0392831660448201529116606482015260009060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc5131691000000000000000000000000000000000000000000000000000000001790526024805460275492516370a0823160e01b81526001600160a01b0393841660048201529394506000939216916370a082319101602060405180830381865afa158015614b6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614b939190619b9d565b9050614ba0816000615576565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015614bf0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614c149190619b9d565b6020546040516001600160a01b0390911660248201526044810186905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391614cf7916001600160a01b0391909116906000908690600401619bb6565b600060405180830381600087803b158015614d1157600080fd5b505af1158015614d25573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015614d9e57600080fd5b505af1158015614db2573d6000803e3d6000fd5b50506020547f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af6092506001600160a01b03169050614df0600288619e59565b602454602754604080516001600160a01b03958616815260208101949094529184168383015292909216606082015290519081900360800190a16022546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015614e9f57600080fd5b505af1158015614eb3573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e90614efe9089908990619c20565b60405180910390a360285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015614f5f57600080fd5b505af1158015614f73573d6000803e3d6000fd5b50506022546024546021546040517f21fc65f20000000000000000000000000000000000000000000000000000000081526001600160a01b0393841695506321fc65f29450614fd09392831692909116908a908a90600401619b19565b600060405180830381600087803b158015614fea57600080fd5b505af1158015614ffe573d6000803e3d6000fd5b5050602480546027546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa158015615050573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906150749190619b9d565b90506150858161171a600289619e59565b602480546022546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa1580156150d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906150f99190619b9d565b90506124c78161510a60028a619e59565b61171a9087619c0d565b60408051808201909152600f81527f48656c6c6f2c20466f756e6472792100000000000000000000000000000000006020820152602154602a90600190670de0b6b3a764000090615171906000906001600160a01b031631615576565b600084848460405160240161518893929190619e94565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260215490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba39161524c916001600160a01b039190911690670de0b6b3a7640000908690600401619bb6565b600060405180830381600087803b15801561526657600080fd5b505af115801561527a573d6000803e3d6000fd5b50506021546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156152f357600080fd5b505af1158015615307573d6000803e3d6000fd5b50506020546040517f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa935061535092506001600160a01b03909116908590899089908990619ebe565b60405180910390a16020546040516381bad6f360e01b8152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156153cd57600080fd5b505af11580156153e1573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f915061542e90670de0b6b3a7640000908590619c20565b60405180910390a260285460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561548f57600080fd5b505af11580156154a3573d6000803e3d6000fd5b50506020546021546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd935086926154f79216908690600401619c39565b60006040518083038185885af1158015615515573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405261553e9190810190619d43565b506021546127999083906001600160a01b031631615576565b6000615561619698565b61556c8484836155f5565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b1580156155e157600080fd5b505afa158015610e35573d6000803e3d6000fd5b6000806156028584615670565b90506156656040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001615650929190619c39565b6040516020818303038152906040528561567c565b9150505b9392505050565b600061566983836156aa565b60c081015151600090156156a05761569984848460c001516156c5565b9050615669565b615699848461586b565b60006156b68383615956565b6156698383602001518461567c565b6000806156d0615962565b905060006156de8683615a35565b905060006156f58260600151836020015185615edb565b90506000615705838389896160ed565b9050600061571282616f6a565b602081015181519192509060030b156157855789826040015160405160200161573c929190619eff565b60408051601f19818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261577c91600401619f80565b60405180910390fd5b60006157c86040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001617139565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d9061581b908490600401619f80565b602060405180830381865afa158015615838573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061585c9190619f93565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc925906158c0908790600401619f80565b600060405180830381865afa1580156158dd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526159059190810190619d43565b90506000615933828560405160200161591f929190619fbc565b604051602081830303815290604052617339565b90506001600160a01b03811661556c57848460405160200161573c929190619feb565b611b9d8282600061734c565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c906159e990849060040161a096565b600060405180830381865afa158015615a06573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615a2e919081019061a0dd565b9250505090565b615a676040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050615ab26040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b615abb8561744f565b60208201526000615acb86617834565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015615b0d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615b35919081019061a0dd565b86838560200151604051602001615b4f949392919061a126565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190615ba7908590600401619f80565b600060405180830381865afa158015615bc4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615bec919081019061a0dd565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690615c3490849060040161a22a565b602060405180830381865afa158015615c51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615c759190619af7565b615c8a578160405160200161573c919061a27c565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890615ccf90849060040161a30e565b600060405180830381865afa158015615cec573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615d14919081019061a0dd565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690615d5b90849060040161a360565b602060405180830381865afa158015615d78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615d9c9190619af7565b15615e31576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890615de690849060040161a360565b600060405180830381865afa158015615e03573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615e2b919081019061a0dd565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001615e56919061a3b2565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401615e8292919061a41e565b600060405180830381865afa158015615e9f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615ec7919081019061a0dd565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b6060815260200190600190039081615ef75790505090506040518060400160405280600481526020017f677265700000000000000000000000000000000000000000000000000000000081525081600081518110615f5757615f57619d78565b60200260200101819052506040518060400160405280600381526020017f2d726c000000000000000000000000000000000000000000000000000000000081525081600181518110615fab57615fab619d78565b602002602001018190525084604051602001615fc7919061a443565b60405160208183030381529060405281600281518110615fe957615fe9619d78565b602002602001018190525082604051602001616005919061a4af565b6040516020818303038152906040528160038151811061602757616027619d78565b6020026020010181905250600061603d82616f6a565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506160ce9060408051808201825260008082526020918201528151808301909252845182528085019082015290617ab7565b6160e3578560405160200161573c919061a4f0565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d901561613d565b511590565b6162b1578260200151156161f9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a40161577c565b8260c00151156162b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a40161577c565b6040805160ff8082526120008201909252600091816020015b60608152602001906001900390816162ca57905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806163259061a581565b935060ff168151811061633a5761633a619d78565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e370000000000000000000000000000000000000081525060405160200161638b919061a5a0565b6040516020818303038152906040528282806163a69061a581565b935060ff16815181106163bb576163bb619d78565b60200260200101819052506040518060400160405280600681526020017f6465706c6f7900000000000000000000000000000000000000000000000000008152508282806164089061a581565b935060ff168151811061641d5761641d619d78565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d6500000000000000000000000000000000000081525082828061646a9061a581565b935060ff168151811061647f5761647f619d78565b6020026020010181905250876020015182828061649b9061a581565b935060ff16815181106164b0576164b0619d78565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e7472616374506174680000000000000000000000000000000000008152508282806164fd9061a581565b935060ff168151811061651257616512619d78565b60209081029190910101528751828261652a8161a581565b935060ff168151811061653f5761653f619d78565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e4964000000000000000000000000000000000000000000000081525082828061658c9061a581565b935060ff16815181106165a1576165a1619d78565b60200260200101819052506165b546617b18565b82826165c08161a581565b935060ff16815181106165d5576165d5619d78565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c6500000000000000000000000000000000008152508282806166229061a581565b935060ff168151811061663757616637619d78565b60200260200101819052508682828061664f9061a581565b935060ff168151811061666457616664619d78565b602090810291909101015285511561678b5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f64650000000000000000000000602082015282826166b58161a581565b935060ff16815181106166ca576166ca619d78565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d9061671a908990600401619f80565b600060405180830381865afa158015616737573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261675f919081019061a0dd565b828261676a8161a581565b935060ff168151811061677f5761677f619d78565b60200260200101819052505b84602001511561685b5760408051808201909152601281527f2d2d766572696679536f75726365436f64650000000000000000000000000000602082015282826167d48161a581565b935060ff16815181106167e9576167e9619d78565b60200260200101819052506040518060400160405280600581526020017f66616c73650000000000000000000000000000000000000000000000000000008152508282806168369061a581565b935060ff168151811061684b5761684b619d78565b6020026020010181905250616a22565b6168936161388660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6169265760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826168d68161a581565b935060ff16815181106168eb576168eb619d78565b60200260200101819052508460a0015160405160200161690b919061a443565b6040516020818303038152906040528282806168369061a581565b8460c0015115801561696957506040808901518151808301835260008082526020918201528251808401909352815183529081019082015261696790511590565b155b15616a225760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826169ad8161a581565b935060ff16815181106169c2576169c2619d78565b60200260200101819052506169d688617bb8565b6040516020016169e6919061a443565b604051602081830303815290604052828280616a019061a581565b935060ff1681518110616a1657616a16619d78565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152616a5690511590565b616aeb5760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282616a998161a581565b935060ff1681518110616aae57616aae619d78565b60200260200101819052508460400151828280616aca9061a581565b935060ff1681518110616adf57616adf619d78565b60200260200101819052505b606085015115616c0c5760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282616b348161a581565b935060ff1681518110616b4957616b49619d78565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015616bb8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052616be0919081019061a0dd565b8282616beb8161a581565b935060ff1681518110616c0057616c00619d78565b60200260200101819052505b60e08501515115616cb35760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282616c568161a581565b935060ff1681518110616c6b57616c6b619d78565b6020026020010181905250616c878560e0015160000151617b18565b8282616c928161a581565b935060ff1681518110616ca757616ca7619d78565b60200260200101819052505b60e08501516020015115616d5d5760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282616d008161a581565b935060ff1681518110616d1557616d15619d78565b6020026020010181905250616d318560e0015160200151617b18565b8282616d3c8161a581565b935060ff1681518110616d5157616d51619d78565b60200260200101819052505b60e08501516040015115616e075760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282616daa8161a581565b935060ff1681518110616dbf57616dbf619d78565b6020026020010181905250616ddb8560e0015160400151617b18565b8282616de68161a581565b935060ff1681518110616dfb57616dfb619d78565b60200260200101819052505b60e08501516060015115616eb15760408051808201909152601681527f2d2d6d61785072696f726974794665655065724761730000000000000000000060208201528282616e548161a581565b935060ff1681518110616e6957616e69619d78565b6020026020010181905250616e858560e0015160600151617b18565b8282616e908161a581565b935060ff1681518110616ea557616ea5619d78565b60200260200101819052505b60008160ff1667ffffffffffffffff811115616ecf57616ecf619c5b565b604051908082528060200260200182016040528015616f0257816020015b6060815260200190600190039081616eed5790505b50905060005b8260ff168160ff161015616f5b57838160ff1681518110616f2b57616f2b619d78565b6020026020010151828260ff1681518110616f4857616f48619d78565b6020908102919091010152600101616f08565b5093505050505b949350505050565b616f916040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c916170179186910161a60b565b600060405180830381865afa158015617034573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261705c919081019061a0dd565b9050600061706a86836186a7565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b815260040161709a9190619a4d565b6000604051808303816000875af11580156170b9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526170e1919081019061a652565b805190915060030b158015906170fa5750602081015151155b80156171095750604081015151155b156160e3578160008151811061712157617121619d78565b602002602001015160405160200161573c919061a708565b6060600061716e8560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506171a59082905b906187fc565b156173025760006172228261721c846172166171e88a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90618823565b90618885565b604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506172869082906187fc565b156172f057604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526172ed905b829061890a565b90505b6172f981618930565b92505050615669565b821561731b57848460405160200161573c92919061a8f4565b5050604080516020810190915260008152615669565b509392505050565b6000808251602084016000f09392505050565b8160a001511561735b57505050565b6000617368848484618999565b9050600061737582616f6a565b602081015181519192509060030b1580156174115750604080518082018252600781527f5355434345535300000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526174119060408051808201825260008082526020918201528151808301909252845182528085019082015261719f565b1561741e57505050505050565b6040820151511561743e57816040015160405160200161573c919061a99b565b8060405160200161573c919061a9f9565b606060006174848360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506174e9905b8290617ab7565b1561755857604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261566990617553908390618f34565b618930565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526175ba905b8290618fbe565b60010361768757604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617620906172e6565b50604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261566990617553905b839061890a565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526176e6906174e2565b1561781d57604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529061774e908390619058565b9050600081600183516177619190619c0d565b8151811061777157617771619d78565b602002602001015190506178146175536177e76040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252855182528086019082015290618f34565b95945050505050565b8260405160200161573c919061aa64565b50919050565b606060006178698360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506178cb906174e2565b156178d95761566981618930565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617938906175b3565b6001036179a257604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526156699061755390617680565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617a01906174e2565b1561781d57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290617a69908390619058565b9050600181511115617aa5578060028251617a849190619c0d565b81518110617a9457617a94619d78565b602002602001015192505050919050565b508260405160200161573c919061aa64565b805182516000911115617acc57506000615570565b81518351602085015160009291617ae29161ab42565b617aec9190619c0d565b905082602001518103617b03576001915050615570565b82516020840151819020912014905092915050565b60606000617b25836190fd565b600101905060008167ffffffffffffffff811115617b4557617b45619c5b565b6040519080825280601f01601f191660200182016040528015617b6f576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084617b7957509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091617c44905b82906191df565b15617c8457505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617ce390617c3d565b15617d2357505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617d8290617c3d565b15617dc257505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617e2190617c3d565b80617e865750604080518082018252601081527f47504c2d322e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617e8690617c3d565b15617ec657505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617f2590617c3d565b80617f8a5750604080518082018252601081527f47504c2d332e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617f8a90617c3d565b15617fca57505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261802990617c3d565b8061808e5750604080518082018252601181527f4c47504c2d322e312d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261808e90617c3d565b156180ce57505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261812d90617c3d565b806181925750604080518082018252601181527f4c47504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261819290617c3d565b156181d257505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261823190617c3d565b1561827157505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526182d090617c3d565b1561831057505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261836f90617c3d565b156183af57505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261840e90617c3d565b1561844e57505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e3000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526184ad90617c3d565b156184ed57505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261854c90617c3d565b806185b15750604080518082018252601181527f4147504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526185b190617c3d565b156185f157505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261865090617c3d565b1561869057505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b6040808401518451915161573c929060200161ab55565b60608060005b845181101561873257818582815181106186c9576186c9619d78565b60200260200101516040516020016186e2929190619fbc565b6040516020818303038152906040529150600185516187019190619c0d565b811461872a5781604051602001618718919061acbe565b60405160208183030381529060405291505b6001016186ad565b5060408051600380825260808201909252600091816020015b606081526020019060019003908161874b579050509050838160008151811061877657618776619d78565b60200260200101819052506040518060400160405280600281526020017f2d63000000000000000000000000000000000000000000000000000000000000815250816001815181106187ca576187ca619d78565b602002602001018190525081816002815181106187e9576187e9619d78565b6020908102919091010152949350505050565b602080830151835183519284015160009361881a92918491906191f3565b14159392505050565b604080518082019091526000808252602082015260006188558460000151856020015185600001518660200151619304565b90508360200151816188679190619c0d565b84518590618876908390619c0d565b90525060208401525090919050565b60408051808201909152600080825260208201528151835110156188aa575081615570565b60208083015190840151600191146188d15750815160208481015190840151829020919020145b8015618902578251845185906188e8908390619c0d565b90525082516020850180516188fe90839061ab42565b9052505b509192915050565b6040805180820190915260008082526020820152618929838383619424565b5092915050565b60606000826000015167ffffffffffffffff81111561895157618951619c5b565b6040519080825280601f01601f19166020018201604052801561897b576020820181803683370190505b509050600060208201905061892981856020015186600001516194cf565b606060006189a5615962565b6040805160ff808252612000820190925291925060009190816020015b60608152602001906001900390816189c257905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280618a1d9061a581565b935060ff1681518110618a3257618a32619d78565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001618a83919061acff565b604051602081830303815290604052828280618a9e9061a581565b935060ff1681518110618ab357618ab3619d78565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280618b009061a581565b935060ff1681518110618b1557618b15619d78565b602002602001018190525082604051602001618b31919061a4af565b604051602081830303815290604052828280618b4c9061a581565b935060ff1681518110618b6157618b61619d78565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280618bae9061a581565b935060ff1681518110618bc357618bc3619d78565b6020026020010181905250618bd88784619549565b8282618be38161a581565b935060ff1681518110618bf857618bf8619d78565b602090810291909101015285515115618ca45760408051808201909152600b81527f2d2d7265666572656e636500000000000000000000000000000000000000000060208201528282618c4a8161a581565b935060ff1681518110618c5f57618c5f619d78565b6020026020010181905250618c78866000015184619549565b8282618c838161a581565b935060ff1681518110618c9857618c98619d78565b60200260200101819052505b856080015115618d125760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282618ced8161a581565b935060ff1681518110618d0257618d02619d78565b6020026020010181905250618d78565b8415618d785760408051808201909152601281527f2d2d726571756972655265666572656e6365000000000000000000000000000060208201528282618d578161a581565b935060ff1681518110618d6c57618d6c619d78565b60200260200101819052505b60408601515115618e145760408051808201909152600d81527f2d2d756e73616665416c6c6f770000000000000000000000000000000000000060208201528282618dc28161a581565b935060ff1681518110618dd757618dd7619d78565b60200260200101819052508560400151828280618df39061a581565b935060ff1681518110618e0857618e08619d78565b60200260200101819052505b856060015115618e7e5760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282618e5d8161a581565b935060ff1681518110618e7257618e72619d78565b60200260200101819052505b60008160ff1667ffffffffffffffff811115618e9c57618e9c619c5b565b604051908082528060200260200182016040528015618ecf57816020015b6060815260200190600190039081618eba5790505b50905060005b8260ff168160ff161015618f2857838160ff1681518110618ef857618ef8619d78565b6020026020010151828260ff1681518110618f1557618f15619d78565b6020908102919091010152600101618ed5565b50979650505050505050565b6040805180820190915260008082526020820152815183511015618f59575081615570565b81518351602085015160009291618f6f9161ab42565b618f799190619c0d565b60208401519091506001908214618f9a575082516020840151819020908220145b8015618fb557835185518690618fb1908390619c0d565b9052505b50929392505050565b6000808260000151618fe28560000151866020015186600001518760200151619304565b618fec919061ab42565b90505b83516020850151619000919061ab42565b811161892957816190108161ad44565b925050826000015161904785602001518361902b9190619c0d565b86516190379190619c0d565b8386600001518760200151619304565b619051919061ab42565b9050618fef565b606060006190668484618fbe565b61907190600161ab42565b67ffffffffffffffff81111561908957619089619c5b565b6040519080825280602002602001820160405280156190bc57816020015b60608152602001906001900390816190a75790505b50905060005b8151811015617331576190d8617553868661890a565b8282815181106190ea576190ea619d78565b60209081029190910101526001016190c2565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310619146577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310619172576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061919057662386f26fc10000830492506010015b6305f5e10083106191a8576305f5e100830492506008015b61271083106191bc57612710830492506004015b606483106191ce576064830492506002015b600a83106155705760010192915050565b60006191eb8383619589565b159392505050565b6000808584116192fa57602084116192a6576000841561923e57600161921a866020619c0d565b61922590600861ad5e565b61923090600261ae5c565b61923a9190619c0d565b1990505b835181168561924d898961ab42565b6192579190619c0d565b805190935082165b818114619291578784116192795787945050505050616f62565b836192838161ae68565b94505082845116905061925f565b61929b878561ab42565b945050505050616f62565b8383206192b38588619c0d565b6192bd908761ab42565b91505b8582106192f8578482208082036192e5576192db868461ab42565b9350505050616f62565b6192f0600184619c0d565b9250506192c0565b505b5092949350505050565b6000838186851161940f57602085116193be576000851561935057600161932c876020619c0d565b61933790600861ad5e565b61934290600261ae5c565b61934c9190619c0d565b1990505b845181166000876193618b8b61ab42565b61936b9190619c0d565b855190915083165b8281146193b0578186106193985761938b8b8b61ab42565b9650505050505050616f62565b856193a28161ad44565b965050838651169050619373565b859650505050505050616f62565b508383206000905b6193d08689619c0d565b821161940d578583208082036193ec5783945050505050616f62565b6193f760018561ab42565b93505081806194059061ad44565b9250506193c6565b505b619419878761ab42565b979650505050505050565b604080518082019091526000808252602082015260006194568560000151866020015186600001518760200151619304565b6020808701805191860191909152519091506194729082619c0d565b835284516020860151619485919061ab42565b810361949457600085526194c6565b835183516194a2919061ab42565b855186906194b1908390619c0d565b90525083516194c0908261ab42565b60208601525b50909392505050565b6020811061950757815183526194e660208461ab42565b92506194f360208361ab42565b9150619500602082619c0d565b90506194cf565b600019811561953657600161951d836020619c0d565b6195299061010061ae5c565b6195339190619c0d565b90505b9151835183169219169190911790915250565b606060006195578484615a35565b80516020808301516040519394506195719390910161ae7f565b60405160208183030381529060405291505092915050565b815181516000919081111561959c575081515b6020808501519084015160005b838110156196555782518251808214619625576000196020871015619604576001846195d6896020619c0d565b6195e0919061ab42565b6195eb90600861ad5e565b6195f690600261ae5c565b6196009190619c0d565b1990505b81811683821681810391146196225797506155709650505050505050565b50505b61963060208661ab42565b945061963d60208561ab42565b9350505060208161964e919061ab42565b90506195a9565b50845186516160e3919061aed7565b610c9f8061aef883390190565b610b4a8061bb9783390190565b610f9a8061c6e183390190565b610d5e8061d67b83390190565b6040518060e001604052806060815260200160608152602001606081526020016000151581526020016000151581526020016000151581526020016196db6196e0565b905290565b604051806101000160405280600015158152602001600015158152602001606081526020016000801916815260200160608152602001606081526020016000151581526020016196db6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b818110156197925783516001600160a01b031683526020938401939092019160010161976b565b509095945050505050565b60005b838110156197b85781810151838201526020016197a0565b50506000910152565b600081518084526197d981602086016020860161979d565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156198e9577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b818110156198cf577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a85030183526198b98486516197c1565b602095860195909450929092019160010161987f565b509197505050602094850194929092019150600101619815565b50929695505050505050565b600081518084526020840193506020830160005b828110156199495781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101619909565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156198e9577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281518051604087526199bf60408801826197c1565b90506020820151915086810360208801526199da81836198f5565b96505050602093840193919091019060010161997b565b600082825180855260208501945060208160051b8301016020850160005b83811015619a4157601f19858403018852619a2b8383516197c1565b6020988901989093509190910190600101619a0f565b50909695505050505050565b60208152600061566960208301846199f1565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156198e9577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152619ae160408701826198f5565b9550506020938401939190910190600101619a88565b600060208284031215619b0957600080fd5b8151801515811461566957600080fd5b6001600160a01b03851681526001600160a01b03841660208201528260408201526080606082015260006160e360808301846197c1565b600181811c90821680619b6457607f821691505b60208210810361782e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060208284031215619baf57600080fd5b5051919050565b6001600160a01b038416815282602082015260606040820152600061781460608301846197c1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561557057615570619bde565b828152604060208201526000616f6260408301846197c1565b6001600160a01b0383168152604060208201526000616f6260408301846197c1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715619cad57619cad619c5b565b60405290565b60008067ffffffffffffffff841115619cce57619cce619c5b565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff82111715619cfd57619cfd619c5b565b604052838152905080828401851015619d1557600080fd5b61733184602083018561979d565b600082601f830112619d3457600080fd5b61566983835160208501619cb3565b600060208284031215619d5557600080fd5b815167ffffffffffffffff811115619d6c57600080fd5b61556c84828501619d23565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081518084526020840193506020830160005b82811015619949578151865260209586019590910190600101619dbb565b606081526000619dec60608301866199f1565b8281036020840152619dfe8186619da7565b9150508215156040830152949350505050565b6001600160a01b0385168152608060208201526000619e3360808301866199f1565b8281036040840152619e458186619da7565b915050821515606083015295945050505050565b600082619e8f577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b606081526000619ea760608301866197c1565b602083019490945250901515604090910152919050565b6001600160a01b038616815284602082015260a060408201526000619ee660a08301866197c1565b6060830194909452509015156080909101529392505050565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351619f3781601a85016020880161979d565b7f3a20000000000000000000000000000000000000000000000000000000000000601a918401918201528351619f7481601c84016020880161979d565b01601c01949350505050565b60208152600061566960208301846197c1565b600060208284031215619fa557600080fd5b81516001600160a01b038116811461566957600080fd5b60008351619fce81846020880161979d565b835190830190619fe281836020880161979d565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161a02381601a85016020880161979d565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161a06081603384016020880161979d565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f5554000000000000000000000000000000000000000000606082015260806020820152600061566960808301846197c1565b60006020828403121561a0ef57600080fd5b815167ffffffffffffffff81111561a10657600080fd5b8201601f8101841361a11757600080fd5b61556c84825160208401619cb3565b6000855161a138818460208a0161979d565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161a172816001840160208a0161979d565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161a1b081600284016020890161979d565b6001818301019150507f2f000000000000000000000000000000000000000000000000000000000000006001820152835161a1f281600284016020880161979d565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b60408152600061a23d60408301846197c1565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161a2b481601f85016020870161979d565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061a32160408301846197c1565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b60408152600061a37360408301846197c1565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b2700000000000000000000000081526000825161a3ea81601485016020870161979d565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b60408152600061a43160408301856197c1565b828103602084015261566581856197c1565b7f220000000000000000000000000000000000000000000000000000000000000081526000825161a47b81600185016020870161979d565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b6000825161a4c181846020870161979d565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161a57481604b85016020870161979d565b91909101604b0192915050565b600060ff821660ff810361a5975761a597619bde565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161a5fe81602985016020870161979d565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f5041544800000000000000000000606082015260806020820152600061566960808301846197c1565b60006020828403121561a66457600080fd5b815167ffffffffffffffff81111561a67b57600080fd5b82016060818503121561a68d57600080fd5b61a695619c8a565b81518060030b811461a6a657600080fd5b8152602082015167ffffffffffffffff81111561a6c257600080fd5b61a6ce86828501619d23565b602083015250604082015167ffffffffffffffff81111561a6ee57600080fd5b61a6fa86828501619d23565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161a76681602185016020870161979d565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f270000000000000000000000000000000000000000000000000000000000000060208201526000835161a95281602185016020880161979d565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161a98f81602e84016020880161979d565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161a5fe81602985016020870161979d565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a00000000000000000000000000000000000000000000000000000000000060208201526000825161aa5781602285016020870161979d565b9190910160220192915050565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825161aa9c81600e85016020870161979d565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b8082018082111561557057615570619bde565b7f53504458206c6963656e7365206964656e74696669657220000000000000000081526000835161ab8d81601885016020880161979d565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161abca81601c84016020880161979d565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161acd081846020870161979d565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161ad3781601c85016020870161979d565b91909101601c0192915050565b6000600019820361ad575761ad57619bde565b5060010190565b808202811582820484141761557057615570619bde565b6001815b600184111561adb05780850481111561ad945761ad94619bde565b600184161561ada257908102905b60019390931c92800261ad79565b935093915050565b60008261adc757506001615570565b8161add457506000615570565b816001811461adea576002811461adf45761ae10565b6001915050615570565b60ff84111561ae055761ae05619bde565b50506001821b615570565b5060208310610133831016604e8410600b841016171561ae33575081810a615570565b61ae40600019848461ad75565b806000190482111561ae545761ae54619bde565b029392505050565b6000615669838361adb8565b60008161ae775761ae77619bde565b506000190190565b6000835161ae9181846020880161979d565b7f3a00000000000000000000000000000000000000000000000000000000000000908301908152835161aecb81600184016020880161979d565b01600101949350505050565b818103600083128015838313168383128216171561892957618929619bde56fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a0033608060405234801561001057600080fd5b50604051610b4a380380610b4a83398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a4c806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bf565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610945565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e858585604051610281939291906109a2565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610945565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8858585604051610281939291906109a2565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109c5565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109e7565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff81111561087457600080fd5b8601601f8101881361088557600080fd5b803567ffffffffffffffff81111561089c57600080fd5b8860208284010111156108ae57600080fd5b959894975092955050506020019190565b6000806000606084860312156108d457600080fd5b6108dd846107f9565b92506108eb602085016107f9565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006109976080830184866108fc565b979650505050505050565b8381526040602082015260006109bc6040830184866108fc565b95945050505050565b6000602082840312156109d757600080fd5b8151801515811461065e57600080fd5b6000825160005b81811015610a0857602081860181015185830152016109ee565b50600092019182525091905056fea264697066735822122041336b1568f49be1aa3dcd208e804b373772741e9b7e1726a8869e99fced60c764736f6c634300081a003360c060405260001960025534801561001657600080fd5b50604051610f9a380380610f9a833981016040819052610035916100d8565b60016000558282826001600160a01b038316158061005a57506001600160a01b038216155b8061006c57506001600160a01b038116155b1561008a5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b031916919092161790555061011b915050565b80516001600160a01b03811681146100d357600080fd5b919050565b6000806000606084860312156100ed57600080fd5b6100f6846100bc565b9250610104602085016100bc565b9150610112604085016100bc565b90509250925092565b60805160a051610e0061019a6000396000818161012601528181610216015281816103580152818161041e01528181610541015281816106630152818161077c015281816108be015281816109840152610af101526000818160d501528181610322015281816103ef0152818161088801526109550152610e006000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80635b112591116100765780636f8b44b01161005b5780636f8b44b01461017b578063743e0c9b1461018e578063d5abeb01146101a157600080fd5b80635b112591146101485780635e3e9fef1461016857600080fd5b806302d5c899146100a8578063106e6290146100bd578063116191b6146100d057806321e093b114610121575b600080fd5b6100bb6100b6366004610bca565b6101b8565b005b6100bb6100cb366004610c5c565b6104e3565b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b6001546100f79073ffffffffffffffffffffffffffffffffffffffff1681565b6100bb610176366004610bca565b61071e565b6100bb610189366004610c8f565b610a30565b6100bb61019c366004610c8f565b610abc565b6101aa60025481565b604051908152602001610118565b6101c0610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610211576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561027f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a39190610ca8565b6102ad9086610cc1565b11156102e5576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561039c57600080fd5b505af11580156103b0573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd4915061044e907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d4a565b600060405180830381600087803b15801561046857600080fd5b505af115801561047c573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516104ca93929190610da7565b60405180910390a26104dc6001600055565b5050505050565b6104eb610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff16331461053c576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ce9190610ca8565b6105d89084610cc1565b1115610610576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156106a757600080fd5b505af11580156106bb573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161070791815260200190565b60405180910390a26107196001600055565b505050565b610726610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610777576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108099190610ca8565b6108139086610cc1565b111561084b576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561090257600080fd5b505af1158015610916573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506109b4907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d4a565b600060405180830381600087803b1580156109ce57600080fd5b505af11580156109e2573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516104ca93929190610da7565b60015473ffffffffffffffffffffffffffffffffffffffff163314610a81576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a150565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610b4a57600080fd5b505af11580156104dc573d6000803e3d6000fd5b600260005403610b9a576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff81168114610bc557600080fd5b919050565b600080600080600060808688031215610be257600080fd5b610beb86610ba1565b945060208601359350604086013567ffffffffffffffff811115610c0e57600080fd5b8601601f81018813610c1f57600080fd5b803567ffffffffffffffff811115610c3657600080fd5b886020828401011115610c4857600080fd5b959894975060200195606001359392505050565b600080600060608486031215610c7157600080fd5b610c7a84610ba1565b95602085013595506040909401359392505050565b600060208284031215610ca157600080fd5b5035919050565b600060208284031215610cba57600080fd5b5051919050565b80820180821115610cfb577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff85166020820152836040820152608060608201526000610d9c608083018486610d01565b979650505050505050565b838152604060208201526000610dc1604083018486610d01565b9594505050505056fea2646970667358221220eef04aea35a49145971cb42500074f7c44d89db08a5df2b7d071494c05cc1a2a64736f6c634300081a00336080604052348015600f57600080fd5b506001600055610d3a806100246000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610895565b6102f9565b34801561010057600080fd5b5061006a61010f366004610981565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a6b565b60405180910390a15050565b610226610372565b6000610233600285610ad5565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b7e565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610c08565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610ccb565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610ce8565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff81111561072657600080fd5b8301601f8101851361073757600080fd5b803567ffffffffffffffff81111561074e57600080fd5b85602082840101111561076057600080fd5b6020919091019590945092505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e6576107e6610770565b604052919050565b600082601f8301126107ff57600080fd5b813567ffffffffffffffff81111561081957610819610770565b61084a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079f565b81815284602083860101111561085f57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087c565b6000806000606084860312156108aa57600080fd5b833567ffffffffffffffff8111156108c157600080fd5b6108cd868287016107ee565b9350506020840135915060408401356108e58161087c565b809150509250925092565b600067ffffffffffffffff82111561090a5761090a610770565b5060051b60200190565b600082601f83011261092557600080fd5b8135610938610933826108f0565b61079f565b8082825260208201915060208360051b86010192508583111561095a57600080fd5b602085015b8381101561097757803583526020928301920161095f565b5095945050505050565b60008060006060848603121561099657600080fd5b833567ffffffffffffffff8111156109ad57600080fd5b8401601f810186136109be57600080fd5b80356109cc610933826108f0565b8082825260208201915060208360051b8501019250888311156109ee57600080fd5b602084015b83811015610a3057803567ffffffffffffffff811115610a1257600080fd5b610a218b6020838901016107ee565b845250602092830192016109f3565b509550505050602084013567ffffffffffffffff811115610a5057600080fd5b610a5c86828701610914565b9250506106f36040850161088a565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610b0b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b2b578181015183820152602001610b13565b50506000910152565b60008151808452610b4c816020860160208601610b10565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610bb360a0830186610b34565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610bfe578151865260209586019590910190600101610be0565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610c86858351610b34565b94506020938401939190910190600101610c4c565b505050508281036040840152610cb18186610bcc565b915050610cc2606083018415159052565b95945050505050565b600060208284031215610cdd57600080fd5b81516104f98161087c565b60008251610cfa818460208701610b10565b919091019291505056fea2646970667358221220556072e1abafc3c4063b8cce832228b4f309b93726aaa6a6dfab20cb880c6d1864736f6c634300081a0033a2646970667358221220486bd4f3de101e9ee6588242afd1e36e71abd1e83c261757d54bc768d6913e5164736f6c634300081a0033", } // GatewayEVMTestABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/gatewayevmechidnatest.sol/gatewayevmechidnatest.go b/v2/pkg/gatewayevmechidnatest.sol/gatewayevmechidnatest.go index 94643931..d919fd17 100644 --- a/v2/pkg/gatewayevmechidnatest.sol/gatewayevmechidnatest.go +++ b/v2/pkg/gatewayevmechidnatest.sol/gatewayevmechidnatest.go @@ -32,7 +32,7 @@ var ( // GatewayEVMEchidnaTestMetaData contains all meta data concerning the GatewayEVMEchidnaTest contract. var GatewayEVMEchidnaTestMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"UPGRADE_INTERFACE_VERSION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"call\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"custody\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"echidnaCaller\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"execute\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"executeRevert\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"executeWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_tssAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_zetaToken\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revertWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setConnector\",\"inputs\":[{\"name\":\"_zetaConnector\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setCustody\",\"inputs\":[{\"name\":\"_custody\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testERC20\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractTestERC20\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testExecuteWithERC20\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"tssAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"zetaConnector\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"zetaToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ERC1967InvalidImplementation\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC1967NonPayable\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OwnableInvalidOwner\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"UUPSUnauthorizedCallContext\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UUPSUnsupportedProxiableUUID\",\"inputs\":[{\"name\":\"slot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x60a060405230608052600580546001600160a01b031916331790553480156200002757600080fd5b506200003262000153565b600554600180546001600160a01b039092166001600160a01b0319928316179055600280546101239216919091179055604051620000709062000207565b60408082526004908201819052631d195cdd60e21b606083015260806020830181905282015263151154d560e21b60a082015260c001604051809103906000f080158015620000c3573d6000803e3d6000fd5b50600480546001600160a01b0319166001600160a01b0392831617905560015460405130929190911690620000f89062000215565b6001600160a01b03928316815291166020820152604001604051809103906000f0801580156200012c573d6000803e3d6000fd5b50600080546001600160a01b0319166001600160a01b039290921691909117905562000223565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620001a45760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620002045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b610cca8062002a2783390190565b610b3580620036f183390190565b6080516127da6200024d600039600081816116ad015281816116d60152611b1c01526127da6000f3fe6080604052600436106101965760003560e01c80635b112591116100e1578063ad3cb1cc1161008a578063dda79b7511610064578063dda79b7514610475578063f2fde38b14610495578063f340fa01146104b5578063f45346dc146104c857600080fd5b8063ad3cb1cc146103ec578063ae7a3a6f14610435578063b8969bd41461045557600080fd5b806381100bf0116100bb57806381100bf01461036f5780638c6f037f1461038f5780638da5cb5b146103af57600080fd5b80635b1125911461031a5780636ab90f9b1461033a578063715018a61461035a57600080fd5b80633c2f05a8116101435780635131ab591161011d5780635131ab59146102b757806352d1902d146102d757806357bec62f146102fa57600080fd5b80633c2f05a814610264578063485cc955146102845780634f1ef286146102a457600080fd5b806321e093b11161017457806321e093b11461020657806329c59b5d1461023e57806335c018db1461025157600080fd5b806310188aef1461019b5780631b8b921d146101bd5780631cff79cd146101dd575b600080fd5b3480156101a757600080fd5b506101bb6101b6366004612295565b6104e8565b005b3480156101c957600080fd5b506101bb6101d83660046122f9565b6105e9565b6101f06101eb3660046122f9565b61063b565b6040516101fd91906123ba565b60405180910390f35b34801561021257600080fd5b50600354610226906001600160a01b031681565b6040516001600160a01b0390911681526020016101fd565b6101bb61024c3660046122f9565b6106e0565b6101bb61025f3660046122f9565b610805565b34801561027057600080fd5b50600454610226906001600160a01b031681565b34801561029057600080fd5b506101bb61029f3660046123cd565b61099d565b6101bb6102b236600461242f565b610bca565b3480156102c357600080fd5b506101bb6102d236600461250f565b610be9565b3480156102e357600080fd5b506102ec610ef0565b6040519081526020016101fd565b34801561030657600080fd5b50600254610226906001600160a01b031681565b34801561032657600080fd5b50600154610226906001600160a01b031681565b34801561034657600080fd5b506101bb61035536600461257e565b610f1f565b34801561036657600080fd5b506101bb611050565b34801561037b57600080fd5b50600554610226906001600160a01b031681565b34801561039b57600080fd5b506101bb6103aa3660046125d8565b611064565b3480156103bb57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610226565b3480156103f857600080fd5b506101f06040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b34801561044157600080fd5b506101bb610450366004612295565b611101565b34801561046157600080fd5b506101bb61047036600461250f565b611202565b34801561048157600080fd5b50600054610226906001600160a01b031681565b3480156104a157600080fd5b506101bb6104b0366004612295565b6113a6565b6101bb6104c3366004612295565b611402565b3480156104d457600080fd5b506101bb6104e336600461262a565b611527565b6001546001600160a01b0316331461052c576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b03161561056f576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0381166105af576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3848460405161062e9291906126af565b60405180910390a3505050565b6001546060906001600160a01b03163314610682576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061068f8585856115d2565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f3486866040516106ce939291906126cb565b60405180910390a290505b9392505050565b3460000361071a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114610767576040519150601f19603f3d011682016040523d82523d6000602084013e61076c565b606091505b50909150508015156000036107ad576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a434600087876040516107f794939291906126e5565b60405180910390a350505050565b6001546001600160a01b03163314610849576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610897576040519150601f19603f3d011682016040523d82523d6000602084013e61089c565b606091505b5091509150816108d8576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061091f90879087906004016126af565b600060405180830381600087803b15801561093957600080fd5b505af115801561094d573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161098e939291906126cb565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109e85750825b905060008267ffffffffffffffff166001148015610a055750303b155b905081158015610a13575080155b15610a4a576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610aab5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610ac857506001600160a01b038616155b15610aff576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b0833611679565b610b1061168a565b610b18611692565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610bc15784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610bd26116a2565b610bdb82611772565b610be5828261177a565b5050565b610bf161189e565b6000546001600160a01b03163314801590610c1757506002546001600160a01b03163314155b15610c4e576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c88576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c92858561191f565b610cc8576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610d30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d54919061270e565b610d8a576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d978584846115d2565b9050610da3868661191f565b610dd9576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610e39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e5d9190612730565b90508015610e6f57610e6f87826119af565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610eb6939291906126cb565b60405180910390a35050610ee960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610efa611b11565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600480546040517f40c10f190000000000000000000000000000000000000000000000000000000081523092810192909252602482018590526001600160a01b0316906340c10f1990604401600060405180830381600087803b158015610f8557600080fd5b505af1158015610f99573d6000803e3d6000fd5b5050600454610fb792506001600160a01b0316905085858585610be9565b600480546040517f70a0823100000000000000000000000000000000000000000000000000000000815230928101929092526001600160a01b0316906370a0823190602401602060405180830381865afa158015611019573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103d9190612730565b1561104a5761104a612749565b50505050565b611058611b73565b6110626000611be7565b565b8360000361109e576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110a9338486611c70565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4868686866040516110f294939291906126e5565b60405180910390a35050505050565b6001546001600160a01b03163314611145576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615611188576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0381166111c8576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b61120a61189e565b6000546001600160a01b0316331480159061123057506002546001600160a01b03163314155b15611267576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036112a1576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112b56001600160a01b0386168585611dbb565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b5906112fc90859085906004016126af565b600060405180830381600087803b15801561131657600080fd5b505af115801561132a573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda7858585604051611375939291906126cb565b60405180910390a3610ee960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6113ae611b73565b6001600160a01b0381166113f6576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6113ff81611be7565b50565b3460000361143c576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114611489576040519150601f19603f3d011682016040523d82523d6000602084013e61148e565b606091505b50909150508015156000036114cf576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b81600003611561576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61156c338284611c70565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4848460405161062e9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b03163486866040516115f2929190612778565b60006040518083038185875af1925050503d806000811461162f576040519150601f19603f3d011682016040523d82523d6000602084013e611634565b606091505b509150915081611670576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b611681611e2f565b6113ff81611e96565b611062611e2f565b61169a611e2f565b611062611e9e565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061173b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661172f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15611062576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ff611b73565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156117f2575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526117ef91810190612730565b60015b611833576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024016113ed565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461188f576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016113ed565b6118998383611ea6565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611919576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af115801561198b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d9919061270e565b6003546001600160a01b0390811690831603611ad1576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611a31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a55919061270e565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611ab557600080fd5b505af1158015611ac9573d6000803e3d6000fd5b505050505050565b600054610be5906001600160a01b03848116911683611dbb565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611062576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33611ba57f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614611062576040517f118cdaa70000000000000000000000000000000000000000000000000000000081523360048201526024016113ed565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611d9f57611c9b6001600160a01b038316843084611efc565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611d07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2b919061270e565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611d8b57600080fd5b505af1158015610bc1573d6000803e3d6000fd5b600054611899906001600160a01b038481169186911684611efc565b6040516001600160a01b0383811660248301526044820183905261189991859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611f35565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611062576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ae611e2f565b611aeb611e2f565b611eaf82611fb1565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611ef4576118998282612059565b610be56120c6565b6040516001600160a01b03848116602483015283811660448301526064820183905261104a9186918216906323b872dd90608401611de8565b6000611f4a6001600160a01b038416836120fe565b90508051600014158015611f6f575080806020019051810190611f6d919061270e565b155b15611899576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016113ed565b806001600160a01b03163b600003612000576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016113ed565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516120769190612788565b600060405180830381855af49150503d80600081146120b1576040519150601f19603f3d011682016040523d82523d6000602084013e6120b6565b606091505b509150915061167085838361210c565b3415611062576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60606106d983836000612181565b6060826121215761211c82612237565b6106d9565b815115801561213857506001600160a01b0384163b155b1561217a576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016113ed565b50806106d9565b6060814710156121bf576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016113ed565b600080856001600160a01b031684866040516121db9190612788565b60006040518083038185875af1925050503d8060008114612218576040519150601f19603f3d011682016040523d82523d6000602084013e61221d565b606091505b509150915061222d86838361210c565b9695505050505050565b8051156122475780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b038116811461229057600080fd5b919050565b6000602082840312156122a757600080fd5b6106d982612279565b60008083601f8401126122c257600080fd5b50813567ffffffffffffffff8111156122da57600080fd5b6020830191508360208285010111156122f257600080fd5b9250929050565b60008060006040848603121561230e57600080fd5b61231784612279565b9250602084013567ffffffffffffffff81111561233357600080fd5b61233f868287016122b0565b9497909650939450505050565b60005b8381101561236757818101518382015260200161234f565b50506000910152565b6000815180845261238881602086016020860161234c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006106d96020830184612370565b600080604083850312156123e057600080fd5b6123e983612279565b91506123f760208401612279565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561244257600080fd5b61244b83612279565b9150602083013567ffffffffffffffff8082111561246857600080fd5b818501915085601f83011261247c57600080fd5b81358181111561248e5761248e612400565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156124d4576124d4612400565b816040528281528860208487010111156124ed57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060008060006080868803121561252757600080fd5b61253086612279565b945061253e60208701612279565b935060408601359250606086013567ffffffffffffffff81111561256157600080fd5b61256d888289016122b0565b969995985093965092949392505050565b6000806000806060858703121561259457600080fd5b61259d85612279565b935060208501359250604085013567ffffffffffffffff8111156125c057600080fd5b6125cc878288016122b0565b95989497509550505050565b6000806000806000608086880312156125f057600080fd5b6125f986612279565b94506020860135935061260e60408701612279565b9250606086013567ffffffffffffffff81111561256157600080fd5b60008060006060848603121561263f57600080fd5b61264884612279565b92506020840135915061265d60408501612279565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006126c3602083018486612666565b949350505050565b838152604060208201526000611670604083018486612666565b8481526001600160a01b038416602082015260606040820152600061222d606083018486612666565b60006020828403121561272057600080fd5b815180151581146106d957600080fd5b60006020828403121561274257600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b8183823760009101908152919050565b6000825161279a81846020870161234c565b919091019291505056fea2646970667358221220ccaa44ae6a6f89f20a2cc4669af6715a57945a17c158cfad4882682113e1253764736f6c6343000815003360806040523480156200001157600080fd5b5060405162000cca38038062000cca833981016040819052620000349162000123565b818160036200004483826200021c565b5060046200005382826200021c565b5050505050620002e8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008657600080fd5b81516001600160401b0380821115620000a357620000a36200005e565b604051601f8301601f19908116603f01168101908282118183101715620000ce57620000ce6200005e565b81604052838152602092508683858801011115620000eb57600080fd5b600091505b838210156200010f5785820183015181830184015290820190620000f0565b600093810190920192909252949350505050565b600080604083850312156200013757600080fd5b82516001600160401b03808211156200014f57600080fd5b6200015d8683870162000074565b935060208501519150808211156200017457600080fd5b50620001838582860162000074565b9150509250929050565b600181811c90821680620001a257607f821691505b602082108103620001c357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021757600081815260208120601f850160051c81016020861015620001f25750805b601f850160051c820191505b818110156200021357828155600101620001fe565b5050505b505050565b81516001600160401b038111156200023857620002386200005e565b62000250816200024984546200018d565b84620001c9565b602080601f8311600181146200028857600084156200026f5750858301515b600019600386901b1c1916600185901b17855562000213565b600085815260208120601f198616915b82811015620002b95788860151825594840194600190910190840162000298565b5085821015620002d85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6109d280620002f86000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108ba565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dc565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f39061090f565b80601f016020809104026020016040519081016040528092919081815260200182805461021f9061090f565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f39061090f565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610962565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b600060208083528351808285015260005b818110156107ec578581018301518582016040015282016107d0565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b9150604084013590509250925092565b6000602082840312156108cc57600080fd5b6108d58261082b565b9392505050565b600080604083850312156108ef57600080fd5b6108f88361082b565b91506109066020840161082b565b90509250929050565b600181811c9082168061092357607f821691505b60208210810361095c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220556869bd33d6741656e444b7d99e56e0c3a9495b8426ba227d4f4af169660e8264736f6c63430008150033608060405234801561001057600080fd5b50604051610b35380380610b3583398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a37806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bd565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610942565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102819392919061098d565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610942565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102819392919061098d565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109b0565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109d2565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff8082111561087557600080fd5b818801915088601f83011261088957600080fd5b81358181111561089857600080fd5b8960208285010111156108aa57600080fd5b9699959850939650602001949392505050565b6000806000606084860312156108d257600080fd5b6108db846107f9565b92506108e9602085016107f9565b9150604084013590509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109826080830184866108f9565b979650505050505050565b8381526040602082015260006109a76040830184866108f9565b95945050505050565b6000602082840312156109c257600080fd5b8151801515811461065e57600080fd5b6000825160005b818110156109f357602081860181015185830152016109d9565b50600092019182525091905056fea2646970667358221220add5c975d5cd9c8b4afe35ea370aed6f4c4571bcc8cfe91b243cc9add705e36664736f6c63430008150033", + Bin: "0x60a060405230608052600580546001600160a01b0319163317905534801561002657600080fd5b5061002f610149565b600554600180546001600160a01b039092166001600160a01b031992831617905560028054610123921691909117905560405161006b906101fb565b60408082526004908201819052631d195cdd60e21b606083015260806020830181905282015263151154d560e21b60a082015260c001604051809103906000f0801580156100bd573d6000803e3d6000fd5b50600480546001600160a01b0319166001600160a01b03928316179055600154604051309291909116906100f090610208565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015610123573d6000803e3d6000fd5b50600080546001600160a01b0319166001600160a01b0392909216919091179055610215565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156101995760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101f85780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b610c9f80612a3f83390190565b610b4a806136de83390190565b60805161280161023e600039600081816116ad015281816116d60152611b1c01526128016000f3fe6080604052600436106101965760003560e01c80635b112591116100e1578063ad3cb1cc1161008a578063dda79b7511610064578063dda79b7514610475578063f2fde38b14610495578063f340fa01146104b5578063f45346dc146104c857600080fd5b8063ad3cb1cc146103ec578063ae7a3a6f14610435578063b8969bd41461045557600080fd5b806381100bf0116100bb57806381100bf01461036f5780638c6f037f1461038f5780638da5cb5b146103af57600080fd5b80635b1125911461031a5780636ab90f9b1461033a578063715018a61461035a57600080fd5b80633c2f05a8116101435780635131ab591161011d5780635131ab59146102b757806352d1902d146102d757806357bec62f146102fa57600080fd5b80633c2f05a814610264578063485cc955146102845780634f1ef286146102a457600080fd5b806321e093b11161017457806321e093b11461020657806329c59b5d1461023e57806335c018db1461025157600080fd5b806310188aef1461019b5780631b8b921d146101bd5780631cff79cd146101dd575b600080fd5b3480156101a757600080fd5b506101bb6101b6366004612295565b6104e8565b005b3480156101c957600080fd5b506101bb6101d83660046122f9565b6105e9565b6101f06101eb3660046122f9565b61063b565b6040516101fd91906123ba565b60405180910390f35b34801561021257600080fd5b50600354610226906001600160a01b031681565b6040516001600160a01b0390911681526020016101fd565b6101bb61024c3660046122f9565b6106e0565b6101bb61025f3660046122f9565b610805565b34801561027057600080fd5b50600454610226906001600160a01b031681565b34801561029057600080fd5b506101bb61029f3660046123cd565b61099d565b6101bb6102b236600461242f565b610bca565b3480156102c357600080fd5b506101bb6102d2366004612536565b610be9565b3480156102e357600080fd5b506102ec610ef0565b6040519081526020016101fd565b34801561030657600080fd5b50600254610226906001600160a01b031681565b34801561032657600080fd5b50600154610226906001600160a01b031681565b34801561034657600080fd5b506101bb6103553660046125a5565b610f1f565b34801561036657600080fd5b506101bb611050565b34801561037b57600080fd5b50600554610226906001600160a01b031681565b34801561039b57600080fd5b506101bb6103aa3660046125ff565b611064565b3480156103bb57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610226565b3480156103f857600080fd5b506101f06040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b34801561044157600080fd5b506101bb610450366004612295565b611101565b34801561046157600080fd5b506101bb610470366004612536565b611202565b34801561048157600080fd5b50600054610226906001600160a01b031681565b3480156104a157600080fd5b506101bb6104b0366004612295565b6113a6565b6101bb6104c3366004612295565b611402565b3480156104d457600080fd5b506101bb6104e3366004612651565b611527565b6001546001600160a01b0316331461052c576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b03161561056f576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0381166105af576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3848460405161062e9291906126d6565b60405180910390a3505050565b6001546060906001600160a01b03163314610682576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061068f8585856115d2565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f3486866040516106ce939291906126f2565b60405180910390a290505b9392505050565b3460000361071a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114610767576040519150601f19603f3d011682016040523d82523d6000602084013e61076c565b606091505b50909150508015156000036107ad576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a434600087876040516107f7949392919061270c565b60405180910390a350505050565b6001546001600160a01b03163314610849576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610897576040519150601f19603f3d011682016040523d82523d6000602084013e61089c565b606091505b5091509150816108d8576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061091f90879087906004016126d6565b600060405180830381600087803b15801561093957600080fd5b505af115801561094d573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161098e939291906126f2565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109e85750825b905060008267ffffffffffffffff166001148015610a055750303b155b905081158015610a13575080155b15610a4a576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610aab5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610ac857506001600160a01b038616155b15610aff576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b0833611679565b610b1061168a565b610b18611692565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610bc15784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610bd26116a2565b610bdb82611772565b610be5828261177a565b5050565b610bf161189e565b6000546001600160a01b03163314801590610c1757506002546001600160a01b03163314155b15610c4e576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c88576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c92858561191f565b610cc8576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610d30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d549190612735565b610d8a576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d978584846115d2565b9050610da3868661191f565b610dd9576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610e39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e5d9190612757565b90508015610e6f57610e6f87826119af565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610eb6939291906126f2565b60405180910390a35050610ee960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610efa611b11565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600480546040517f40c10f190000000000000000000000000000000000000000000000000000000081523092810192909252602482018590526001600160a01b0316906340c10f1990604401600060405180830381600087803b158015610f8557600080fd5b505af1158015610f99573d6000803e3d6000fd5b5050600454610fb792506001600160a01b0316905085858585610be9565b600480546040517f70a0823100000000000000000000000000000000000000000000000000000000815230928101929092526001600160a01b0316906370a0823190602401602060405180830381865afa158015611019573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103d9190612757565b1561104a5761104a612770565b50505050565b611058611b73565b6110626000611be7565b565b8360000361109e576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110a9338486611c70565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4868686866040516110f2949392919061270c565b60405180910390a35050505050565b6001546001600160a01b03163314611145576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615611188576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0381166111c8576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b61120a61189e565b6000546001600160a01b0316331480159061123057506002546001600160a01b03163314155b15611267576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036112a1576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112b56001600160a01b0386168585611dbb565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b5906112fc90859085906004016126d6565b600060405180830381600087803b15801561131657600080fd5b505af115801561132a573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda7858585604051611375939291906126f2565b60405180910390a3610ee960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6113ae611b73565b6001600160a01b0381166113f6576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6113ff81611be7565b50565b3460000361143c576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114611489576040519150601f19603f3d011682016040523d82523d6000602084013e61148e565b606091505b50909150508015156000036114cf576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b81600003611561576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61156c338284611c70565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4848460405161062e9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b03163486866040516115f292919061279f565b60006040518083038185875af1925050503d806000811461162f576040519150601f19603f3d011682016040523d82523d6000602084013e611634565b606091505b509150915081611670576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b611681611e2f565b6113ff81611e96565b611062611e2f565b61169a611e2f565b611062611e9e565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061173b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661172f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15611062576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ff611b73565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156117f2575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526117ef91810190612757565b60015b611833576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024016113ed565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461188f576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016113ed565b6118998383611ea6565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611919576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af115801561198b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d99190612735565b6003546001600160a01b0390811690831603611ad1576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611a31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a559190612735565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611ab557600080fd5b505af1158015611ac9573d6000803e3d6000fd5b505050505050565b600054610be5906001600160a01b03848116911683611dbb565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611062576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33611ba57f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614611062576040517f118cdaa70000000000000000000000000000000000000000000000000000000081523360048201526024016113ed565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611d9f57611c9b6001600160a01b038316843084611efc565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611d07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2b9190612735565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611d8b57600080fd5b505af1158015610bc1573d6000803e3d6000fd5b600054611899906001600160a01b038481169186911684611efc565b6040516001600160a01b0383811660248301526044820183905261189991859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611f35565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611062576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ae611e2f565b611aeb611e2f565b611eaf82611fb1565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611ef4576118998282612059565b610be56120c6565b6040516001600160a01b03848116602483015283811660448301526064820183905261104a9186918216906323b872dd90608401611de8565b6000611f4a6001600160a01b038416836120fe565b90508051600014158015611f6f575080806020019051810190611f6d9190612735565b155b15611899576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016113ed565b806001600160a01b03163b600003612000576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016113ed565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161207691906127af565b600060405180830381855af49150503d80600081146120b1576040519150601f19603f3d011682016040523d82523d6000602084013e6120b6565b606091505b509150915061167085838361210c565b3415611062576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60606106d983836000612181565b6060826121215761211c82612237565b6106d9565b815115801561213857506001600160a01b0384163b155b1561217a576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016113ed565b50806106d9565b6060814710156121bf576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016113ed565b600080856001600160a01b031684866040516121db91906127af565b60006040518083038185875af1925050503d8060008114612218576040519150601f19603f3d011682016040523d82523d6000602084013e61221d565b606091505b509150915061222d86838361210c565b9695505050505050565b8051156122475780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b038116811461229057600080fd5b919050565b6000602082840312156122a757600080fd5b6106d982612279565b60008083601f8401126122c257600080fd5b50813567ffffffffffffffff8111156122da57600080fd5b6020830191508360208285010111156122f257600080fd5b9250929050565b60008060006040848603121561230e57600080fd5b61231784612279565b9250602084013567ffffffffffffffff81111561233357600080fd5b61233f868287016122b0565b9497909650939450505050565b60005b8381101561236757818101518382015260200161234f565b50506000910152565b6000815180845261238881602086016020860161234c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006106d96020830184612370565b600080604083850312156123e057600080fd5b6123e983612279565b91506123f760208401612279565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561244257600080fd5b61244b83612279565b9150602083013567ffffffffffffffff81111561246757600080fd5b8301601f8101851361247857600080fd5b803567ffffffffffffffff81111561249257612492612400565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156124fe576124fe612400565b60405281815282820160200187101561251657600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008060008060006080868803121561254e57600080fd5b61255786612279565b945061256560208701612279565b935060408601359250606086013567ffffffffffffffff81111561258857600080fd5b612594888289016122b0565b969995985093965092949392505050565b600080600080606085870312156125bb57600080fd5b6125c485612279565b935060208501359250604085013567ffffffffffffffff8111156125e757600080fd5b6125f3878288016122b0565b95989497509550505050565b60008060008060006080868803121561261757600080fd5b61262086612279565b94506020860135935061263560408701612279565b9250606086013567ffffffffffffffff81111561258857600080fd5b60008060006060848603121561266657600080fd5b61266f84612279565b92506020840135915061268460408501612279565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006126ea60208301848661268d565b949350505050565b83815260406020820152600061167060408301848661268d565b8481526001600160a01b038416602082015260606040820152600061222d60608301848661268d565b60006020828403121561274757600080fd5b815180151581146106d957600080fd5b60006020828403121561276957600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b8183823760009101908152919050565b600082516127c181846020870161234c565b919091019291505056fea26469706673582212208320883bd4bfae2ca3d75ca12c286d744989c1c031265ae8356454d2eac5070964736f6c634300081a0033608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a0033608060405234801561001057600080fd5b50604051610b4a380380610b4a83398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a4c806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bf565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610945565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e858585604051610281939291906109a2565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610945565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8858585604051610281939291906109a2565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109c5565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109e7565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff81111561087457600080fd5b8601601f8101881361088557600080fd5b803567ffffffffffffffff81111561089c57600080fd5b8860208284010111156108ae57600080fd5b959894975092955050506020019190565b6000806000606084860312156108d457600080fd5b6108dd846107f9565b92506108eb602085016107f9565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006109976080830184866108fc565b979650505050505050565b8381526040602082015260006109bc6040830184866108fc565b95945050505050565b6000602082840312156109d757600080fd5b8151801515811461065e57600080fd5b6000825160005b81811015610a0857602081860181015185830152016109ee565b50600092019182525091905056fea264697066735822122041336b1568f49be1aa3dcd208e804b373772741e9b7e1726a8869e99fced60c764736f6c634300081a0033", } // GatewayEVMEchidnaTestABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/gatewayevmupgrade.t.sol/gatewayevmuupsupgradetest.go b/v2/pkg/gatewayevmupgrade.t.sol/gatewayevmuupsupgradetest.go index d4c5ef0b..995d2916 100644 --- a/v2/pkg/gatewayevmupgrade.t.sol/gatewayevmuupsupgradetest.go +++ b/v2/pkg/gatewayevmupgrade.t.sol/gatewayevmuupsupgradetest.go @@ -50,7 +50,7 @@ type StdInvariantFuzzSelector struct { // GatewayEVMUUPSUpgradeTestMetaData contains all meta data concerning the GatewayEVMUUPSUpgradeTest contract. var GatewayEVMUUPSUpgradeTestMetaData = &bind.MetaData{ ABI: "[{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testUpgradeAndForwardCallToReceivePayable\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedV2\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedERC20\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"destination\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNoParams\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNonPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strs\",\"type\":\"string[]\",\"indexed\":false,\"internalType\":\"string[]\"},{\"name\":\"nums\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"str\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"num\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedRevert\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x6080604052600c8054600160ff199182168117909255601f8054909116909117905534801561002d57600080fd5b5061b285806200003e6000396000f3fe60806040523480156200001157600080fd5b5060043610620000fd5760003560e01c806385226c811162000097578063b5508aa9116200006e578063b5508aa914620001bc578063ba414fa614620001c6578063e20c9f7114620001e1578063fa7626d414620001eb57600080fd5b806385226c811462000180578063916a17c61462000199578063b0464fdc14620001b257600080fd5b80633e5e3c2311620000d85780633e5e3c2314620001495780633f7286f4146200015357806366d9a9a0146200015d5780637a380ebf146200017657600080fd5b80630a9254e414620001025780631ed7831c146200010e5780632ade38801462000130575b600080fd5b6200010c620001f9565b005b6200011862000ab8565b60405162000127919062006676565b60405180910390f35b6200013a62000b1c565b60405162000127919062006719565b6200011862000c6a565b6200011862000ccc565b6200016762000d2e565b6040516200012791906200687a565b6200010c62000ebc565b6200018a620015a2565b60405162000127919062006923565b620001a36200167c565b604051620001279190620069a7565b620001a36200177b565b6200018a6200187a565b620001d062001954565b604051901515815260200162000127565b6200011862001a2c565b601f54620001d09060ff1681565b602680547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602780548216611234179055602880549091166156781790556040516200024d9062006582565b60408082526004908201527f746573740000000000000000000000000000000000000000000000000000000060608201526080602082018190526003908201527f54544b000000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f080158015620002d3573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516200031a9062006582565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f0801580156200039f573d6000803e3d6000fd5b50602580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600e81527f4761746577617945564d2e736f6c00000000000000000000000000000000000060208201526028549151919093166024820152604481019190915262000487919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc9550000000000000000000000000000000000000000000000000000000017905262001a8e565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff00000000000000000000000000000000000000009091168117909155602854604051919216906200050d9062006590565b6001600160a01b03928316815291166020820152604001604051809103906000f08015801562000541573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055602054602554602854604051928416939182169291169062000598906200659e565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015620005d5573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516200061c90620065ac565b604051809103906000f08015801562000639573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556028546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b158015620006e657600080fd5b505af1158015620006fb573d6000803e3d6000fd5b50506028546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b1580156200077257600080fd5b505af115801562000787573d6000803e3d6000fd5b50506020546022546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b158015620007ee57600080fd5b505af115801562000803573d6000803e3d6000fd5b50506020546023546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b1580156200086a57600080fd5b505af11580156200087f573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620008e257600080fd5b505af1158015620008f7573d6000803e3d6000fd5b5050602480546026546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f4240938101939093521692506340c10f199150604401600060405180830381600087803b1580156200096957600080fd5b505af11580156200097e573d6000803e3d6000fd5b5050602480546022546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a1209381019390935216925063a9059cbb91506044016020604051808303816000875af1158015620009f5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a1b919062006a38565b506028546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b15801562000a9d57600080fd5b505af115801562000ab2573d6000803e3d6000fd5b50505050565b6060601680548060200260200160405190810160405280929190818152602001828054801562000b1257602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000af3575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101562000c6157600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101562000c4957838290600052602060002001805462000bb59062006a5c565b80601f016020809104026020016040519081016040528092919081815260200182805462000be39062006a5c565b801562000c345780601f1062000c085761010080835404028352916020019162000c34565b820191906000526020600020905b81548152906001019060200180831162000c1657829003601f168201915b50505050508152602001906001019062000b93565b50505050815250508152602001906001019062000b40565b50505050905090565b6060601880548060200260200160405190810160405280929190818152602001828054801562000b12576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000af3575050505050905090565b6060601780548060200260200160405190810160405280929190818152602001828054801562000b12576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000af3575050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101562000c61578382906000526020600020906002020160405180604001604052908160008201805462000d889062006a5c565b80601f016020809104026020016040519081016040528092919081815260200182805462000db69062006a5c565b801562000e075780601f1062000ddb5761010080835404028352916020019162000e07565b820191906000526020600020905b81548152906001019060200180831162000de957829003601f168201915b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801562000ea357602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162000e4f5790505b5050505050815250508152602001906001019062000d52565b60208054604080517fdda79b7500000000000000000000000000000000000000000000000000000000815290516000936001600160a01b039093169263dda79b7592600480820193918290030181865afa15801562000f1f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f45919062006aab565b60208054604080517f5b11259100000000000000000000000000000000000000000000000000000000815290519394506000936001600160a01b0390921692635b112591926004808401938290030181865afa15801562000faa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000fd0919062006aab565b604080518082018252600f81527f48656c6c6f2c20466f756e647279210000000000000000000000000000000000602080830191909152601f5483518085018552601981527f4761746577617945564d55706772616465546573742e736f6c00000000000000818401528451928301909452600082526026549495509193602a93600193670de0b6b3a7640000936200107c936001600160a01b03610100909304831693921662001ab1565b6000848484604051602401620010959392919062006ad6565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f9700000000000000000000000000000000000000000000000000000000179052601f5460215491517ff30c7ba30000000000000000000000000000000000000000000000000000000081529293506001600160a01b03610100909104811692737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba3926200115d929116908790879060040162006b02565b600060405180830381600087803b1580156200117857600080fd5b505af11580156200118d573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156200122057600080fd5b505af115801562001235573d6000803e3d6000fd5b50506020546040517f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa93506200128092506001600160a01b039091169086908a908a908a9062006b2c565b60405180910390a16020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156200131757600080fd5b505af11580156200132c573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507f373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e8546915062001373908690869062006b6f565b60405180910390a26028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620013ee57600080fd5b505af115801562001403573d6000803e3d6000fd5b50506021546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169450631cff79cd935087926200145792911690879060040162006b8a565b60006040518083038185885af115801562001476573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052620014a1919081019062006ca9565b5060208054604080517fdda79b75000000000000000000000000000000000000000000000000000000008152905162001533938c936001600160a01b03169263dda79b7592600480830193928290030181865afa15801562001507573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200152d919062006aab565b62001ad1565b60208054604080517f5b112591000000000000000000000000000000000000000000000000000000008152905162001598938b936001600160a01b031692635b11259192600480830193928290030181865afa15801562001507573d6000803e3d6000fd5b5050505050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101562000c61578382906000526020600020018054620015e89062006a5c565b80601f0160208091040260200160405190810160405280929190818152602001828054620016169062006a5c565b8015620016675780601f106200163b5761010080835404028352916020019162001667565b820191906000526020600020905b8154815290600101906020018083116200164957829003601f168201915b505050505081526020019060010190620015c6565b6060601d805480602002602001604051908101604052809291908181526020016000905b8282101562000c615760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200176257602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116200170e5790505b50505050508152505081526020019060010190620016a0565b6060601c805480602002602001604051908101604052809291908181526020016000905b8282101562000c615760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200186157602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116200180d5790505b505050505081525050815260200190600101906200179f565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101562000c61578382906000526020600020018054620018c09062006a5c565b80601f0160208091040260200160405190810160405280929190818152602001828054620018ee9062006a5c565b80156200193f5780601f1062001913576101008083540402835291602001916200193f565b820191906000526020600020905b8154815290600101906020018083116200192157829003601f168201915b5050505050815260200190600101906200189e565b60085460009060ff16156200196d575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015620019ff573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a25919062006ce2565b1415905090565b6060601580548060200260200160405190810160405280929190818152602001828054801562000b12576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000af3575050505050905090565b600062001a9a620065ba565b62001aa784848362001b63565b9150505b92915050565b62001abb620065ba565b62001aca858585848662001be4565b5050505050565b6040517f515361f60000000000000000000000000000000000000000000000000000000081526001600160a01b03808416600483015282166024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063515361f69060440160006040518083038186803b15801562001b4657600080fd5b505afa15801562001b5b573d6000803e3d6000fd5b505050505050565b60008062001b72858462001cef565b905062001bd96040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f7879000000815250828660405160200162001bc392919062006b8a565b6040516020818303038152906040528562001cfd565b9150505b9392505050565b6040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201528190737109709ecfa91a80626ff3989d68f67f5b1dd12d9081906306447d5690602401600060405180830381600087803b15801562001c5757600080fd5b505af192505050801562001c69575060015b62001c825762001c7c8787878762001d31565b62001ce6565b62001c908787878762001d31565b806001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562001ccc57600080fd5b505af115801562001ce1573d6000803e3d6000fd5b505050505b50505050505050565b600062001bdd838362001d4e565b60c0810151516000901562001d255762001d1d84848460c0015162001d6d565b905062001bdd565b62001d1d848462001f29565b600062001d3f848362002020565b905062001aca8582856200202e565b600062001d5c838362002416565b62001bdd8383602001518462001cfd565b60008062001d7a62002428565b9050600062001d8a868362002500565b9050600062001da38260600151836020015185620029d5565b9050600062001db58383898962002bff565b9050600062001dc48262003b5f565b602081015181519192509060030b1562001e3c5789826040015160405160200162001df192919062006cfc565b60408051601f19818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825262001e339160040162006d81565b60405180910390fd5b600062001e816040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a20000000000000000000000081525083600162003d43565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d9062001ed690849060040162006d81565b602060405180830381865afa15801562001ef4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001f1a919062006aab565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc9259062001f8090879060040162006d81565b600060405180830381865afa15801562001f9e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001fc8919081019062006ca9565b9050600062001ffa828560405160200162001fe592919062006d96565b60405160208183030381529060405262003f51565b90506001600160a01b03811662001aa757848460405160200162001df192919062006dc9565b600062001d5c838362003f64565b6040517f667f9d700000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201527fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61036024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90600090829063667f9d7090604401602060405180830381865afa158015620020cb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620020f1919062006ce2565b905080620022a7576000620021068662003f72565b604080518082018252600581527f352e302e300000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915062002193905b6040805180820182526000808252602091820152815180830190925284518252808501908201529062004066565b80620021a0575060008451115b1562002229576040517f4f1ef2860000000000000000000000000000000000000000000000000000000081526001600160a01b03871690634f1ef28690620021ef908890889060040162006b8a565b600060405180830381600087803b1580156200220a57600080fd5b505af11580156200221f573d6000803e3d6000fd5b50505050620022a0565b6040517f3659cfe60000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152871690633659cfe690602401600060405180830381600087803b1580156200228657600080fd5b505af11580156200229b573d6000803e3d6000fd5b505050505b5062001aca565b806000620022b58262003f72565b604080518082018252600581527f352e302e3000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150620023199062002165565b8062002326575060008551115b15620023b1576040517f9623609d0000000000000000000000000000000000000000000000000000000081526001600160a01b03831690639623609d9062002377908a908a908a9060040162006e78565b600060405180830381600087803b1580156200239257600080fd5b505af1158015620023a7573d6000803e3d6000fd5b5050505062001ce6565b6040517f99a88ec40000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015287811660248301528316906399a88ec490604401600060405180830381600087803b15801562001ccc57600080fd5b62002424828260006200407c565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90620024b190849060040162006ea6565b600060405180830381865afa158015620024cf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620024f9919081019062006eef565b9250505090565b620025336040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d90506200257f6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6200258a856200418d565b602082015260006200259c8662004592565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015620025df573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002609919081019062006eef565b8683856020015160405160200162002625949392919062006f3d565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb11906200267f90859060040162006d81565b600060405180830381865afa1580156200269d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620026c7919081019062006eef565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f6906200271190849060040162007003565b602060405180830381865afa1580156200272f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002755919062006a38565b6200276d578160405160200162001df1919062007057565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890620027b4908490600401620070eb565b600060405180830381865afa158015620027d2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620027fc919081019062006eef565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690620028459084906004016200713f565b602060405180830381865afa15801562002863573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002889919062006a38565b1562002924576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890620028d69084906004016200713f565b600060405180830381865afa158015620028f4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200291e919081019062006eef565b60408501525b846001600160a01b03166349c4fac88286600001516040516020016200294b919062007193565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016200297992919062007201565b600060405180830381865afa15801562002997573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620029c1919081019062006eef565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b6060815260200190600190039081620029f15790505090506040518060400160405280600481526020017f67726570000000000000000000000000000000000000000000000000000000008152508160008151811062002a555762002a556200722a565b60200260200101819052506040518060400160405280600381526020017f2d726c00000000000000000000000000000000000000000000000000000000008152508160018151811062002aac5762002aac6200722a565b60200260200101819052508460405160200162002aca919062007259565b6040516020818303038152906040528160028151811062002aef5762002aef6200722a565b60200260200101819052508260405160200162002b0d9190620072a5565b6040516020818303038152906040528160038151811062002b325762002b326200722a565b6020026020010181905250600062002b4a8262003b5f565b602080820151604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000818501908152825180840184526000808252908601528251808401909352905182529281019290925291925062002bdd90604080518082018252600080825260209182015281518083019092528451825280850190820152906200482e565b62002bf5578560405160200162001df19190620072e8565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d901562002c50565b511590565b62002dc95782602001511562002d0f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a40162001e33565b8260c001511562002dc9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a40162001e33565b6040805160ff8082526120008201909252600091816020015b606081526020019060019003908162002de257905050905060006040518060400160405280600381526020017f6e7078000000000000000000000000000000000000000000000000000000000081525082828062002e4090620073aa565b935060ff168151811062002e585762002e586200722a565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e370000000000000000000000000000000000000081525060405160200162002eab9190620073cc565b60405160208183030381529060405282828062002ec890620073aa565b935060ff168151811062002ee05762002ee06200722a565b60200260200101819052506040518060400160405280600681526020017f6465706c6f79000000000000000000000000000000000000000000000000000081525082828062002f2f90620073aa565b935060ff168151811062002f475762002f476200722a565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d6500000000000000000000000000000000000081525082828062002f9690620073aa565b935060ff168151811062002fae5762002fae6200722a565b6020026020010181905250876020015182828062002fcc90620073aa565b935060ff168151811062002fe45762002fe46200722a565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e7472616374506174680000000000000000000000000000000000008152508282806200303390620073aa565b935060ff16815181106200304b576200304b6200722a565b6020908102919091010152875182826200306581620073aa565b935060ff16815181106200307d576200307d6200722a565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e49640000000000000000000000000000000000000000000000815250828280620030cc90620073aa565b935060ff1681518110620030e457620030e46200722a565b6020026020010181905250620030fa4662004897565b82826200310781620073aa565b935060ff16815181106200311f576200311f6200722a565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c6500000000000000000000000000000000008152508282806200316e90620073aa565b935060ff16815181106200318657620031866200722a565b602002602001018190525086828280620031a090620073aa565b935060ff1681518110620031b857620031b86200722a565b6020908102919091010152855115620032ef5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f64650000000000000000000000602082015282826200320c81620073aa565b935060ff16815181106200322457620032246200722a565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d906200327690899060040162006d81565b600060405180830381865afa15801562003294573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620032be919081019062006eef565b8282620032cb81620073aa565b935060ff1681518110620032e357620032e36200722a565b60200260200101819052505b846020015115620033cb5760408051808201909152601281527f2d2d766572696679536f75726365436f64650000000000000000000000000000602082015282826200333b81620073aa565b935060ff16815181106200335357620033536200722a565b60200260200101819052506040518060400160405280600581526020017f66616c7365000000000000000000000000000000000000000000000000000000815250828280620033a290620073aa565b935060ff1681518110620033ba57620033ba6200722a565b6020026020010181905250620035af565b6200340562002c4b8660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b620034a25760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826200344b81620073aa565b935060ff16815181106200346357620034636200722a565b60200260200101819052508460a0015160405160200162003485919062007259565b604051602081830303815290604052828280620033a290620073aa565b8460c00151158015620034e7575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152620034e590511590565b155b15620035af5760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826200352e81620073aa565b935060ff16815181106200354657620035466200722a565b60200260200101819052506200355c886200493e565b6040516020016200356e919062007259565b6040516020818303038152906040528282806200358b90620073aa565b935060ff1681518110620035a357620035a36200722a565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152620035e490511590565b620036845760408051808201909152600b81527f2d2d72656c617965724964000000000000000000000000000000000000000000602082015282826200362a81620073aa565b935060ff16815181106200364257620036426200722a565b602002602001018190525084604001518282806200366090620073aa565b935060ff16815181106200367857620036786200722a565b60200260200101819052505b606085015115620037b35760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282620036d081620073aa565b935060ff1681518110620036e857620036e86200722a565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa15801562003758573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003782919081019062006eef565b82826200378f81620073aa565b935060ff1681518110620037a757620037a76200722a565b60200260200101819052505b60e08501515115620038675760408051808201909152600a81527f2d2d6761734c696d697400000000000000000000000000000000000000000000602082015282826200380081620073aa565b935060ff16815181106200381857620038186200722a565b6020026020010181905250620038368560e001516000015162004897565b82826200384381620073aa565b935060ff16815181106200385b576200385b6200722a565b60200260200101819052505b60e085015160200151156200391e5760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282620038b781620073aa565b935060ff1681518110620038cf57620038cf6200722a565b6020026020010181905250620038ed8560e001516020015162004897565b8282620038fa81620073aa565b935060ff16815181106200391257620039126200722a565b60200260200101819052505b60e08501516040015115620039d55760408051808201909152600e81527f2d2d6d6178466565506572476173000000000000000000000000000000000000602082015282826200396e81620073aa565b935060ff16815181106200398657620039866200722a565b6020026020010181905250620039a48560e001516040015162004897565b8282620039b181620073aa565b935060ff1681518110620039c957620039c96200722a565b60200260200101819052505b60e0850151606001511562003a8c5760408051808201909152601681527f2d2d6d61785072696f72697479466565506572476173000000000000000000006020820152828262003a2581620073aa565b935060ff168151811062003a3d5762003a3d6200722a565b602002602001018190525062003a5b8560e001516060015162004897565b828262003a6881620073aa565b935060ff168151811062003a805762003a806200722a565b60200260200101819052505b60008160ff1667ffffffffffffffff81111562003aad5762003aad62006bae565b60405190808252806020026020018201604052801562003ae257816020015b606081526020019060019003908162003acc5790505b50905060005b8260ff168160ff16101562003b5057838160ff168151811062003b0f5762003b0f6200722a565b6020026020010151828260ff168151811062003b2f5762003b2f6200722a565b6020026020010181905250808062003b4790620073aa565b91505062003ae8565b5093505050505b949350505050565b62003b876040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c9162003c0f9186910162007439565b600060405180830381865afa15801562003c2d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003c57919081019062006eef565b9050600062003c67868362005468565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b815260040162003c99919062006923565b6000604051808303816000875af115801562003cb9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003ce3919081019062007482565b805190915060030b1580159062003cfd5750602081015151155b801562003d0d5750604081015151155b1562002bf5578160008151811062003d295762003d296200722a565b602002602001015160405160200162001df1919062007538565b6060600062003d798560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252865182528087019082015290915062003db29082905b90620055df565b1562003f1e57600062003e368262003e2f8462003e2862003dfa8a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b9062005608565b9062005670565b604080518082018252600181527f0a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915062003e9c908290620055df565b1562003f0957604080518082018252600181527f0a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015262003f06905b8290620056fd565b90505b62003f148162005725565b9250505062001bdd565b821562003f3a57848460405160200162001df192919062007726565b505060408051602081019091526000815262001bdd565b6000808251602084016000f09392505050565b62002424828260016200407c565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fad3cb1cc00000000000000000000000000000000000000000000000000000000179052905160609160009182916001600160a01b0386169162003fe99190620077d1565b6000604051808303816000865af19150503d806000811462004028576040519150601f19603f3d011682016040523d82523d6000602084013e6200402d565b606091505b509150915081156200404f578080602001905181019062003b57919062006eef565b505060408051602081019091526000815292915050565b600062004074838362005794565b159392505050565b8160a00151156200408c57505050565b60006200409b84848462005888565b90506000620040aa8262003b5f565b602081015181519192509060030b158015620041495750604080518082018252600781527f535543434553530000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620041499060408051808201825260008082526020918201528151808301909252845182528085019082015262003dab565b156200415757505050505050565b604082015151156200417a57816040015160405160200162001df19190620077ef565b8060405160200162001df191906200784f565b60606000620041c38360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506200422a905b82906200482e565b156200429e57604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015262001bdd906200429890839062005e8f565b62005725565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015262004302905b829062005f23565b600103620043d557604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526200436b9062003efe565b50604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015262001bdd9062004298905b8390620056fd565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620044369062004222565b156200457957604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290620044a190839062005fcf565b905060008160018351620044b69190620078bc565b81518110620044c957620044c96200722a565b602002602001015190506200457062004298620045426040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925285518252808601908201529062005e8f565b95945050505050565b8260405160200162001df19190620078d2565b50919050565b60606000620045c88360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506200462c9062004222565b156200463d5762001bdd8162005725565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526200469e90620042fa565b6001036200470c57604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015262001bdd906200429890620043cd565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526200476d9062004222565b156200457957604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290620047d890839062005fcf565b90506001815111156200481a578060028251620047f69190620078bc565b815181106200480957620048096200722a565b602002602001015192505050919050565b508260405160200162001df19190620078d2565b805182516000911115620048455750600062001aab565b815183516020850151600092916200485d91620079b2565b620048699190620078bc565b9050826020015181036200488257600191505062001aab565b82516020840151819020912014905092915050565b60606000620048a6836200609a565b600101905060008167ffffffffffffffff811115620048c957620048c962006bae565b6040519080825280601f01601f191660200182016040528015620048f4576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084620048fe57509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091620049cc905b829062004066565b1562004a0d57505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015262004a6e90620049c4565b1562004aaf57505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d495400000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015262004b1090620049c4565b1562004b5157505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015262004bb290620049c4565b8062004c1a5750604080518082018252601081527f47504c2d322e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015262004c1a90620049c4565b1562004c5b57505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015262004cbc90620049c4565b8062004d245750604080518082018252601081527f47504c2d332e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015262004d2490620049c4565b1562004d6557505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015262004dc690620049c4565b8062004e2e5750604080518082018252601181527f4c47504c2d322e312d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015262004e2e90620049c4565b1562004e6f57505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015262004ed090620049c4565b8062004f385750604080518082018252601181527f4c47504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015262004f3890620049c4565b1562004f7957505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015262004fda90620049c4565b156200501b57505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526200507c90620049c4565b15620050bd57505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526200511e90620049c4565b156200515f57505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620051c090620049c4565b156200520157505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e3000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526200526290620049c4565b15620052a357505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526200530490620049c4565b806200536c5750604080518082018252601181527f4147504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526200536c90620049c4565b15620053ad57505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e31000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526200540e90620049c4565b156200544f57505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b6040808401518451915162001df19290602001620079c8565b60608060005b84518110156200550b57818582815181106200548e576200548e6200722a565b6020026020010151604051602001620054a992919062006d96565b604051602081830303815290604052915060018551620054ca9190620078bc565b8114620054f65781604051602001620054e4919062007b35565b60405160208183030381529060405291505b80620055028162007b78565b9150506200546e565b5060408051600380825260808201909252600091816020015b60608152602001906001900390816200552457905050905083816000815181106200555357620055536200722a565b60200260200101819052506040518060400160405280600281526020017f2d6300000000000000000000000000000000000000000000000000000000000081525081600181518110620055aa57620055aa6200722a565b60200260200101819052508181600281518110620055cc57620055cc6200722a565b6020908102919091010152949350505050565b6020808301518351835192840151600093620055ff929184919062006183565b14159392505050565b604080518082019091526000808252602082015260006200563c8460000151856020015185600001518660200151620062b8565b9050836020015181620056509190620078bc565b8451859062005661908390620078bc565b90525060208401525090919050565b60408051808201909152600080825260208201528151835110156200569757508162001aab565b6020808301519084015160019114620056bf5750815160208481015190840151829020919020145b8015620056f557825184518590620056d9908390620078bc565b9052508251602085018051620056f1908390620079b2565b9052505b509192915050565b60408051808201909152600080825260208201526200571e838383620063fc565b5092915050565b60606000826000015167ffffffffffffffff81111562005749576200574962006bae565b6040519080825280601f01601f19166020018201604052801562005774576020820181803683370190505b50905060006020820190506200571e8185602001518660000151620064b5565b8151815160009190811115620057a8575081515b6020808501519084015160005b83811015620058775782518251808214620058405760001960208710156200581d57600184620057e7896020620078bc565b620057f39190620079b2565b6200580090600862007b95565b6200580d90600262007cac565b620058199190620078bc565b1990505b81811683821681810391146200583d57975062001aab9650505050505050565b50505b6200584d602086620079b2565b94506200585c602085620079b2565b935050506020816200586f9190620079b2565b9050620057b5565b508451865162002bf5919062007cba565b606060006200589662002428565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081620058b357905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806200591190620073aa565b935060ff16815181106200592957620059296200722a565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e33000000000000000000000000000000000000000000000000008152506040516020016200597c919062007cdd565b6040516020818303038152906040528282806200599990620073aa565b935060ff1681518110620059b157620059b16200722a565b60200260200101819052506040518060400160405280600881526020017f76616c696461746500000000000000000000000000000000000000000000000081525082828062005a0090620073aa565b935060ff168151811062005a185762005a186200722a565b60200260200101819052508260405160200162005a369190620072a5565b60405160208183030381529060405282828062005a5390620073aa565b935060ff168151811062005a6b5762005a6b6200722a565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e74726163740000000000000000000000000000000000000000000081525082828062005aba90620073aa565b935060ff168151811062005ad25762005ad26200722a565b602002602001018190525062005ae987846200653e565b828262005af681620073aa565b935060ff168151811062005b0e5762005b0e6200722a565b60209081029190910101528551511562005bc75760408051808201909152600b81527f2d2d7265666572656e63650000000000000000000000000000000000000000006020820152828262005b6381620073aa565b935060ff168151811062005b7b5762005b7b6200722a565b602002602001018190525062005b968660000151846200653e565b828262005ba381620073aa565b935060ff168151811062005bbb5762005bbb6200722a565b60200260200101819052505b85608001511562005c3c5760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b00000000000000006020820152828262005c1381620073aa565b935060ff168151811062005c2b5762005c2b6200722a565b602002602001018190525062005ca8565b841562005ca85760408051808201909152601281527f2d2d726571756972655265666572656e636500000000000000000000000000006020820152828262005c8481620073aa565b935060ff168151811062005c9c5762005c9c6200722a565b60200260200101819052505b6040860151511562005d4f5760408051808201909152600d81527f2d2d756e73616665416c6c6f77000000000000000000000000000000000000006020820152828262005cf581620073aa565b935060ff168151811062005d0d5762005d0d6200722a565b6020026020010181905250856040015182828062005d2b90620073aa565b935060ff168151811062005d435762005d436200722a565b60200260200101819052505b85606001511562005dbf5760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d65730000000000000000000000006020820152828262005d9b81620073aa565b935060ff168151811062005db35762005db36200722a565b60200260200101819052505b60008160ff1667ffffffffffffffff81111562005de05762005de062006bae565b60405190808252806020026020018201604052801562005e1557816020015b606081526020019060019003908162005dff5790505b50905060005b8260ff168160ff16101562005e8357838160ff168151811062005e425762005e426200722a565b6020026020010151828260ff168151811062005e625762005e626200722a565b6020026020010181905250808062005e7a90620073aa565b91505062005e1b565b50979650505050505050565b604080518082019091526000808252602082015281518351101562005eb657508162001aab565b8151835160208501516000929162005ece91620079b2565b62005eda9190620078bc565b6020840151909150600190821462005efc575082516020840151819020908220145b801562005f1a5783518551869062005f16908390620078bc565b9052505b50929392505050565b600080826000015162005f498560000151866020015186600001518760200151620062b8565b62005f559190620079b2565b90505b8351602085015162005f6b9190620079b2565b81116200571e578162005f7e8162007b78565b925050826000015162005fbb85602001518362005f9c9190620078bc565b865162005faa9190620078bc565b8386600001518760200151620062b8565b62005fc79190620079b2565b905062005f58565b6060600062005fdf848462005f23565b62005fec906001620079b2565b67ffffffffffffffff81111562006007576200600762006bae565b6040519080825280602002602001820160405280156200603c57816020015b6060815260200190600190039081620060265790505b50905060005b815181101562006092576200605c620042988686620056fd565b8282815181106200607157620060716200722a565b60200260200101819052508080620060899062007b78565b91505062006042565b509392505050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310620060e4577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef8100000000831062006111576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106200613057662386f26fc10000830492506010015b6305f5e100831062006149576305f5e100830492506008015b61271083106200615e57612710830492506004015b6064831062006171576064830492506002015b600a831062001aab5760010192915050565b600080858411620062ae57602084116200624e5760008415620061d9576001620061af866020620078bc565b620061bc90600862007b95565b620061c990600262007cac565b620061d59190620078bc565b1990505b8351811685620061ea8989620079b2565b620061f69190620078bc565b805190935082165b81811462006236578784116200621b578794505050505062003b57565b83620062278162007d24565b945050828451169050620061fe565b620062428785620079b2565b94505050505062003b57565b8383206200625d8588620078bc565b620062699087620079b2565b91505b858210620062ac5784822080820362006296576200628b8684620079b2565b935050505062003b57565b620062a3600184620078bc565b9250506200626c565b505b5092949350505050565b60008381868511620063e557602085116200638a57600085156200630f576001620062e5876020620078bc565b620062f290600862007b95565b620062ff90600262007cac565b6200630b9190620078bc565b1990505b84518116600087620063228b8b620079b2565b6200632e9190620078bc565b855190915083165b8281146200637b578186106200636057620063528b8b620079b2565b965050505050505062003b57565b856200636c8162007b78565b96505083865116905062006336565b85965050505050505062003b57565b508383206000905b6200639e8689620078bc565b8211620063e357858320808203620063bd578394505050505062003b57565b620063ca600185620079b2565b9350508180620063da9062007b78565b92505062006392565b505b620063f18787620079b2565b979650505050505050565b60408051808201909152600080825260208201526000620064308560000151866020015186600001518760200151620062b8565b6020808701805191860191909152519091506200644e9082620078bc565b835284516020860151620064639190620079b2565b8103620064745760008552620064ac565b83518351620064849190620079b2565b8551869062006495908390620078bc565b9052508351620064a69082620079b2565b60208601525b50909392505050565b60208110620064f55781518352620064cf602084620079b2565b9250620064de602083620079b2565b9150620064ed602082620078bc565b9050620064b5565b60001981156200652b5760016200650e836020620078bc565b6200651c9061010062007cac565b620065289190620078bc565b90505b9151835183169219169190911790915250565b606060006200654e848462002500565b80516020808301516040519394506200656a9390910162007d3e565b60405160208183030381529060405291505092915050565b610cca8062007d9b83390190565b610b358062008a6583390190565b610f85806200959a83390190565b610d31806200a51f83390190565b6040518060e00160405280606081526020016060815260200160608152602001600015158152602001600015158152602001600015158152602001620065ff62006604565b905290565b60405180610100016040528060001515815260200160001515815260200160608152602001600080191681526020016060815260200160608152602001600015158152602001620065ff6040518060800160405280600081526020016000815260200160008152602001600081525090565b6020808252825182820181905260009190848201906040850190845b81811015620066b95783516001600160a01b03168352928401929184019160010162006692565b50909695505050505050565b60005b83811015620066e2578181015183820152602001620066c8565b50506000910152565b6000815180845262006705816020860160208601620066c5565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b858110156200680b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b81811015620067f4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0898503018352620067e1848651620066eb565b948e01949350918d0191600101620067a4565b505050978a01979450509188019160010162006740565b50919a9950505050505050505050565b600081518084526020808501945080840160005b838110156200686f5781517fffffffff0000000000000000000000000000000000000000000000000000000016875295820195908201906001016200682f565b509495945050505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101562006915577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc089840301855281518051878552620068e688860182620066eb565b91890151858303868b01529190506200690081836200681b565b968901969450505090860190600101620068a1565b509098975050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156200699a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088860301845262006987858351620066eb565b945092850192908501906001016200694a565b5092979650505050505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101562006915578883037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0018552815180516001600160a01b0316845287015187840187905262006a24878501826200681b565b9588019593505090860190600101620069ce565b60006020828403121562006a4b57600080fd5b8151801515811462001bdd57600080fd5b600181811c9082168062006a7157607f821691505b6020821081036200458c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006020828403121562006abe57600080fd5b81516001600160a01b038116811462001bdd57600080fd5b60608152600062006aeb6060830186620066eb565b602083019490945250901515604090910152919050565b6001600160a01b0384168152826020820152606060408201526000620045706060830184620066eb565b6001600160a01b038616815284602082015260a06040820152600062006b5660a0830186620066eb565b6060830194909452509015156080909101529392505050565b82815260406020820152600062003b576040830184620066eb565b6001600160a01b038316815260406020820152600062003b576040830184620066eb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171562006c035762006c0362006bae565b60405290565b600067ffffffffffffffff8084111562006c275762006c2762006bae565b604051601f8501601f19908116603f0116810190828211818310171562006c525762006c5262006bae565b8160405280935085815286868601111562006c6c57600080fd5b62006c7c866020830187620066c5565b5050509392505050565b600082601f83011262006c9857600080fd5b62001bdd8383516020850162006c09565b60006020828403121562006cbc57600080fd5b815167ffffffffffffffff81111562006cd457600080fd5b62001aa78482850162006c86565b60006020828403121562006cf557600080fd5b5051919050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835162006d3681601a850160208801620066c5565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835162006d7581601c840160208801620066c5565b01601c01949350505050565b60208152600062001bdd6020830184620066eb565b6000835162006daa818460208801620066c5565b83519083019062006dc0818360208801620066c5565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835162006e0381601a850160208801620066c5565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835162006e42816033840160208801620066c5565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60006001600160a01b03808616835280851660208401525060606040830152620045706060830184620066eb565b60408152600b60408201527f464f554e4452595f4f5554000000000000000000000000000000000000000000606082015260806020820152600062001bdd6080830184620066eb565b60006020828403121562006f0257600080fd5b815167ffffffffffffffff81111562006f1a57600080fd5b8201601f8101841362006f2c57600080fd5b62001aa78482516020840162006c09565b6000855162006f51818460208a01620066c5565b80830190507f2f00000000000000000000000000000000000000000000000000000000000000808252865162006f8f816001850160208b01620066c5565b60019201918201819052855162006fae816002850160208a01620066c5565b6002920191820152835162006fcb816003840160208801620066c5565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600392909101918201526008019695505050505050565b604081526000620070186040830184620066eb565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e20617274696661637420008152600082516200709181601f850160208701620066c5565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b604081526000620071006040830184620066eb565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b604081526000620071546040830184620066eb565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b27000000000000000000000000815260008251620071cd816014850160208701620066c5565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b604081526000620072166040830185620066eb565b828103602084015262001bd98185620066eb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007f2200000000000000000000000000000000000000000000000000000000000000808352835162007294816001860160208801620066c5565b600193019283015250600201919050565b60008251620072b9818460208701620066c5565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e7472616374200000000000000000000000000000000000000000006040820152600082516200736e81604b850160208701620066c5565b91909101604b0192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff821660ff8103620073c357620073c36200737b565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c694000000000000000000000000000000000000000000000006020820152600082516200742c816029850160208701620066c5565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f5041544800000000000000000000606082015260806020820152600062001bdd6080830184620066eb565b6000602082840312156200749557600080fd5b815167ffffffffffffffff80821115620074ae57600080fd5b9083019060608286031215620074c357600080fd5b620074cd62006bdd565b82518060030b8114620074df57600080fd5b8152602083015182811115620074f457600080fd5b620075028782860162006c86565b6020830152506040830151828111156200751b57600080fd5b620075298782860162006c86565b60408301525095945050505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825162007598816021850160208701620066c5565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f270000000000000000000000000000000000000000000000000000000000000060208201526000835162007786816021850160208801620066c5565b7f2720696e206f75747075743a20000000000000000000000000000000000000006021918401918201528351620077c581602e840160208801620066c5565b01602e01949350505050565b60008251620077e5818460208701620066c5565b9190910192915050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a2000000000000000000000000000000000000000000000006020820152600082516200742c816029850160208701620066c5565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a000000000000000000000000000000000000000000000000000000000000602082015260008251620078af816022850160208701620066c5565b9190910160220192915050565b8181038181111562001aab5762001aab6200737b565b7f436f6e7472616374206e616d65200000000000000000000000000000000000008152600082516200790c81600e850160208701620066c5565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b8082018082111562001aab5762001aab6200737b565b7f53504458206c6963656e7365206964656e74696669657220000000000000000081526000835162007a02816018850160208801620066c5565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835162007a4181601c840160208801620066c5565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825162007b49818460208701620066c5565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b6000600019820362007b8e5762007b8e6200737b565b5060010190565b808202811582820484141762001aab5762001aab6200737b565b600181815b8085111562007bf057816000190482111562007bd45762007bd46200737b565b8085161562007be257918102915b93841c939080029062007bb4565b509250929050565b60008262007c095750600162001aab565b8162007c185750600062001aab565b816001811462007c31576002811462007c3c5762007c5c565b600191505062001aab565b60ff84111562007c505762007c506200737b565b50506001821b62001aab565b5060208310610133831016604e8410600b841016171562007c81575081810a62001aab565b62007c8d838362007baf565b806000190482111562007ca45762007ca46200737b565b029392505050565b600062001bdd838362007bf8565b81810360008312801583831316838312821617156200571e576200571e6200737b565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825162007d1781601c850160208701620066c5565b91909101601c0192915050565b60008162007d365762007d366200737b565b506000190190565b6000835162007d52818460208801620066c5565b7f3a00000000000000000000000000000000000000000000000000000000000000908301908152835162007d8e816001840160208801620066c5565b0160010194935050505056fe60806040523480156200001157600080fd5b5060405162000cca38038062000cca833981016040819052620000349162000123565b818160036200004483826200021c565b5060046200005382826200021c565b5050505050620002e8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008657600080fd5b81516001600160401b0380821115620000a357620000a36200005e565b604051601f8301601f19908116603f01168101908282118183101715620000ce57620000ce6200005e565b81604052838152602092508683858801011115620000eb57600080fd5b600091505b838210156200010f5785820183015181830184015290820190620000f0565b600093810190920192909252949350505050565b600080604083850312156200013757600080fd5b82516001600160401b03808211156200014f57600080fd5b6200015d8683870162000074565b935060208501519150808211156200017457600080fd5b50620001838582860162000074565b9150509250929050565b600181811c90821680620001a257607f821691505b602082108103620001c357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021757600081815260208120601f850160051c81016020861015620001f25750805b601f850160051c820191505b818110156200021357828155600101620001fe565b5050505b505050565b81516001600160401b038111156200023857620002386200005e565b62000250816200024984546200018d565b84620001c9565b602080601f8311600181146200028857600084156200026f5750858301515b600019600386901b1c1916600185901b17855562000213565b600085815260208120601f198616915b82811015620002b95788860151825594840194600190910190840162000298565b5085821015620002d85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6109d280620002f86000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108ba565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dc565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f39061090f565b80601f016020809104026020016040519081016040528092919081815260200182805461021f9061090f565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f39061090f565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610962565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b600060208083528351808285015260005b818110156107ec578581018301518582016040015282016107d0565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b9150604084013590509250925092565b6000602082840312156108cc57600080fd5b6108d58261082b565b9392505050565b600080604083850312156108ef57600080fd5b6108f88361082b565b91506109066020840161082b565b90509250929050565b600181811c9082168061092357607f821691505b60208210810361095c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220556869bd33d6741656e444b7d99e56e0c3a9495b8426ba227d4f4af169660e8264736f6c63430008150033608060405234801561001057600080fd5b50604051610b35380380610b3583398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a37806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bd565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610942565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102819392919061098d565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610942565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102819392919061098d565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109b0565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109d2565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff8082111561087557600080fd5b818801915088601f83011261088957600080fd5b81358181111561089857600080fd5b8960208285010111156108aa57600080fd5b9699959850939650602001949392505050565b6000806000606084860312156108d257600080fd5b6108db846107f9565b92506108e9602085016107f9565b9150604084013590509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109826080830184866108f9565b979650505050505050565b8381526040602082015260006109a76040830184866108f9565b95945050505050565b6000602082840312156109c257600080fd5b8151801515811461065e57600080fd5b6000825160005b818110156109f357602081860181015185830152016109d9565b50600092019182525091905056fea2646970667358221220add5c975d5cd9c8b4afe35ea370aed6f4c4571bcc8cfe91b243cc9add705e36664736f6c6343000815003360c060405260001960025534801561001657600080fd5b50604051610f85380380610f85833981016040819052610035916100d8565b60016000558282826001600160a01b038316158061005a57506001600160a01b038216155b8061006c57506001600160a01b038116155b1561008a5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b031916919092161790555061011b915050565b80516001600160a01b03811681146100d357600080fd5b919050565b6000806000606084860312156100ed57600080fd5b6100f6846100bc565b9250610104602085016100bc565b9150610112604085016100bc565b90509250925092565b60805160a051610deb61019a6000396000818161012601528181610216015281816103580152818161041e01528181610541015281816106630152818161077c015281816108be015281816109840152610af101526000818160d501528181610322015281816103ef0152818161088801526109550152610deb6000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80635b112591116100765780636f8b44b01161005b5780636f8b44b01461017b578063743e0c9b1461018e578063d5abeb01146101a157600080fd5b80635b112591146101485780635e3e9fef1461016857600080fd5b806302d5c899146100a8578063106e6290146100bd578063116191b6146100d057806321e093b114610121575b600080fd5b6100bb6100b6366004610bca565b6101b8565b005b6100bb6100cb366004610c59565b6104e3565b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b6001546100f79073ffffffffffffffffffffffffffffffffffffffff1681565b6100bb610176366004610bca565b61071e565b6100bb610189366004610c8c565b610a30565b6100bb61019c366004610c8c565b610abc565b6101aa60025481565b604051908152602001610118565b6101c0610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610211576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561027f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a39190610ca5565b6102ad9086610cbe565b11156102e5576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561039c57600080fd5b505af11580156103b0573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd4915061044e907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d47565b600060405180830381600087803b15801561046857600080fd5b505af115801561047c573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516104ca93929190610d92565b60405180910390a26104dc6001600055565b5050505050565b6104eb610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff16331461053c576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ce9190610ca5565b6105d89084610cbe565b1115610610576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156106a757600080fd5b505af11580156106bb573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161070791815260200190565b60405180910390a26107196001600055565b505050565b610726610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610777576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108099190610ca5565b6108139086610cbe565b111561084b576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561090257600080fd5b505af1158015610916573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506109b4907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d47565b600060405180830381600087803b1580156109ce57600080fd5b505af11580156109e2573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516104ca93929190610d92565b60015473ffffffffffffffffffffffffffffffffffffffff163314610a81576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a150565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610b4a57600080fd5b505af11580156104dc573d6000803e3d6000fd5b600260005403610b9a576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff81168114610bc557600080fd5b919050565b600080600080600060808688031215610be257600080fd5b610beb86610ba1565b945060208601359350604086013567ffffffffffffffff80821115610c0f57600080fd5b818801915088601f830112610c2357600080fd5b813581811115610c3257600080fd5b896020828501011115610c4457600080fd5b96999598505060200195606001359392505050565b600080600060608486031215610c6e57600080fd5b610c7784610ba1565b95602085013595506040909401359392505050565b600060208284031215610c9e57600080fd5b5035919050565b600060208284031215610cb757600080fd5b5051919050565b80820180821115610cf8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015260806060830152610d87608083018486610cfe565b979650505050505050565b838152604060208201526000610dac604083018486610cfe565b9594505050505056fea2646970667358221220c1247105cac785b4e05127d6e13cb72f7443d98af6ef964c579e161b48ffece664736f6c63430008150033608060405234801561001057600080fd5b506001600055610d0c806100256000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610893565b6102f9565b34801561010057600080fd5b5061006a61010f36600461097d565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a58565b60405180910390a15050565b610226610372565b6000610233600285610ac2565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b6b565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610bb9565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610c9d565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610cba565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff8082111561072757600080fd5b818501915085601f83011261073b57600080fd5b81358181111561074a57600080fd5b86602082850101111561075c57600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e4576107e461076e565b604052919050565b600082601f8301126107fd57600080fd5b813567ffffffffffffffff8111156108175761081761076e565b61084860207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079d565b81815284602083860101111561085d57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087a565b6000806000606084860312156108a857600080fd5b833567ffffffffffffffff8111156108bf57600080fd5b6108cb868287016107ec565b9350506020840135915060408401356108e38161087a565b809150509250925092565b600067ffffffffffffffff8211156109085761090861076e565b5060051b60200190565b600082601f83011261092357600080fd5b81356020610938610933836108ee565b61079d565b82815260059290921b8401810191818101908684111561095757600080fd5b8286015b84811015610972578035835291830191830161095b565b509695505050505050565b60008060006060848603121561099257600080fd5b833567ffffffffffffffff808211156109aa57600080fd5b818601915086601f8301126109be57600080fd5b813560206109ce610933836108ee565b82815260059290921b8401810191818101908a8411156109ed57600080fd5b8286015b84811015610a2557803586811115610a095760008081fd5b610a178d86838b01016107ec565b8452509183019183016109f1565b5097505087013592505080821115610a3c57600080fd5b50610a4986828701610912565b9250506106f360408501610888565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610af8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b18578181015183820152602001610b00565b50506000910152565b60008151808452610b39816020860160208601610afd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610ba060a0830186610b21565b6060830194909452509015156080909101529392505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff87168352602060808185015281875180845260a08601915060a08160051b870101935082890160005b82811015610c49577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60888703018452610c37868351610b21565b95509284019290840190600101610bfd565b50505050838203604085015285518083528187019282019060005b81811015610c8057845183529383019391830191600101610c64565b505085151560608601529250610c94915050565b95945050505050565b600060208284031215610caf57600080fd5b81516104f98161087a565b60008251610ccc818460208701610afd565b919091019291505056fea26469706673582212203c78a9c62b9e8060d1fadf61a8e6e054c88d36bdb3ea73702c26bf13f718fad664736f6c63430008150033a2646970667358221220b1bd9766a65c10a820d6403260f8c5b070911c07a114dfd8eb08464a61939e2864736f6c63430008150033", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061add18061003c6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806385226c811161008c578063b5508aa911610066578063b5508aa91461018b578063ba414fa614610193578063e20c9f71146101ab578063fa7626d4146101b357600080fd5b806385226c8114610159578063916a17c61461016e578063b0464fdc1461018357600080fd5b80633e5e3c23116100c85780633e5e3c231461012c5780633f7286f41461013457806366d9a9a01461013c5780637a380ebf1461015157600080fd5b80630a9254e4146100ef5780631ed7831c146100f95780632ade388014610117575b600080fd5b6100f76101c0565b005b610101610a5d565b60405161010e91906161e3565b60405180910390f35b61011f610abf565b60405161010e919061627f565b610101610c01565b610101610c61565b610144610cc1565b60405161010e91906163e5565b6100f7610e43565b610161611505565b60405161010e9190616483565b6101766115d5565b60405161010e91906164fa565b6101766116d0565b6101616117cb565b61019b61189b565b604051901515815260200161010e565b61010161196f565b601f5461019b9060ff1681565b602680547fffffffffffffffffffffffff0000000000000000000000000000000000000000908116301790915560278054821661123417905560288054909116615678179055604051610212906160f6565b60408082526004908201527f746573740000000000000000000000000000000000000000000000000000000060608201526080602082018190526003908201527f54544b000000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f080158015610297573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516102dc906160f6565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f080158015610360573d6000803e3d6000fd5b50602580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155604080518082018252600e81527f4761746577617945564d2e736f6c000000000000000000000000000000000000602082015260285491519190931660248201526044810191909152610446919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc955000000000000000000000000000000000000000000000000000000001790526119cf565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff00000000000000000000000000000000000000009091168117909155602854604051919216906104ca90616103565b6001600160a01b03928316815291166020820152604001604051809103906000f0801580156104fd573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055602054602554602854604051928416939182169291169061055290616110565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801561058e573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516105d39061611d565b604051809103906000f0801580156105ef573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556028546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b15801561069b57600080fd5b505af11580156106af573d6000803e3d6000fd5b50506028546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b15801561072557600080fd5b505af1158015610739573d6000803e3d6000fd5b50506020546022546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b15801561079f57600080fd5b505af11580156107b3573d6000803e3d6000fd5b50506020546023546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b15801561081957600080fd5b505af115801561082d573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561088f57600080fd5b505af11580156108a3573d6000803e3d6000fd5b5050602480546026546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f4240938101939093521692506340c10f199150604401600060405180830381600087803b15801561091457600080fd5b505af1158015610928573d6000803e3d6000fd5b5050602480546022546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a1209381019390935216925063a9059cbb91506044016020604051808303816000875af115801561099e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c29190616591565b506028546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b158015610a4357600080fd5b505af1158015610a57573d6000803e3d6000fd5b50505050565b60606016805480602002602001604051908101604052809291908181526020018280548015610ab557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610a97575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015610bf857600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610be1578382906000526020600020018054610b54906165b3565b80601f0160208091040260200160405190810160405280929190818152602001828054610b80906165b3565b8015610bcd5780601f10610ba257610100808354040283529160200191610bcd565b820191906000526020600020905b815481529060010190602001808311610bb057829003601f168201915b505050505081526020019060010190610b35565b505050508152505081526020019060010190610ae3565b50505050905090565b60606018805480602002602001604051908101604052809291908181526020018280548015610ab5576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610a97575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610ab5576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610a97575050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015610bf85783829060005260206000209060020201604051806040016040529081600082018054610d18906165b3565b80601f0160208091040260200160405190810160405280929190818152602001828054610d44906165b3565b8015610d915780601f10610d6657610100808354040283529160200191610d91565b820191906000526020600020905b815481529060010190602001808311610d7457829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015610e2b57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411610dd85790505b50505050508152505081526020019060010190610ce5565b60208054604080517fdda79b7500000000000000000000000000000000000000000000000000000000815290516000936001600160a01b039093169263dda79b7592600480820193918290030181865afa158015610ea5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec99190616600565b60208054604080517f5b11259100000000000000000000000000000000000000000000000000000000815290519394506000936001600160a01b0390921692635b112591926004808401938290030181865afa158015610f2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f519190616600565b604080518082018252600f81527f48656c6c6f2c20466f756e647279210000000000000000000000000000000000602080830191909152601f5483518085018552601981527f4761746577617945564d55706772616465546573742e736f6c00000000000000818401528451928301909452600082526026549495509193602a93600193670de0b6b3a764000093610ffb936001600160a01b0361010090930483169392166119ee565b600084848460405160240161101293929190616629565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f9700000000000000000000000000000000000000000000000000000000179052601f5460215491517ff30c7ba30000000000000000000000000000000000000000000000000000000081529293506001600160a01b03610100909104811692737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f30c7ba3926110d89291169087908790600401616653565b600060405180830381600087803b1580156110f257600080fd5b505af1158015611106573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561119857600080fd5b505af11580156111ac573d6000803e3d6000fd5b50506020546040517f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa93506111f592506001600160a01b039091169086908a908a908a9061667b565b60405180910390a16020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561128b57600080fd5b505af115801561129f573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507f373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e854691506112e490869086906166bc565b60405180910390a26028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561135e57600080fd5b505af1158015611372573d6000803e3d6000fd5b50506021546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169450631cff79cd935087926113c49291169087906004016166d5565b60006040518083038185885af11580156113e2573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405261140b91908101906167df565b5060208054604080517fdda79b750000000000000000000000000000000000000000000000000000000081529051611498938c936001600160a01b03169263dda79b7592600480830193928290030181865afa15801561146f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114939190616600565b611a0a565b60208054604080517f5b11259100000000000000000000000000000000000000000000000000000000815290516114fb938b936001600160a01b031692635b11259192600480830193928290030181865afa15801561146f573d6000803e3d6000fd5b5050505050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015610bf8578382906000526020600020018054611548906165b3565b80601f0160208091040260200160405190810160405280929190818152602001828054611574906165b3565b80156115c15780601f10611596576101008083540402835291602001916115c1565b820191906000526020600020905b8154815290600101906020018083116115a457829003601f168201915b505050505081526020019060010190611529565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015610bf85760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156116b857602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116116655790505b505050505081525050815260200190600101906115f9565b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015610bf85760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156117b357602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116117605790505b505050505081525050815260200190600101906116f4565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015610bf857838290600052602060002001805461180e906165b3565b80601f016020809104026020016040519081016040528092919081815260200182805461183a906165b3565b80156118875780601f1061185c57610100808354040283529160200191611887565b820191906000526020600020905b81548152906001019060200180831161186a57829003601f168201915b5050505050815260200190600101906117ef565b60085460009060ff16156118b3575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015611944573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119689190616814565b1415905090565b60606015805480602002602001604051908101604052809291908181526020018280548015610ab5576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610a97575050505050905090565b60006119d961612a565b6119e4848483611a9a565b9150505b92915050565b6119f661612a565b611a038585858486611b15565b5050505050565b6040517f515361f60000000000000000000000000000000000000000000000000000000081526001600160a01b03808416600483015282166024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063515361f69060440160006040518083038186803b158015611a7e57600080fd5b505afa158015611a92573d6000803e3d6000fd5b505050505050565b600080611aa78584611c16565b9050611b0a6040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001611af59291906166d5565b60405160208183030381529060405285611c22565b9150505b9392505050565b6040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201528190737109709ecfa91a80626ff3989d68f67f5b1dd12d9081906306447d5690602401600060405180830381600087803b158015611b8757600080fd5b505af1925050508015611b98575060015b611bad57611ba887878787611c50565b611c0d565b611bb987878787611c50565b806001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611bf457600080fd5b505af1158015611c08573d6000803e3d6000fd5b505050505b50505050505050565b6000611b0e8383611c69565b60c08101515160009015611c4657611c3f84848460c00151611c84565b9050611b0e565b611c3f8484611e2a565b6000611c5c8483611f15565b9050611a03858285611f21565b6000611c7583836122eb565b611b0e83836020015184611c22565b600080611c8f6122fb565b90506000611c9d86836123ce565b90506000611cb48260600151836020015185612874565b90506000611cc483838989612a86565b90506000611cd182613903565b602081015181519192509060030b15611d4457898260400151604051602001611cfb92919061682d565b60408051601f19818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252611d3b916004016168ae565b60405180910390fd5b6000611d876040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001613ad2565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d90611dda9084906004016168ae565b602060405180830381865afa158015611df7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1b9190616600565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590611e7f9087906004016168ae565b600060405180830381865afa158015611e9c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ec491908101906167df565b90506000611ef28285604051602001611ede9291906168c1565b604051602081830303815290604052613cd2565b90506001600160a01b0381166119e4578484604051602001611cfb9291906168f0565b6000611c758383613ce5565b6040517f667f9d700000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201527fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61036024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90600090829063667f9d7090604401602060405180830381865afa158015611fbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe19190616814565b905080612188576000611ff386613cf1565b604080518082018252600581527f352e302e300000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061207e905b60408051808201825260008082526020918201528151808301909252845182528085019082015290613dde565b8061208a575060008451115b1561210d576040517f4f1ef2860000000000000000000000000000000000000000000000000000000081526001600160a01b03871690634f1ef286906120d690889088906004016166d5565b600060405180830381600087803b1580156120f057600080fd5b505af1158015612104573d6000803e3d6000fd5b50505050612182565b6040517f3659cfe60000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152871690633659cfe690602401600060405180830381600087803b15801561216957600080fd5b505af115801561217d573d6000803e3d6000fd5b505050505b50611a03565b80600061219482613cf1565b604080518082018252600581527f352e302e30000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506121f690612051565b80612202575060008551115b15612287576040517f9623609d0000000000000000000000000000000000000000000000000000000081526001600160a01b03831690639623609d90612250908a908a908a9060040161699b565b600060405180830381600087803b15801561226a57600080fd5b505af115801561227e573d6000803e3d6000fd5b50505050611c0d565b6040517f99a88ec40000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015287811660248301528316906399a88ec490604401600060405180830381600087803b158015611bf457600080fd5b6122f782826000613df2565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c906123829084906004016169cc565b600060405180830381865afa15801561239f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526123c79190810190616a13565b9250505090565b6124006040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d905061244b6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b61245485613ef5565b60208201526000612464866142da565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa1580156124a6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526124ce9190810190616a13565b868385602001516040516020016124e89493929190616a5c565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb11906125409085906004016168ae565b600060405180830381865afa15801561255d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526125859190810190616a13565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f6906125cd908490600401616b60565b602060405180830381865afa1580156125ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061260e9190616591565b6126235781604051602001611cfb9190616bb2565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890612668908490600401616c44565b600060405180830381865afa158015612685573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526126ad9190810190616a13565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f6906126f4908490600401616c96565b602060405180830381865afa158015612711573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127359190616591565b156127ca576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac89061277f908490600401616c96565b600060405180830381865afa15801561279c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526127c49190810190616a13565b60408501525b846001600160a01b03166349c4fac88286600001516040516020016127ef9190616ce8565b6040516020818303038152906040526040518363ffffffff1660e01b815260040161281b929190616d54565b600060405180830381865afa158015612838573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526128609190810190616a13565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816128905790505090506040518060400160405280600481526020017f6772657000000000000000000000000000000000000000000000000000000000815250816000815181106128f0576128f0616d79565b60200260200101819052506040518060400160405280600381526020017f2d726c00000000000000000000000000000000000000000000000000000000008152508160018151811061294457612944616d79565b6020026020010181905250846040516020016129609190616da8565b6040516020818303038152906040528160028151811061298257612982616d79565b60200260200101819052508260405160200161299e9190616e14565b604051602081830303815290604052816003815181106129c0576129c0616d79565b602002602001018190525060006129d682613903565b602080820151604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000008185019081528251808401845260008082529086015282518084019093529051825292810192909252919250612a67906040805180820182526000808252602091820152815180830190925284518252808501908201529061455d565b612a7c5785604051602001611cfb9190616e55565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015612ad6565b511590565b612c4a57826020015115612b92576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401611d3b565b8260c0015115612c4a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401611d3b565b6040805160ff8082526120008201909252600091816020015b6060815260200190600190039081612c6357905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280612cbe90616f15565b935060ff1681518110612cd357612cd3616d79565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e3700000000000000000000000000000000000000815250604051602001612d249190616f34565b604051602081830303815290604052828280612d3f90616f15565b935060ff1681518110612d5457612d54616d79565b60200260200101819052506040518060400160405280600681526020017f6465706c6f790000000000000000000000000000000000000000000000000000815250828280612da190616f15565b935060ff1681518110612db657612db6616d79565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d65000000000000000000000000000000000000815250828280612e0390616f15565b935060ff1681518110612e1857612e18616d79565b60200260200101819052508760200151828280612e3490616f15565b935060ff1681518110612e4957612e49616d79565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e747261637450617468000000000000000000000000000000000000815250828280612e9690616f15565b935060ff1681518110612eab57612eab616d79565b602090810291909101015287518282612ec381616f15565b935060ff1681518110612ed857612ed8616d79565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e49640000000000000000000000000000000000000000000000815250828280612f2590616f15565b935060ff1681518110612f3a57612f3a616d79565b6020026020010181905250612f4e466145be565b8282612f5981616f15565b935060ff1681518110612f6e57612f6e616d79565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c650000000000000000000000000000000000815250828280612fbb90616f15565b935060ff1681518110612fd057612fd0616d79565b602002602001018190525086828280612fe890616f15565b935060ff1681518110612ffd57612ffd616d79565b60209081029190910101528551156131245760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f646500000000000000000000006020820152828261304e81616f15565b935060ff168151811061306357613063616d79565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d906130b39089906004016168ae565b600060405180830381865afa1580156130d0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526130f89190810190616a13565b828261310381616f15565b935060ff168151811061311857613118616d79565b60200260200101819052505b8460200151156131f45760408051808201909152601281527f2d2d766572696679536f75726365436f646500000000000000000000000000006020820152828261316d81616f15565b935060ff168151811061318257613182616d79565b60200260200101819052506040518060400160405280600581526020017f66616c73650000000000000000000000000000000000000000000000000000008152508282806131cf90616f15565b935060ff16815181106131e4576131e4616d79565b60200260200101819052506133bb565b61322c612ad18660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6132bf5760408051808201909152600d81527f2d2d6c6963656e736554797065000000000000000000000000000000000000006020820152828261326f81616f15565b935060ff168151811061328457613284616d79565b60200260200101819052508460a001516040516020016132a49190616da8565b6040516020818303038152906040528282806131cf90616f15565b8460c0015115801561330257506040808901518151808301835260008082526020918201528251808401909352815183529081019082015261330090511590565b155b156133bb5760408051808201909152600d81527f2d2d6c6963656e736554797065000000000000000000000000000000000000006020820152828261334681616f15565b935060ff168151811061335b5761335b616d79565b602002602001018190525061336f8861465e565b60405160200161337f9190616da8565b60405160208183030381529060405282828061339a90616f15565b935060ff16815181106133af576133af616d79565b60200260200101819052505b604080860151815180830183526000808252602091820152825180840190935281518352908101908201526133ef90511590565b6134845760408051808201909152600b81527f2d2d72656c6179657249640000000000000000000000000000000000000000006020820152828261343281616f15565b935060ff168151811061344757613447616d79565b6020026020010181905250846040015182828061346390616f15565b935060ff168151811061347857613478616d79565b60200260200101819052505b6060850151156135a55760408051808201909152600681527f2d2d73616c740000000000000000000000000000000000000000000000000000602082015282826134cd81616f15565b935060ff16815181106134e2576134e2616d79565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015613551573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135799190810190616a13565b828261358481616f15565b935060ff168151811061359957613599616d79565b60200260200101819052505b60e0850151511561364c5760408051808201909152600a81527f2d2d6761734c696d697400000000000000000000000000000000000000000000602082015282826135ef81616f15565b935060ff168151811061360457613604616d79565b60200260200101819052506136208560e00151600001516145be565b828261362b81616f15565b935060ff168151811061364057613640616d79565b60200260200101819052505b60e085015160200151156136f65760408051808201909152600a81527f2d2d6761735072696365000000000000000000000000000000000000000000006020820152828261369981616f15565b935060ff16815181106136ae576136ae616d79565b60200260200101819052506136ca8560e00151602001516145be565b82826136d581616f15565b935060ff16815181106136ea576136ea616d79565b60200260200101819052505b60e085015160400151156137a05760408051808201909152600e81527f2d2d6d61784665655065724761730000000000000000000000000000000000006020820152828261374381616f15565b935060ff168151811061375857613758616d79565b60200260200101819052506137748560e00151604001516145be565b828261377f81616f15565b935060ff168151811061379457613794616d79565b60200260200101819052505b60e0850151606001511561384a5760408051808201909152601681527f2d2d6d61785072696f7269747946656550657247617300000000000000000000602082015282826137ed81616f15565b935060ff168151811061380257613802616d79565b602002602001018190525061381e8560e00151606001516145be565b828261382981616f15565b935060ff168151811061383e5761383e616d79565b60200260200101819052505b60008160ff1667ffffffffffffffff811115613868576138686166f7565b60405190808252806020026020018201604052801561389b57816020015b60608152602001906001900390816138865790505b50905060005b8260ff168160ff1610156138f457838160ff16815181106138c4576138c4616d79565b6020026020010151828260ff16815181106138e1576138e1616d79565b60209081029190910101526001016138a1565b5093505050505b949350505050565b61392a6040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c916139b091869101616f9f565b600060405180830381865afa1580156139cd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526139f59190810190616a13565b90506000613a03868361514d565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b8152600401613a339190616483565b6000604051808303816000875af1158015613a52573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613a7a9190810190616fe6565b805190915060030b15801590613a935750602081015151155b8015613aa25750604081015151155b15612a7c5781600081518110613aba57613aba616d79565b6020026020010151604051602001611cfb919061709c565b60606000613b078560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528651825280870190820152909150613b3e9082905b906152a2565b15613c9b576000613bbb82613bb584613baf613b818a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b906152c9565b9061532b565b604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150613c1f9082906152a2565b15613c8957604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152613c86905b82906153b0565b90505b613c92816153d6565b92505050611b0e565b8215613cb4578484604051602001611cfb929190617288565b5050604080516020810190915260008152611b0e565b509392505050565b6000808251602084016000f09392505050565b6122f782826001613df2565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fad3cb1cc00000000000000000000000000000000000000000000000000000000179052905160609160009182916001600160a01b03861691613d66919061732f565b6000604051808303816000865af19150503d8060008114613da3576040519150601f19603f3d011682016040523d82523d6000602084013e613da8565b606091505b50915091508115613dc757808060200190518101906138fb9190616a13565b505060408051602081019091526000815292915050565b6000613dea838361543f565b159392505050565b8160a0015115613e0157505050565b6000613e0e84848461551a565b90506000613e1b82613903565b602081015181519192509060030b158015613eb75750604080518082018252600781527f535543434553530000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152613eb790604080518082018252600080825260209182015281518083019092528451825280850190820152613b38565b15613ec457505050505050565b60408201515115613ee4578160400151604051602001611cfb919061734b565b80604051602001611cfb91906173a9565b60606000613f2a8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150613f8f905b829061455d565b15613ffe57604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152611b0e90613ff9908390615ab5565b6153d6565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614060905b8290615b3f565b60010361412d57604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526140c690613c7f565b50604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152611b0e90613ff9905b83906153b0565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261418c90613f88565b156142c357604080518082018252600181527f2f000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201819052845180860190955292518452830152906141f4908390615bd9565b9050600081600183516142079190617414565b8151811061421757614217616d79565b602002602001015190506142ba613ff961428d6040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252855182528086019082015290615ab5565b95945050505050565b82604051602001611cfb9190617427565b50919050565b6060600061430f8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061437190613f88565b1561437f57611b0e816153d6565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526143de90614059565b60010361444857604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152611b0e90613ff990614126565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526144a790613f88565b156142c357604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529061450f908390615bd9565b905060018151111561454b57806002825161452a9190617414565b8151811061453a5761453a616d79565b602002602001015192505050919050565b5082604051602001611cfb9190617427565b805182516000911115614572575060006119e8565b8151835160208501516000929161458891617505565b6145929190617414565b9050826020015181036145a95760019150506119e8565b82516020840151819020912014905092915050565b606060006145cb83615c7e565b600101905060008167ffffffffffffffff8111156145eb576145eb6166f7565b6040519080825280601f01601f191660200182016040528015614615576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461461f57509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e53454400000000000000000000000000000000000000000000818401908152855180870187528381528401929092528451808601909552518452908301526060916146ea905b8290613dde565b1561472a57505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614789906146e3565b156147c957505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614828906146e3565b1561486857505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526148c7906146e3565b8061492c5750604080518082018252601081527f47504c2d322e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261492c906146e3565b1561496c57505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526149cb906146e3565b80614a305750604080518082018252601081527f47504c2d332e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614a30906146e3565b15614a7057505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614acf906146e3565b80614b345750604080518082018252601181527f4c47504c2d322e312d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614b34906146e3565b15614b7457505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614bd3906146e3565b80614c385750604080518082018252601181527f4c47504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614c38906146e3565b15614c7857505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614cd7906146e3565b15614d1757505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614d76906146e3565b15614db657505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614e15906146e3565b15614e5557505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614eb4906146e3565b15614ef457505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e300000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614f53906146e3565b15614f9357505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152614ff2906146e3565b806150575750604080518082018252601181527f4147504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615057906146e3565b1561509757505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e31000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526150f6906146e3565b1561513657505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b60408084015184519151611cfb9290602001617518565b60608060005b84518110156151d8578185828151811061516f5761516f616d79565b60200260200101516040516020016151889291906168c1565b6040516020818303038152906040529150600185516151a79190617414565b81146151d057816040516020016151be9190617681565b60405160208183030381529060405291505b600101615153565b5060408051600380825260808201909252600091816020015b60608152602001906001900390816151f1579050509050838160008151811061521c5761521c616d79565b60200260200101819052506040518060400160405280600281526020017f2d630000000000000000000000000000000000000000000000000000000000008152508160018151811061527057615270616d79565b6020026020010181905250818160028151811061528f5761528f616d79565b6020908102919091010152949350505050565b60208083015183518351928401516000936152c09291849190615d60565b14159392505050565b604080518082019091526000808252602082015260006152fb8460000151856020015185600001518660200151615e71565b905083602001518161530d9190617414565b8451859061531c908390617414565b90525060208401525090919050565b60408051808201909152600080825260208201528151835110156153505750816119e8565b60208083015190840151600191146153775750815160208481015190840151829020919020145b80156153a85782518451859061538e908390617414565b90525082516020850180516153a4908390617505565b9052505b509192915050565b60408051808201909152600080825260208201526153cf838383615f91565b5092915050565b60606000826000015167ffffffffffffffff8111156153f7576153f76166f7565b6040519080825280601f01601f191660200182016040528015615421576020820181803683370190505b50905060006020820190506153cf818560200151866000015161603c565b8151815160009190811115615452575081515b6020808501519084015160005b8381101561550b57825182518082146154db5760001960208710156154ba5760018461548c896020617414565b6154969190617505565b6154a19060086176c2565b6154ac9060026177c0565b6154b69190617414565b1990505b81811683821681810391146154d85797506119e89650505050505050565b50505b6154e6602086617505565b94506154f3602085617505565b935050506020816155049190617505565b905061545f565b5084518651612a7c91906177cc565b606060006155266122fb565b6040805160ff808252612000820190925291925060009190816020015b606081526020019060019003908161554357905050905060006040518060400160405280600381526020017f6e7078000000000000000000000000000000000000000000000000000000000081525082828061559e90616f15565b935060ff16815181106155b3576155b3616d79565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e330000000000000000000000000000000000000000000000000081525060405160200161560491906177ec565b60405160208183030381529060405282828061561f90616f15565b935060ff168151811061563457615634616d79565b60200260200101819052506040518060400160405280600881526020017f76616c696461746500000000000000000000000000000000000000000000000081525082828061568190616f15565b935060ff168151811061569657615696616d79565b6020026020010181905250826040516020016156b29190616e14565b6040516020818303038152906040528282806156cd90616f15565b935060ff16815181106156e2576156e2616d79565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e74726163740000000000000000000000000000000000000000000081525082828061572f90616f15565b935060ff168151811061574457615744616d79565b602002602001018190525061575987846160b6565b828261576481616f15565b935060ff168151811061577957615779616d79565b6020908102919091010152855151156158255760408051808201909152600b81527f2d2d7265666572656e6365000000000000000000000000000000000000000000602082015282826157cb81616f15565b935060ff16815181106157e0576157e0616d79565b60200260200101819052506157f98660000151846160b6565b828261580481616f15565b935060ff168151811061581957615819616d79565b60200260200101819052505b8560800151156158935760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b00000000000000006020820152828261586e81616f15565b935060ff168151811061588357615883616d79565b60200260200101819052506158f9565b84156158f95760408051808201909152601281527f2d2d726571756972655265666572656e63650000000000000000000000000000602082015282826158d881616f15565b935060ff16815181106158ed576158ed616d79565b60200260200101819052505b604086015151156159955760408051808201909152600d81527f2d2d756e73616665416c6c6f77000000000000000000000000000000000000006020820152828261594381616f15565b935060ff168151811061595857615958616d79565b6020026020010181905250856040015182828061597490616f15565b935060ff168151811061598957615989616d79565b60200260200101819052505b8560600151156159ff5760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d6573000000000000000000000000602082015282826159de81616f15565b935060ff16815181106159f3576159f3616d79565b60200260200101819052505b60008160ff1667ffffffffffffffff811115615a1d57615a1d6166f7565b604051908082528060200260200182016040528015615a5057816020015b6060815260200190600190039081615a3b5790505b50905060005b8260ff168160ff161015615aa957838160ff1681518110615a7957615a79616d79565b6020026020010151828260ff1681518110615a9657615a96616d79565b6020908102919091010152600101615a56565b50979650505050505050565b6040805180820190915260008082526020820152815183511015615ada5750816119e8565b81518351602085015160009291615af091617505565b615afa9190617414565b60208401519091506001908214615b1b575082516020840151819020908220145b8015615b3657835185518690615b32908390617414565b9052505b50929392505050565b6000808260000151615b638560000151866020015186600001518760200151615e71565b615b6d9190617505565b90505b83516020850151615b819190617505565b81116153cf5781615b9181617831565b9250508260000151615bc8856020015183615bac9190617414565b8651615bb89190617414565b8386600001518760200151615e71565b615bd29190617505565b9050615b70565b60606000615be78484615b3f565b615bf2906001617505565b67ffffffffffffffff811115615c0a57615c0a6166f7565b604051908082528060200260200182016040528015615c3d57816020015b6060815260200190600190039081615c285790505b50905060005b8151811015613cca57615c59613ff986866153b0565b828281518110615c6b57615c6b616d79565b6020908102919091010152600101615c43565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310615cc7577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310615cf3576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310615d1157662386f26fc10000830492506010015b6305f5e1008310615d29576305f5e100830492506008015b6127108310615d3d57612710830492506004015b60648310615d4f576064830492506002015b600a83106119e85760010192915050565b600080858411615e675760208411615e135760008415615dab576001615d87866020617414565b615d929060086176c2565b615d9d9060026177c0565b615da79190617414565b1990505b8351811685615dba8989617505565b615dc49190617414565b805190935082165b818114615dfe57878411615de657879450505050506138fb565b83615df08161784b565b945050828451169050615dcc565b615e088785617505565b9450505050506138fb565b838320615e208588617414565b615e2a9087617505565b91505b858210615e6557848220808203615e5257615e488684617505565b93505050506138fb565b615e5d600184617414565b925050615e2d565b505b5092949350505050565b60008381868511615f7c5760208511615f2b5760008515615ebd576001615e99876020617414565b615ea49060086176c2565b615eaf9060026177c0565b615eb99190617414565b1990505b84518116600087615ece8b8b617505565b615ed89190617414565b855190915083165b828114615f1d57818610615f0557615ef88b8b617505565b96505050505050506138fb565b85615f0f81617831565b965050838651169050615ee0565b8596505050505050506138fb565b508383206000905b615f3d8689617414565b8211615f7a57858320808203615f5957839450505050506138fb565b615f64600185617505565b9350508180615f7290617831565b925050615f33565b505b615f868787617505565b979650505050505050565b60408051808201909152600080825260208201526000615fc38560000151866020015186600001518760200151615e71565b602080870180519186019190915251909150615fdf9082617414565b835284516020860151615ff29190617505565b81036160015760008552616033565b8351835161600f9190617505565b8551869061601e908390617414565b905250835161602d9082617505565b60208601525b50909392505050565b602081106160745781518352616053602084617505565b9250616060602083617505565b915061606d602082617414565b905061603c565b60001981156160a357600161608a836020617414565b616096906101006177c0565b6160a09190617414565b90505b9151835183169219169190911790915250565b606060006160c484846123ce565b80516020808301516040519394506160de93909101617862565b60405160208183030381529060405291505092915050565b610c9f806178bb83390190565b610b4a8061855a83390190565b610f9a806190a483390190565b610d5e8061a03e83390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161616d616172565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200161616d6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b818110156162245783516001600160a01b03168352602093840193909201916001016161fd565b509095945050505050565b60005b8381101561624a578181015183820152602001616232565b50506000910152565b6000815180845261626b81602086016020860161622f565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561637b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015616361577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a850301835261634b848651616253565b6020958601959094509290920191600101616311565b5091975050506020948501949290920191506001016162a7565b50929695505050505050565b600081518084526020840193506020830160005b828110156163db5781517fffffffff000000000000000000000000000000000000000000000000000000001686526020958601959091019060010161639b565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561637b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281518051604087526164516040880182616253565b905060208201519150868103602088015261646c8183616387565b96505050602093840193919091019060010161640d565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561637b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184526164e5858351616253565b945060209384019391909101906001016164ab565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561637b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b038151168652602081015190506040602087015261657b6040870182616387565b9550506020938401939190910190600101616522565b6000602082840312156165a357600080fd5b81518015158114611b0e57600080fd5b600181811c908216806165c757607f821691505b6020821081036142d4577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006020828403121561661257600080fd5b81516001600160a01b0381168114611b0e57600080fd5b60608152600061663c6060830186616253565b602083019490945250901515604090910152919050565b6001600160a01b03841681528260208201526060604082015260006142ba6060830184616253565b6001600160a01b038616815284602082015260a0604082015260006166a360a0830186616253565b6060830194909452509015156080909101529392505050565b8281526040602082015260006138fb6040830184616253565b6001600160a01b03831681526040602082015260006138fb6040830184616253565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715616749576167496166f7565b60405290565b60008067ffffffffffffffff84111561676a5761676a6166f7565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff82111715616799576167996166f7565b6040528381529050808284018510156167b157600080fd5b613cca84602083018561622f565b600082601f8301126167d057600080fd5b611b0e8383516020850161674f565b6000602082840312156167f157600080fd5b815167ffffffffffffffff81111561680857600080fd5b6119e4848285016167bf565b60006020828403121561682657600080fd5b5051919050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161686581601a85016020880161622f565b7f3a20000000000000000000000000000000000000000000000000000000000000601a9184019182015283516168a281601c84016020880161622f565b01601c01949350505050565b602081526000611b0e6020830184616253565b600083516168d381846020880161622f565b8351908301906168e781836020880161622f565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161692881601a85016020880161622f565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161696581603384016020880161622f565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b6001600160a01b03841681526001600160a01b03831660208201526060604082015260006142ba6060830184616253565b60408152600b60408201527f464f554e4452595f4f55540000000000000000000000000000000000000000006060820152608060208201526000611b0e6080830184616253565b600060208284031215616a2557600080fd5b815167ffffffffffffffff811115616a3c57600080fd5b8201601f81018413616a4d57600080fd5b6119e48482516020840161674f565b60008551616a6e818460208a0161622f565b7f2f000000000000000000000000000000000000000000000000000000000000009083019081528551616aa8816001840160208a0161622f565b7f2f00000000000000000000000000000000000000000000000000000000000000600192909101918201528451616ae681600284016020890161622f565b6001818301019150507f2f0000000000000000000000000000000000000000000000000000000000000060018201528351616b2881600284016020880161622f565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b604081526000616b736040830184616253565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e2061727469666163742000815260008251616bea81601f85016020870161622f565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b604081526000616c576040830184616253565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b604081526000616ca96040830184616253565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b27000000000000000000000000815260008251616d2081601485016020870161622f565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b604081526000616d676040830185616253565b8281036020840152611b0a8185616253565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f2200000000000000000000000000000000000000000000000000000000000000815260008251616de081600185016020870161622f565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b60008251616e2681846020870161622f565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e747261637420000000000000000000000000000000000000000000604082015260008251616ed981604b85016020870161622f565b91909101604b0192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff821660ff8103616f2b57616f2b616ee6565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c69400000000000000000000000000000000000000000000000602082015260008251616f9281602985016020870161622f565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f50415448000000000000000000006060820152608060208201526000611b0e6080830184616253565b600060208284031215616ff857600080fd5b815167ffffffffffffffff81111561700f57600080fd5b82016060818503121561702157600080fd5b617029616726565b81518060030b811461703a57600080fd5b8152602082015167ffffffffffffffff81111561705657600080fd5b617062868285016167bf565b602083015250604082015167ffffffffffffffff81111561708257600080fd5b61708e868285016167bf565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f22000000000000000000000000000000000000000000000000000000000000006020820152600082516170fa81602185016020870161622f565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f27000000000000000000000000000000000000000000000000000000000000006020820152600083516172e681602185016020880161622f565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161732381602e84016020880161622f565b01602e01949350505050565b6000825161734181846020870161622f565b9190910192915050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a200000000000000000000000000000000000000000000000602082015260008251616f9281602985016020870161622f565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a00000000000000000000000000000000000000000000000000000000000060208201526000825161740781602285016020870161622f565b9190910160220192915050565b818103818111156119e8576119e8616ee6565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825161745f81600e85016020870161622f565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b808201808211156119e8576119e8616ee6565b7f53504458206c6963656e7365206964656e74696669657220000000000000000081526000835161755081601885016020880161622f565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835161758d81601c84016020880161622f565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161769381846020870161622f565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b80820281158282048414176119e8576119e8616ee6565b6001815b6001841115617714578085048111156176f8576176f8616ee6565b600184161561770657908102905b60019390931c9280026176dd565b935093915050565b60008261772b575060016119e8565b81617738575060006119e8565b816001811461774e576002811461775857617774565b60019150506119e8565b60ff84111561776957617769616ee6565b50506001821b6119e8565b5060208310610133831016604e8410600b8410161715617797575081810a6119e8565b6177a460001984846176d9565b80600019048211156177b8576177b8616ee6565b029392505050565b6000611b0e838361771c565b81810360008312801583831316838312821617156153cf576153cf616ee6565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825161782481601c85016020870161622f565b91909101601c0192915050565b6000600019820361784457617844616ee6565b5060010190565b60008161785a5761785a616ee6565b506000190190565b6000835161787481846020880161622f565b7f3a0000000000000000000000000000000000000000000000000000000000000090830190815283516178ae81600184016020880161622f565b0160010194935050505056fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a0033608060405234801561001057600080fd5b50604051610b4a380380610b4a83398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a4c806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bf565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610945565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e858585604051610281939291906109a2565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610945565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8858585604051610281939291906109a2565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109c5565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109e7565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff81111561087457600080fd5b8601601f8101881361088557600080fd5b803567ffffffffffffffff81111561089c57600080fd5b8860208284010111156108ae57600080fd5b959894975092955050506020019190565b6000806000606084860312156108d457600080fd5b6108dd846107f9565b92506108eb602085016107f9565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006109976080830184866108fc565b979650505050505050565b8381526040602082015260006109bc6040830184866108fc565b95945050505050565b6000602082840312156109d757600080fd5b8151801515811461065e57600080fd5b6000825160005b81811015610a0857602081860181015185830152016109ee565b50600092019182525091905056fea264697066735822122041336b1568f49be1aa3dcd208e804b373772741e9b7e1726a8869e99fced60c764736f6c634300081a003360c060405260001960025534801561001657600080fd5b50604051610f9a380380610f9a833981016040819052610035916100d8565b60016000558282826001600160a01b038316158061005a57506001600160a01b038216155b8061006c57506001600160a01b038116155b1561008a5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b031916919092161790555061011b915050565b80516001600160a01b03811681146100d357600080fd5b919050565b6000806000606084860312156100ed57600080fd5b6100f6846100bc565b9250610104602085016100bc565b9150610112604085016100bc565b90509250925092565b60805160a051610e0061019a6000396000818161012601528181610216015281816103580152818161041e01528181610541015281816106630152818161077c015281816108be015281816109840152610af101526000818160d501528181610322015281816103ef0152818161088801526109550152610e006000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80635b112591116100765780636f8b44b01161005b5780636f8b44b01461017b578063743e0c9b1461018e578063d5abeb01146101a157600080fd5b80635b112591146101485780635e3e9fef1461016857600080fd5b806302d5c899146100a8578063106e6290146100bd578063116191b6146100d057806321e093b114610121575b600080fd5b6100bb6100b6366004610bca565b6101b8565b005b6100bb6100cb366004610c5c565b6104e3565b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b6001546100f79073ffffffffffffffffffffffffffffffffffffffff1681565b6100bb610176366004610bca565b61071e565b6100bb610189366004610c8f565b610a30565b6100bb61019c366004610c8f565b610abc565b6101aa60025481565b604051908152602001610118565b6101c0610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610211576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561027f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a39190610ca8565b6102ad9086610cc1565b11156102e5576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561039c57600080fd5b505af11580156103b0573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd4915061044e907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d4a565b600060405180830381600087803b15801561046857600080fd5b505af115801561047c573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516104ca93929190610da7565b60405180910390a26104dc6001600055565b5050505050565b6104eb610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff16331461053c576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ce9190610ca8565b6105d89084610cc1565b1115610610576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156106a757600080fd5b505af11580156106bb573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161070791815260200190565b60405180910390a26107196001600055565b505050565b610726610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610777576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108099190610ca8565b6108139086610cc1565b111561084b576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561090257600080fd5b505af1158015610916573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506109b4907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d4a565b600060405180830381600087803b1580156109ce57600080fd5b505af11580156109e2573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516104ca93929190610da7565b60015473ffffffffffffffffffffffffffffffffffffffff163314610a81576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a150565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610b4a57600080fd5b505af11580156104dc573d6000803e3d6000fd5b600260005403610b9a576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff81168114610bc557600080fd5b919050565b600080600080600060808688031215610be257600080fd5b610beb86610ba1565b945060208601359350604086013567ffffffffffffffff811115610c0e57600080fd5b8601601f81018813610c1f57600080fd5b803567ffffffffffffffff811115610c3657600080fd5b886020828401011115610c4857600080fd5b959894975060200195606001359392505050565b600080600060608486031215610c7157600080fd5b610c7a84610ba1565b95602085013595506040909401359392505050565b600060208284031215610ca157600080fd5b5035919050565b600060208284031215610cba57600080fd5b5051919050565b80820180821115610cfb577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff85166020820152836040820152608060608201526000610d9c608083018486610d01565b979650505050505050565b838152604060208201526000610dc1604083018486610d01565b9594505050505056fea2646970667358221220eef04aea35a49145971cb42500074f7c44d89db08a5df2b7d071494c05cc1a2a64736f6c634300081a00336080604052348015600f57600080fd5b506001600055610d3a806100246000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610895565b6102f9565b34801561010057600080fd5b5061006a61010f366004610981565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a6b565b60405180910390a15050565b610226610372565b6000610233600285610ad5565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b7e565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610c08565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610ccb565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610ce8565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff81111561072657600080fd5b8301601f8101851361073757600080fd5b803567ffffffffffffffff81111561074e57600080fd5b85602082840101111561076057600080fd5b6020919091019590945092505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e6576107e6610770565b604052919050565b600082601f8301126107ff57600080fd5b813567ffffffffffffffff81111561081957610819610770565b61084a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079f565b81815284602083860101111561085f57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087c565b6000806000606084860312156108aa57600080fd5b833567ffffffffffffffff8111156108c157600080fd5b6108cd868287016107ee565b9350506020840135915060408401356108e58161087c565b809150509250925092565b600067ffffffffffffffff82111561090a5761090a610770565b5060051b60200190565b600082601f83011261092557600080fd5b8135610938610933826108f0565b61079f565b8082825260208201915060208360051b86010192508583111561095a57600080fd5b602085015b8381101561097757803583526020928301920161095f565b5095945050505050565b60008060006060848603121561099657600080fd5b833567ffffffffffffffff8111156109ad57600080fd5b8401601f810186136109be57600080fd5b80356109cc610933826108f0565b8082825260208201915060208360051b8501019250888311156109ee57600080fd5b602084015b83811015610a3057803567ffffffffffffffff811115610a1257600080fd5b610a218b6020838901016107ee565b845250602092830192016109f3565b509550505050602084013567ffffffffffffffff811115610a5057600080fd5b610a5c86828701610914565b9250506106f36040850161088a565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610b0b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b2b578181015183820152602001610b13565b50506000910152565b60008151808452610b4c816020860160208601610b10565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610bb360a0830186610b34565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610bfe578151865260209586019590910190600101610be0565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610c86858351610b34565b94506020938401939190910190600101610c4c565b505050508281036040840152610cb18186610bcc565b915050610cc2606083018415159052565b95945050505050565b600060208284031215610cdd57600080fd5b81516104f98161087c565b60008251610cfa818460208701610b10565b919091019291505056fea2646970667358221220556072e1abafc3c4063b8cce832228b4f309b93726aaa6a6dfab20cb880c6d1864736f6c634300081a0033a2646970667358221220fb91357315243cd58b4984ef515d932060b4bcfe79bbfd334e009bce2403ecce64736f6c634300081a0033", } // GatewayEVMUUPSUpgradeTestABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/gatewayevmupgradetest.sol/gatewayevmupgradetest.go b/v2/pkg/gatewayevmupgradetest.sol/gatewayevmupgradetest.go index d59ec6f4..61308e06 100644 --- a/v2/pkg/gatewayevmupgradetest.sol/gatewayevmupgradetest.go +++ b/v2/pkg/gatewayevmupgradetest.sol/gatewayevmupgradetest.go @@ -32,7 +32,7 @@ var ( // GatewayEVMUpgradeTestMetaData contains all meta data concerning the GatewayEVMUpgradeTest contract. var GatewayEVMUpgradeTestMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"UPGRADE_INTERFACE_VERSION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"call\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"custody\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"execute\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"executeRevert\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"executeWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_tssAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_zetaToken\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"revertWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setConnector\",\"inputs\":[{\"name\":\"_zetaConnector\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setCustody\",\"inputs\":[{\"name\":\"_custody\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"tssAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"zetaConnector\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"zetaToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedV2\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ERC1967InvalidImplementation\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC1967NonPayable\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OwnableInvalidOwner\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"UUPSUnauthorizedCallContext\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UUPSUnsupportedProxiableUUID\",\"inputs\":[{\"name\":\"slot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x60a06040523060805234801561001457600080fd5b5060805161251d61003e600039600081816114730152818161149c01526118e2015261251d6000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a610195366004612061565b610467565b005b3480156101a857600080fd5b5061019a6101b73660046120c5565b610524565b6101cf6101ca3660046120c5565b610576565b6040516101dc9190612186565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b3660046120c5565b61061b565b61019a61023e3660046120c5565b610740565b34801561024f57600080fd5b5061019a61025e366004612199565b6108d8565b61019a6102713660046121fb565b610b05565b34801561028257600080fd5b5061019a6102913660046122db565b610b24565b3480156102a257600080fd5b506102ab610e2b565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e5a565b34801561031a57600080fd5b5061019a61032936600461234a565b610e6e565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf366004612061565b610f0b565b3480156103e057600080fd5b5061019a6103ef3660046122db565b610fc8565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f366004612061565b61116c565b61019a610442366004612061565b6111c8565b34801561045357600080fd5b5061019a61046236600461239c565b6112ed565b6002546001600160a01b0316156104aa576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0381166104ea576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde38484604051610569929190612421565b60405180910390a3505050565b6001546060906001600160a01b031633146105bd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006105ca858585611398565b9050846001600160a01b03167f373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e85463486866040516106099392919061243d565b60405180910390a290505b9392505050565b34600003610655576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106a2576040519150601f19603f3d011682016040523d82523d6000602084013e6106a7565b606091505b50909150508015156000036106e8576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a434600087876040516107329493929190612457565b60405180910390a350505050565b6001546001600160a01b03163314610784576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d80600081146107d2576040519150601f19603f3d011682016040523d82523d6000602084013e6107d7565b606091505b509150915081610813576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061085a9087908790600401612421565b600060405180830381600087803b15801561087457600080fd5b505af1158015610888573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c3486866040516108c99392919061243d565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109235750825b905060008267ffffffffffffffff1660011480156109405750303b155b90508115801561094e575080155b15610985576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156109e65784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a0357506001600160a01b038616155b15610a3a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a433361143f565b610a4b611450565b610a53611458565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610afc5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b0d611468565b610b1682611538565b610b208282611540565b5050565b610b2c611664565b6000546001600160a01b03163314801590610b5257506002546001600160a01b03163314155b15610b89576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610bc3576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bcd85856116e5565b610c03576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610c6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8f9190612480565b610cc5576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610cd2858484611398565b9050610cde86866116e5565b610d14576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610d74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9891906124a2565b90508015610daa57610daa8782611775565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610df19392919061243d565b60405180910390a35050610e2460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e356118d7565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610e62611939565b610e6c60006119ad565b565b83600003610ea8576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610eb3338486611a36565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610efc9493929190612457565b60405180910390a35050505050565b6000546001600160a01b031615610f4e576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116610f8e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b610fd0611664565b6000546001600160a01b03163314801590610ff657506002546001600160a01b03163314155b1561102d576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003611067576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61107b6001600160a01b0386168585611b81565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b5906110c29085908590600401612421565b600060405180830381600087803b1580156110dc57600080fd5b505af11580156110f0573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda785858560405161113b9392919061243d565b60405180910390a3610e2460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b611174611939565b6001600160a01b0381166111bc576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6111c5816119ad565b50565b34600003611202576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d806000811461124f576040519150601f19603f3d011682016040523d82523d6000602084013e611254565b606091505b5090915050801515600003611295576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b81600003611327576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611332338284611a36565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105699291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b03163486866040516113b89291906124bb565b60006040518083038185875af1925050503d80600081146113f5576040519150601f19603f3d011682016040523d82523d6000602084013e6113fa565b606091505b509150915081611436576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b611447611bf5565b6111c581611c5c565b610e6c611bf5565b611460611bf5565b610e6c611c64565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061150157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166114f57f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610e6c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111c5611939565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156115b8575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526115b5918101906124a2565b60015b6115f9576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024016111b3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611655576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016111b3565b61165f8383611c6c565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016116df576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af1158015611751573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106149190612480565b6003546001600160a01b0390811690831603611897576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af11580156117f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061181b9190612480565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561187b57600080fd5b505af115801561188f573d6000803e3d6000fd5b505050505050565b600054610b20906001600160a01b03848116911683611b81565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610e6c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3361196b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610e6c576040517f118cdaa70000000000000000000000000000000000000000000000000000000081523360048201526024016111b3565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611b6557611a616001600160a01b038316843084611cc2565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611acd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af19190612480565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611b5157600080fd5b505af1158015610afc573d6000803e3d6000fd5b60005461165f906001600160a01b038481169186911684611cc2565b6040516001600160a01b0383811660248301526044820183905261165f91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d01565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610e6c576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611174611bf5565b6118b1611bf5565b611c7582611d7d565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611cba5761165f8282611e25565b610b20611e92565b6040516001600160a01b038481166024830152838116604483015260648201839052611cfb9186918216906323b872dd90608401611bae565b50505050565b6000611d166001600160a01b03841683611eca565b90508051600014158015611d3b575080806020019051810190611d399190612480565b155b1561165f576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016111b3565b806001600160a01b03163b600003611dcc576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016111b3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611e4291906124cb565b600060405180830381855af49150503d8060008114611e7d576040519150601f19603f3d011682016040523d82523d6000602084013e611e82565b606091505b5091509150611436858383611ed8565b3415610e6c576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061061483836000611f4d565b606082611eed57611ee882612003565b610614565b8151158015611f0457506001600160a01b0384163b155b15611f46576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016111b3565b5080610614565b606081471015611f8b576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016111b3565b600080856001600160a01b03168486604051611fa791906124cb565b60006040518083038185875af1925050503d8060008114611fe4576040519150601f19603f3d011682016040523d82523d6000602084013e611fe9565b606091505b5091509150611ff9868383611ed8565b9695505050505050565b8051156120135780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b038116811461205c57600080fd5b919050565b60006020828403121561207357600080fd5b61061482612045565b60008083601f84011261208e57600080fd5b50813567ffffffffffffffff8111156120a657600080fd5b6020830191508360208285010111156120be57600080fd5b9250929050565b6000806000604084860312156120da57600080fd5b6120e384612045565b9250602084013567ffffffffffffffff8111156120ff57600080fd5b61210b8682870161207c565b9497909650939450505050565b60005b8381101561213357818101518382015260200161211b565b50506000910152565b60008151808452612154816020860160208601612118565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610614602083018461213c565b600080604083850312156121ac57600080fd5b6121b583612045565b91506121c360208401612045565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561220e57600080fd5b61221783612045565b9150602083013567ffffffffffffffff8082111561223457600080fd5b818501915085601f83011261224857600080fd5b81358181111561225a5761225a6121cc565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156122a0576122a06121cc565b816040528281528860208487010111156122b957600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000806000806000608086880312156122f357600080fd5b6122fc86612045565b945061230a60208701612045565b935060408601359250606086013567ffffffffffffffff81111561232d57600080fd5b6123398882890161207c565b969995985093965092949392505050565b60008060008060006080868803121561236257600080fd5b61236b86612045565b94506020860135935061238060408701612045565b9250606086013567ffffffffffffffff81111561232d57600080fd5b6000806000606084860312156123b157600080fd5b6123ba84612045565b9250602084013591506123cf60408501612045565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006124356020830184866123d8565b949350505050565b8381526040602082015260006114366040830184866123d8565b8481526001600160a01b0384166020820152606060408201526000611ff96060830184866123d8565b60006020828403121561249257600080fd5b8151801515811461061457600080fd5b6000602082840312156124b457600080fd5b5051919050565b8183823760009101908152919050565b600082516124dd818460208701612118565b919091019291505056fea2646970667358221220382399a935ec4c09e9c58a6b1ebef2472bb7d59558afed45c2caf83933a5ff4064736f6c63430008150033", + Bin: "0x60a060405230608052348015601357600080fd5b5060805161254461003d600039600081816114730152818161149c01526118e201526125446000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a610195366004612061565b610467565b005b3480156101a857600080fd5b5061019a6101b73660046120c5565b610524565b6101cf6101ca3660046120c5565b610576565b6040516101dc9190612186565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b3660046120c5565b61061b565b61019a61023e3660046120c5565b610740565b34801561024f57600080fd5b5061019a61025e366004612199565b6108d8565b61019a6102713660046121fb565b610b05565b34801561028257600080fd5b5061019a610291366004612302565b610b24565b3480156102a257600080fd5b506102ab610e2b565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e5a565b34801561031a57600080fd5b5061019a610329366004612371565b610e6e565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf366004612061565b610f0b565b3480156103e057600080fd5b5061019a6103ef366004612302565b610fc8565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f366004612061565b61116c565b61019a610442366004612061565b6111c8565b34801561045357600080fd5b5061019a6104623660046123c3565b6112ed565b6002546001600160a01b0316156104aa576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0381166104ea576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde38484604051610569929190612448565b60405180910390a3505050565b6001546060906001600160a01b031633146105bd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006105ca858585611398565b9050846001600160a01b03167f373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e854634868660405161060993929190612464565b60405180910390a290505b9392505050565b34600003610655576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106a2576040519150601f19603f3d011682016040523d82523d6000602084013e6106a7565b606091505b50909150508015156000036106e8576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a43460008787604051610732949392919061247e565b60405180910390a350505050565b6001546001600160a01b03163314610784576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d80600081146107d2576040519150601f19603f3d011682016040523d82523d6000602084013e6107d7565b606091505b509150915081610813576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061085a9087908790600401612448565b600060405180830381600087803b15801561087457600080fd5b505af1158015610888573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c3486866040516108c993929190612464565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109235750825b905060008267ffffffffffffffff1660011480156109405750303b155b90508115801561094e575080155b15610985576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156109e65784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a0357506001600160a01b038616155b15610a3a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a433361143f565b610a4b611450565b610a53611458565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610afc5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b0d611468565b610b1682611538565b610b208282611540565b5050565b610b2c611664565b6000546001600160a01b03163314801590610b5257506002546001600160a01b03163314155b15610b89576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610bc3576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bcd85856116e5565b610c03576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610c6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8f91906124a7565b610cc5576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610cd2858484611398565b9050610cde86866116e5565b610d14576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610d74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9891906124c9565b90508015610daa57610daa8782611775565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610df193929190612464565b60405180910390a35050610e2460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e356118d7565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610e62611939565b610e6c60006119ad565b565b83600003610ea8576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610eb3338486611a36565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610efc949392919061247e565b60405180910390a35050505050565b6000546001600160a01b031615610f4e576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116610f8e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b610fd0611664565b6000546001600160a01b03163314801590610ff657506002546001600160a01b03163314155b1561102d576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003611067576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61107b6001600160a01b0386168585611b81565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b5906110c29085908590600401612448565b600060405180830381600087803b1580156110dc57600080fd5b505af11580156110f0573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda785858560405161113b93929190612464565b60405180910390a3610e2460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b611174611939565b6001600160a01b0381166111bc576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6111c5816119ad565b50565b34600003611202576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d806000811461124f576040519150601f19603f3d011682016040523d82523d6000602084013e611254565b606091505b5090915050801515600003611295576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b81600003611327576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611332338284611a36565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105699291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b03163486866040516113b89291906124e2565b60006040518083038185875af1925050503d80600081146113f5576040519150601f19603f3d011682016040523d82523d6000602084013e6113fa565b606091505b509150915081611436576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b611447611bf5565b6111c581611c5c565b610e6c611bf5565b611460611bf5565b610e6c611c64565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061150157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166114f57f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610e6c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111c5611939565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156115b8575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526115b5918101906124c9565b60015b6115f9576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024016111b3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611655576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016111b3565b61165f8383611c6c565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016116df576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af1158015611751573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061491906124a7565b6003546001600160a01b0390811690831603611897576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af11580156117f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061181b91906124a7565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561187b57600080fd5b505af115801561188f573d6000803e3d6000fd5b505050505050565b600054610b20906001600160a01b03848116911683611b81565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610e6c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3361196b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610e6c576040517f118cdaa70000000000000000000000000000000000000000000000000000000081523360048201526024016111b3565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611b6557611a616001600160a01b038316843084611cc2565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611acd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af191906124a7565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611b5157600080fd5b505af1158015610afc573d6000803e3d6000fd5b60005461165f906001600160a01b038481169186911684611cc2565b6040516001600160a01b0383811660248301526044820183905261165f91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d01565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610e6c576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611174611bf5565b6118b1611bf5565b611c7582611d7d565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611cba5761165f8282611e25565b610b20611e92565b6040516001600160a01b038481166024830152838116604483015260648201839052611cfb9186918216906323b872dd90608401611bae565b50505050565b6000611d166001600160a01b03841683611eca565b90508051600014158015611d3b575080806020019051810190611d3991906124a7565b155b1561165f576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016111b3565b806001600160a01b03163b600003611dcc576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016111b3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611e4291906124f2565b600060405180830381855af49150503d8060008114611e7d576040519150601f19603f3d011682016040523d82523d6000602084013e611e82565b606091505b5091509150611436858383611ed8565b3415610e6c576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061061483836000611f4d565b606082611eed57611ee882612003565b610614565b8151158015611f0457506001600160a01b0384163b155b15611f46576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016111b3565b5080610614565b606081471015611f8b576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016111b3565b600080856001600160a01b03168486604051611fa791906124f2565b60006040518083038185875af1925050503d8060008114611fe4576040519150601f19603f3d011682016040523d82523d6000602084013e611fe9565b606091505b5091509150611ff9868383611ed8565b9695505050505050565b8051156120135780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b038116811461205c57600080fd5b919050565b60006020828403121561207357600080fd5b61061482612045565b60008083601f84011261208e57600080fd5b50813567ffffffffffffffff8111156120a657600080fd5b6020830191508360208285010111156120be57600080fd5b9250929050565b6000806000604084860312156120da57600080fd5b6120e384612045565b9250602084013567ffffffffffffffff8111156120ff57600080fd5b61210b8682870161207c565b9497909650939450505050565b60005b8381101561213357818101518382015260200161211b565b50506000910152565b60008151808452612154816020860160208601612118565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610614602083018461213c565b600080604083850312156121ac57600080fd5b6121b583612045565b91506121c360208401612045565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561220e57600080fd5b61221783612045565b9150602083013567ffffffffffffffff81111561223357600080fd5b8301601f8101851361224457600080fd5b803567ffffffffffffffff81111561225e5761225e6121cc565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156122ca576122ca6121cc565b6040528181528282016020018710156122e257600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008060008060006080868803121561231a57600080fd5b61232386612045565b945061233160208701612045565b935060408601359250606086013567ffffffffffffffff81111561235457600080fd5b6123608882890161207c565b969995985093965092949392505050565b60008060008060006080868803121561238957600080fd5b61239286612045565b9450602086013593506123a760408701612045565b9250606086013567ffffffffffffffff81111561235457600080fd5b6000806000606084860312156123d857600080fd5b6123e184612045565b9250602084013591506123f660408501612045565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60208152600061245c6020830184866123ff565b949350505050565b8381526040602082015260006114366040830184866123ff565b8481526001600160a01b0384166020820152606060408201526000611ff96060830184866123ff565b6000602082840312156124b957600080fd5b8151801515811461061457600080fd5b6000602082840312156124db57600080fd5b5051919050565b8183823760009101908152919050565b60008251612504818460208701612118565b919091019291505056fea2646970667358221220de349acfc8741efa6db137df12b279146aa84392e947dfc852fc83fbe89954ff64736f6c634300081a0033", } // GatewayEVMUpgradeTestABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/gatewayevmzevm.t.sol/gatewayevmzevmtest.go b/v2/pkg/gatewayevmzevm.t.sol/gatewayevmzevmtest.go index 9e5e8b70..9779a4fa 100644 --- a/v2/pkg/gatewayevmzevm.t.sol/gatewayevmzevmtest.go +++ b/v2/pkg/gatewayevmzevm.t.sol/gatewayevmzevmtest.go @@ -50,7 +50,7 @@ type StdInvariantFuzzSelector struct { // GatewayEVMZEVMTestMetaData contains all meta data concerning the GatewayEVMZEVMTest contract. var GatewayEVMZEVMTestMetaData = &bind.MetaData{ ABI: "[{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testCallReceiverEVMFromSenderZEVM\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testCallReceiverEVMFromZEVM\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallReceiverEVMFromSenderZEVM\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallReceiverEVMFromZEVM\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedERC20\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"destination\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNoParams\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNonPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strs\",\"type\":\"string[]\",\"indexed\":false,\"internalType\":\"string[]\"},{\"name\":\"nums\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"str\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"num\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedRevert\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawal\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"zrc20\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"gasfee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"protocolFlatFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CallerIsNotFungibleModule\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedZetaSent\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GasFeeTransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientZRC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTarget\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyWZETAOrFungible\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20BurnFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20TransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x6080604052600c8054600160ff199182168117909255601f805490911690911790553480156200002e57600080fd5b5061f630806200003f6000396000f3fe60806040523480156200001157600080fd5b5060043610620001325760003560e01c806385226c8111620000c0578063b5508aa9116200008b578063d7a525fc116200006e578063d7a525fc146200022a578063e20c9f711462000234578063fa7626d4146200023e57600080fd5b8063b5508aa91462000205578063ba414fa6146200020f57600080fd5b806385226c8114620001bf578063916a17c614620001d85780639683c69514620001f1578063b0464fdc14620001fb57600080fd5b80633f7286f411620001015780633f7286f4146200018857806352474413146200019257806366d9a9a0146200019c5780636ff15ccc14620001b557600080fd5b80630a9254e414620001375780631ed7831c14620001435780632ade388014620001655780633e5e3c23146200017e575b600080fd5b620001416200024c565b005b6200014d620011db565b6040516200015c919062007adb565b60405180910390f35b6200016f6200123f565b6040516200015c919062007b7e565b6200014d6200138d565b6200014d620013ef565b6200014162001451565b620001a662001cd8565b6040516200015c919062007cdf565b6200014162001e66565b620001c962002694565b6040516200015c919062007d88565b620001e26200276e565b6040516200015c919062007e0c565b620001416200286d565b620001e262002e4b565b620001c962002f4a565b6200021962003024565b60405190151581526020016200015c565b62000141620030fc565b6200014d620034b8565b601f54620002199060ff1681565b602680547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602780548216611234179055602880548216615678179055602e8054909116614321179055604051620002ac90620079bd565b60408082526004908201527f746573740000000000000000000000000000000000000000000000000000000060608201526080602082018190526003908201527f54544b000000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f08015801562000332573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516200037990620079bd565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f080158015620003fe573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081178255604080518082018252600e81527f4761746577617945564d2e736f6c0000000000000000000000000000000000006020820152602854915191909416928101929092526044820152620004e4919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc955000000000000000000000000000000000000000000000000000000001790526200351a565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff00000000000000000000000000000000000000009091168117909155602854604051919216906200056a90620079cb565b6001600160a01b03928316815291166020820152604001604051809103906000f0801580156200059e573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556020546024546028546040519284169391821692911690620005f590620079d9565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801562000632573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556028546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b158015620006df57600080fd5b505af1158015620006f4573d6000803e3d6000fd5b50506028546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b1580156200076b57600080fd5b505af115801562000780573d6000803e3d6000fd5b50506020546021546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b158015620007e757600080fd5b505af1158015620007fc573d6000803e3d6000fd5b50506020546022546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b1580156200086357600080fd5b505af115801562000878573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620008db57600080fd5b505af1158015620008f0573d6000803e3d6000fd5b50506023546026546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f42406024820152911692506340c10f199150604401600060405180830381600087803b1580156200096057600080fd5b505af115801562000975573d6000803e3d6000fd5b50506023546021546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12060248201529116925063a9059cbb91506044016020604051808303816000875af1158015620009ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a10919062007e9d565b5060405162000a1f90620079e7565b604051809103906000f08015801562000a3c573d6000803e3d6000fd5b50602580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055604080518082018252600f81527f476174657761795a45564d2e736f6c00000000000000000000000000000000006020820152602480549251929093169282019290925262000b1c919060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc4d66de8000000000000000000000000000000000000000000000000000000001790526200351a565b602980546001600160a01b03929092167fffffffffffffffffffffffff00000000000000000000000000000000000000009283168117909155602a8054909216811790915560405162000b6f90620079f5565b6001600160a01b039091168152602001604051809103906000f08015801562000b9c573d6000803e3d6000fd5b50602b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040517f06447d5600000000000000000000000000000000000000000000000000000000815273735b14bb79463307aacbed86daf3322b1e6226ab6004820181905290737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b15801562000c5257600080fd5b505af115801562000c67573d6000803e3d6000fd5b50505050600080600060405162000c7e9062007a03565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801562000cbb573d6000803e3d6000fd5b50602c80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155602a5460405160129360019360009384939192169062000d139062007a11565b62000d249695949392919062007ec1565b604051809103906000f08015801562000d41573d6000803e3d6000fd5b50602d80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155602c546040517fee2815ba0000000000000000000000000000000000000000000000000000000081526001600482015260248101929092529091169063ee2815ba90604401600060405180830381600087803b15801562000dd957600080fd5b505af115801562000dee573d6000803e3d6000fd5b5050602c546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b15801562000e5957600080fd5b505af115801562000e6e573d6000803e3d6000fd5b5050602d54602e546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f42406024820152911692506347e7ef2491506044016020604051808303816000875af115801562000ee3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f09919062007e9d565b50602d54602b546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f424060248201529116906347e7ef24906044016020604051808303816000875af115801562000f7b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000fa1919062007e9d565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200100157600080fd5b505af115801562001016573d6000803e3d6000fd5b5050602e546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156200108d57600080fd5b505af1158015620010a2573d6000803e3d6000fd5b5050602d54602a546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f424060248201529116925063095ea7b391506044016020604051808303816000875af115801562001117573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200113d919062007e9d565b506028546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b158015620011bf57600080fd5b505af1158015620011d4573d6000803e3d6000fd5b5050505050565b606060168054806020026020016040519081016040528092919081815260200182805480156200123557602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162001216575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b828210156200138457600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156200136c578382906000526020600020018054620012d89062007fb5565b80601f0160208091040260200160405190810160405280929190818152602001828054620013069062007fb5565b8015620013575780601f106200132b5761010080835404028352916020019162001357565b820191906000526020600020905b8154815290600101906020018083116200133957829003601f168201915b505050505081526020019060010190620012b6565b50505050815250508152602001906001019062001263565b50505050905090565b6060601880548060200260200160405190810160405280929190818152602001828054801562001235576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001216575050505050905090565b6060601780548060200260200160405190810160405280929190818152602001828054801562001235576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001216575050505050905090565b604080518082018252600681527f48656c6c6f2100000000000000000000000000000000000000000000000000006020820152602d54602b5492517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0393841660048201529192602a92600192670de0b6b3a7640000926000929116906370a0823190602401602060405180830381865afa158015620014fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001524919062008004565b6040519091506000907fe04d4f97000000000000000000000000000000000000000000000000000000009062001563908890889088906024016200801e565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909516949094179093526025549051919350600092620015fd926001600160a01b03909216910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602d546200163092620f4240916001600160a01b03169086906024016200804a565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7993c1e000000000000000000000000000000000000000000000000000000000179052602a5490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391620016ef916001600160a01b03919091169060009086906004016200808d565b600060405180830381600087803b1580156200170a57600080fd5b505af11580156200171f573d6000803e3d6000fd5b5050602e546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156200179657600080fd5b505af1158015620017ab573d6000803e3d6000fd5b5050602b5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b039091169250630abd8905915060340160408051601f1981840301815290829052602d547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526200184792620f4240916001600160a01b0316908d908d908d90600401620080b7565b600060405180830381600087803b1580156200186257600080fd5b505af115801562001877573d6000803e3d6000fd5b50506020546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260248101879052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015620018f557600080fd5b505af11580156200190a573d6000803e3d6000fd5b50506025546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156200199d57600080fd5b505af1158015620019b2573d6000803e3d6000fd5b50506020546040517f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa9350620019fd92506001600160a01b039091169087908b908b908b9062008110565b60405180910390a16020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801562001a9457600080fd5b505af115801562001aa9573d6000803e3d6000fd5b50506025546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f915062001af0908790869062008153565b60405180910390a26028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001b6b57600080fd5b505af115801562001b80573d6000803e3d6000fd5b50506020546025546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd9350889262001bd692169087906004016200816e565b60006040518083038185885af115801562001bf5573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405262001c2091908101906200828d565b50602d54602b546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa15801562001c8c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001cb2919062008004565b905062001cce8162001cc8620f424087620082f5565b6200353d565b5050505050505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101562001384578382906000526020600020906002020160405180604001604052908160008201805462001d329062007fb5565b80601f016020809104026020016040519081016040528092919081815260200182805462001d609062007fb5565b801562001db15780601f1062001d855761010080835404028352916020019162001db1565b820191906000526020600020905b81548152906001019060200180831162001d9357829003601f168201915b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801562001e4d57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162001df95790505b5050505050815250508152602001906001019062001cfc565b604080518082018252600681527f48656c6c6f21000000000000000000000000000000000000000000000000000060208201529051602a90600190670de0b6b3a7640000906000907fe04d4f97000000000000000000000000000000000000000000000000000000009062001ee4908790879087906024016200801e565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009490941693909317909252602a5491517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b0390921660848301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801562001fd457600080fd5b505af115801562001fe9573d6000803e3d6000fd5b5050602e54602d5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b0392831694507f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc577169350911690603401604051602081830303815290604052620f42406000602d60009054906101000a90046001600160a01b03166001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620020b0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620020d6919062008004565b87604051620020eb969594939291906200830b565b60405180910390a2602e546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200216657600080fd5b505af11580156200217b573d6000803e3d6000fd5b5050602a5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b039091169250637993c1e0915060340160408051601f1981840301815290829052602d547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526200221392620f4240916001600160a01b031690879060040162008362565b600060405180830381600087803b1580156200222e57600080fd5b505af115801562002243573d6000803e3d6000fd5b5050602d54602e546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015620022b0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620022d6919062008004565b9050620022e58160006200353d565b6020546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260248101849052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d906044015b600060405180830381600087803b1580156200236057600080fd5b505af115801562002375573d6000803e3d6000fd5b50506025546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156200240857600080fd5b505af11580156200241d573d6000803e3d6000fd5b50506020546040517f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa93506200246892506001600160a01b039091169086908a908a908a9062008110565b60405180910390a16020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015620024ff57600080fd5b505af115801562002514573d6000803e3d6000fd5b50506025546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f91506200255b908690869062008153565b60405180910390a26028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620025d657600080fd5b505af1158015620025eb573d6000803e3d6000fd5b50506020546025546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd935087926200264192169087906004016200816e565b60006040518083038185885af115801562002660573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526200268b91908101906200828d565b50505050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101562001384578382906000526020600020018054620026da9062007fb5565b80601f0160208091040260200160405190810160405280929190818152602001828054620027089062007fb5565b8015620027595780601f106200272d5761010080835404028352916020019162002759565b820191906000526020600020905b8154815290600101906020018083116200273b57829003601f168201915b505050505081526020019060010190620026b8565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015620013845760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200285457602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620028005790505b5050505050815250508152602001906001019062002792565b604080518082018252600681527f48656c6c6f21000000000000000000000000000000000000000000000000000060208201529051602a90600190670de0b6b3a7640000906000907fe04d4f970000000000000000000000000000000000000000000000000000000090620028eb908790879087906024016200801e565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009490941693909317909252602e5491517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b0390921660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620029bf57600080fd5b505af1158015620029d4573d6000803e3d6000fd5b5050602a546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801562002a6757600080fd5b505af115801562002a7c573d6000803e3d6000fd5b5050602e5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b0390911692507f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f915060340160408051601f198184030181529082905262002af2918590620083a0565b60405180910390a2602a5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b0390911690630ac7c44c90603401604051602081830303815290604052836040518363ffffffff1660e01b815260040162002b61929190620083a0565b600060405180830381600087803b15801562002b7c57600080fd5b505af115801562002b91573d6000803e3d6000fd5b50506020546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260248101859052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b15801562002c0f57600080fd5b505af115801562002c24573d6000803e3d6000fd5b50506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801562002cb757600080fd5b505af115801562002ccc573d6000803e3d6000fd5b50506025546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f915062002d13908590859062008153565b60405180910390a26028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562002d8e57600080fd5b505af115801562002da3573d6000803e3d6000fd5b50506020546025546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd9350869262002df992169086906004016200816e565b60006040518083038185885af115801562002e18573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405262002e4391908101906200828d565b505050505050565b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015620013845760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562002f3157602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162002edd5790505b5050505050815250508152602001906001019062002e6f565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156200138457838290600052602060002001805462002f909062007fb5565b80601f016020809104026020016040519081016040528092919081815260200182805462002fbe9062007fb5565b80156200300f5780601f1062002fe3576101008083540402835291602001916200300f565b820191906000526020600020905b81548152906001019060200180831162002ff157829003601f168201915b50505050508152602001906001019062002f6e565b60085460009060ff16156200303d575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015620030cf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620030f5919062008004565b1415905090565b604080518082018252600681527f48656c6c6f21000000000000000000000000000000000000000000000000000060208201529051602a90600190670de0b6b3a7640000906000907fe04d4f9700000000000000000000000000000000000000000000000000000000906200317a908790879087906024016200801e565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090951694909417909352602554905191935060009262003214926001600160a01b03909216910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f198184030181529082905262003235918490602401620083a0565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0ac7c44c00000000000000000000000000000000000000000000000000000000179052602a5490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391620032f4916001600160a01b03919091169060009086906004016200808d565b600060405180830381600087803b1580156200330f57600080fd5b505af115801562003324573d6000803e3d6000fd5b5050602e546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156200339b57600080fd5b505af1158015620033b0573d6000803e3d6000fd5b5050602b5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b03909116925063a0a1730b91506034016040516020818303038152906040528888886040518563ffffffff1660e01b81526004016200341f9493929190620083c9565b600060405180830381600087803b1580156200343a57600080fd5b505af11580156200344f573d6000803e3d6000fd5b50506020546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260248101869052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d915060440162002345565b6060601580548060200260200160405190810160405280929190818152602001828054801562001235576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001216575050505050905090565b60006200352662007a1f565b62003533848483620035be565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b158015620035a957600080fd5b505afa15801562002e43573d6000803e3d6000fd5b600080620035cd85846200363f565b9050620036346040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f787900000081525082866040516020016200361e9291906200816e565b604051602081830303815290604052856200364d565b9150505b9392505050565b600062003638838362003681565b60c0810151516000901562003675576200366d84848460c00151620036a0565b905062003638565b6200366d84846200385c565b60006200368f838362003953565b62003638838360200151846200364d565b600080620036ad62003965565b90506000620036bd868362003a3d565b90506000620036d6826060015183602001518562003f12565b90506000620036e8838389896200413c565b90506000620036f7826200509c565b602081015181519192509060030b156200376f57898260400151604051602001620037249291906200840b565b60408051601f19818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252620037669160040162008490565b60405180910390fd5b6000620037b46040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a20000000000000000000000081525083600162005280565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d906200380990849060040162008490565b602060405180830381865afa15801562003827573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200384d9190620084a5565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590620038b390879060040162008490565b600060405180830381865afa158015620038d1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620038fb91908101906200828d565b905060006200392d828560405160200162003918929190620084d0565b6040516020818303038152906040526200548e565b90506001600160a01b038116620035335784846040516020016200372492919062008503565b6200396182826000620054a1565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90620039ee908490600401620085b2565b600060405180830381865afa15801562003a0c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003a369190810190620085fb565b9250505090565b62003a706040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d905062003abc6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b62003ac785620055b2565b6020820152600062003ad986620059b7565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa15801562003b1c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003b469190810190620085fb565b8683856020015160405160200162003b62949392919062008649565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb119062003bbc90859060040162008490565b600060405180830381865afa15801562003bda573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003c049190810190620085fb565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f69062003c4e9084906004016200870f565b602060405180830381865afa15801562003c6c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003c92919062007e9d565b62003caa578160405160200162003724919062008763565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac89062003cf1908490600401620087f7565b600060405180830381865afa15801562003d0f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003d399190810190620085fb565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f69062003d829084906004016200884b565b602060405180830381865afa15801562003da0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003dc6919062007e9d565b1562003e61576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac89062003e139084906004016200884b565b600060405180830381865afa15801562003e31573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003e5b9190810190620085fb565b60408501525b846001600160a01b03166349c4fac882866000015160405160200162003e8891906200889f565b6040516020818303038152906040526040518363ffffffff1660e01b815260040162003eb6929190620083a0565b600060405180830381865afa15801562003ed4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003efe9190810190620085fb565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b606081526020019060019003908162003f2e5790505090506040518060400160405280600481526020017f67726570000000000000000000000000000000000000000000000000000000008152508160008151811062003f925762003f926200890d565b60200260200101819052506040518060400160405280600381526020017f2d726c00000000000000000000000000000000000000000000000000000000008152508160018151811062003fe95762003fe96200890d565b6020026020010181905250846040516020016200400791906200893c565b604051602081830303815290604052816002815181106200402c576200402c6200890d565b6020026020010181905250826040516020016200404a919062008988565b604051602081830303815290604052816003815181106200406f576200406f6200890d565b6020026020010181905250600062004087826200509c565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506200411a906040805180820182526000808252602091820152815180830190925284518252808501908201529062005c53565b620041325785604051602001620037249190620089cb565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d90156200418d565b511590565b62004306578260200151156200424c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a40162003766565b8260c001511562004306576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a40162003766565b6040805160ff8082526120008201909252600091816020015b60608152602001906001900390816200431f57905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806200437d9062008a5e565b935060ff16815181106200439557620043956200890d565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e3700000000000000000000000000000000000000815250604051602001620043e8919062008a80565b604051602081830303815290604052828280620044059062008a5e565b935060ff16815181106200441d576200441d6200890d565b60200260200101819052506040518060400160405280600681526020017f6465706c6f7900000000000000000000000000000000000000000000000000008152508282806200446c9062008a5e565b935060ff16815181106200448457620044846200890d565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d65000000000000000000000000000000000000815250828280620044d39062008a5e565b935060ff1681518110620044eb57620044eb6200890d565b60200260200101819052508760200151828280620045099062008a5e565b935060ff16815181106200452157620045216200890d565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e747261637450617468000000000000000000000000000000000000815250828280620045709062008a5e565b935060ff16815181106200458857620045886200890d565b602090810291909101015287518282620045a28162008a5e565b935060ff1681518110620045ba57620045ba6200890d565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e49640000000000000000000000000000000000000000000000815250828280620046099062008a5e565b935060ff16815181106200462157620046216200890d565b6020026020010181905250620046374662005cbc565b8282620046448162008a5e565b935060ff16815181106200465c576200465c6200890d565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c650000000000000000000000000000000000815250828280620046ab9062008a5e565b935060ff1681518110620046c357620046c36200890d565b602002602001018190525086828280620046dd9062008a5e565b935060ff1681518110620046f557620046f56200890d565b60209081029190910101528551156200482c5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f6465000000000000000000000060208201528282620047498162008a5e565b935060ff16815181106200476157620047616200890d565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d90620047b390899060040162008490565b600060405180830381865afa158015620047d1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620047fb9190810190620085fb565b8282620048088162008a5e565b935060ff16815181106200482057620048206200890d565b60200260200101819052505b846020015115620049085760408051808201909152601281527f2d2d766572696679536f75726365436f6465000000000000000000000000000060208201528282620048788162008a5e565b935060ff16815181106200489057620048906200890d565b60200260200101819052506040518060400160405280600581526020017f66616c7365000000000000000000000000000000000000000000000000000000815250828280620048df9062008a5e565b935060ff1681518110620048f757620048f76200890d565b602002602001018190525062004aec565b62004942620041888660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b620049df5760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282620049888162008a5e565b935060ff1681518110620049a057620049a06200890d565b60200260200101819052508460a00151604051602001620049c291906200893c565b604051602081830303815290604052828280620048df9062008a5e565b8460c0015115801562004a2457506040808901518151808301835260008082526020918201528251808401909352815183529081019082015262004a2290511590565b155b1562004aec5760408051808201909152600d81527f2d2d6c6963656e736554797065000000000000000000000000000000000000006020820152828262004a6b8162008a5e565b935060ff168151811062004a835762004a836200890d565b602002602001018190525062004a998862005d63565b60405160200162004aab91906200893c565b60405160208183030381529060405282828062004ac89062008a5e565b935060ff168151811062004ae05762004ae06200890d565b60200260200101819052505b6040808601518151808301835260008082526020918201528251808401909352815183529081019082015262004b2190511590565b62004bc15760408051808201909152600b81527f2d2d72656c6179657249640000000000000000000000000000000000000000006020820152828262004b678162008a5e565b935060ff168151811062004b7f5762004b7f6200890d565b6020026020010181905250846040015182828062004b9d9062008a5e565b935060ff168151811062004bb55762004bb56200890d565b60200260200101819052505b60608501511562004cf05760408051808201909152600681527f2d2d73616c7400000000000000000000000000000000000000000000000000006020820152828262004c0d8162008a5e565b935060ff168151811062004c255762004c256200890d565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa15801562004c95573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262004cbf9190810190620085fb565b828262004ccc8162008a5e565b935060ff168151811062004ce45762004ce46200890d565b60200260200101819052505b60e0850151511562004da45760408051808201909152600a81527f2d2d6761734c696d6974000000000000000000000000000000000000000000006020820152828262004d3d8162008a5e565b935060ff168151811062004d555762004d556200890d565b602002602001018190525062004d738560e001516000015162005cbc565b828262004d808162008a5e565b935060ff168151811062004d985762004d986200890d565b60200260200101819052505b60e0850151602001511562004e5b5760408051808201909152600a81527f2d2d6761735072696365000000000000000000000000000000000000000000006020820152828262004df48162008a5e565b935060ff168151811062004e0c5762004e0c6200890d565b602002602001018190525062004e2a8560e001516020015162005cbc565b828262004e378162008a5e565b935060ff168151811062004e4f5762004e4f6200890d565b60200260200101819052505b60e0850151604001511562004f125760408051808201909152600e81527f2d2d6d61784665655065724761730000000000000000000000000000000000006020820152828262004eab8162008a5e565b935060ff168151811062004ec35762004ec36200890d565b602002602001018190525062004ee18560e001516040015162005cbc565b828262004eee8162008a5e565b935060ff168151811062004f065762004f066200890d565b60200260200101819052505b60e0850151606001511562004fc95760408051808201909152601681527f2d2d6d61785072696f72697479466565506572476173000000000000000000006020820152828262004f628162008a5e565b935060ff168151811062004f7a5762004f7a6200890d565b602002602001018190525062004f988560e001516060015162005cbc565b828262004fa58162008a5e565b935060ff168151811062004fbd5762004fbd6200890d565b60200260200101819052505b60008160ff1667ffffffffffffffff81111562004fea5762004fea62008192565b6040519080825280602002602001820160405280156200501f57816020015b6060815260200190600190039081620050095790505b50905060005b8260ff168160ff1610156200508d57838160ff16815181106200504c576200504c6200890d565b6020026020010151828260ff16815181106200506c576200506c6200890d565b60200260200101819052508080620050849062008a5e565b91505062005025565b5093505050505b949350505050565b620050c46040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c916200514c9186910162008aed565b600060405180830381865afa1580156200516a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620051949190810190620085fb565b90506000620051a486836200688d565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b8152600401620051d6919062007d88565b6000604051808303816000875af1158015620051f6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262005220919081019062008b36565b805190915060030b158015906200523a5750602081015151155b80156200524a5750604081015151155b156200413257816000815181106200526657620052666200890d565b602002602001015160405160200162003724919062008bec565b60606000620052b68560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528651825280870190820152909150620052ef9082905b9062006a04565b156200545b57600062005373826200536c8462005365620053378a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b9062006a2d565b9062006a95565b604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150620053d990829062006a04565b156200544657604080518082018252600181527f0a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015262005443905b829062006b22565b90505b620054518162006b4a565b9250505062003638565b8215620054775784846040516020016200372492919062008dda565b505060408051602081019091526000815262003638565b6000808251602084016000f09392505050565b8160a0015115620054b157505050565b6000620054c084848462006bb9565b90506000620054cf826200509c565b602081015181519192509060030b1580156200556e5750604080518082018252600781527f5355434345535300000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526200556e90604080518082018252600080825260209182015281518083019092528451825280850190820152620052e8565b156200557c57505050505050565b604082015151156200559f57816040015160405160200162003724919062008e85565b8060405160200162003724919062008ee5565b60606000620055e88360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506200564f905b829062005c53565b15620056c357604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526200363890620056bd908390620071c0565b62006b4a565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015262005727905b829062007254565b600103620057fa57604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015262005790906200543b565b50604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526200363890620056bd905b839062006b22565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526200585b9062005647565b156200599e57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290620058c690839062007300565b905060008160018351620058db9190620082f5565b81518110620058ee57620058ee6200890d565b6020026020010151905062005995620056bd620059676040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252855182528086019082015290620071c0565b95945050505050565b8260405160200162003724919062008f52565b50919050565b60606000620059ed8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915062005a519062005647565b1562005a6257620036388162006b4a565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015262005ac3906200571f565b60010362005b3157604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526200363890620056bd90620057f2565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015262005b929062005647565b156200599e57604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529062005bfd90839062007300565b905060018151111562005c3f57806002825162005c1b9190620082f5565b8151811062005c2e5762005c2e6200890d565b602002602001015192505050919050565b508260405160200162003724919062008f52565b80518251600091111562005c6a5750600062003537565b8151835160208501516000929162005c829162009032565b62005c8e9190620082f5565b90508260200151810362005ca757600191505062003537565b82516020840151819020912014905092915050565b6060600062005ccb83620073cb565b600101905060008167ffffffffffffffff81111562005cee5762005cee62008192565b6040519080825280601f01601f19166020018201604052801562005d19576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508462005d2357509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e534544000000000000000000000000000000000000000000008184019081528551808701875283815284019290925284518086019095525184529083015260609162005df1905b8290620074b4565b1562005e3257505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015262005e939062005de9565b1562005ed457505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d495400000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015262005f359062005de9565b1562005f7657505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015262005fd79062005de9565b806200603f5750604080518082018252601081527f47504c2d322e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526200603f9062005de9565b156200608057505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620060e19062005de9565b80620061495750604080518082018252601081527f47504c2d332e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620061499062005de9565b156200618a57505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620061eb9062005de9565b80620062535750604080518082018252601181527f4c47504c2d322e312d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620062539062005de9565b156200629457505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620062f59062005de9565b806200635d5750604080518082018252601181527f4c47504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526200635d9062005de9565b156200639e57505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620063ff9062005de9565b156200644057505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620064a19062005de9565b15620064e257505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620065439062005de9565b156200658457505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620065e59062005de9565b156200662657505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e300000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620066879062005de9565b15620066c857505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620067299062005de9565b80620067915750604080518082018252601181527f4147504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620067919062005de9565b15620067d257505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e3100000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620068339062005de9565b156200687457505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b6040808401518451915162003724929060200162009048565b60608060005b8451811015620069305781858281518110620068b357620068b36200890d565b6020026020010151604051602001620068ce929190620084d0565b604051602081830303815290604052915060018551620068ef9190620082f5565b81146200691b5781604051602001620069099190620091b5565b60405160208183030381529060405291505b806200692781620091f8565b91505062006893565b5060408051600380825260808201909252600091816020015b60608152602001906001900390816200694957905050905083816000815181106200697857620069786200890d565b60200260200101819052506040518060400160405280600281526020017f2d6300000000000000000000000000000000000000000000000000000000000081525081600181518110620069cf57620069cf6200890d565b60200260200101819052508181600281518110620069f157620069f16200890d565b6020908102919091010152949350505050565b602080830151835183519284015160009362006a249291849190620074ca565b14159392505050565b6040805180820190915260008082526020820152600062006a618460000151856020015185600001518660200151620075ff565b905083602001518162006a759190620082f5565b8451859062006a86908390620082f5565b90525060208401525090919050565b604080518082019091526000808252602082015281518351101562006abc57508162003537565b602080830151908401516001911462006ae45750815160208481015190840151829020919020145b801562006b1a5782518451859062006afe908390620082f5565b905250825160208501805162006b1690839062009032565b9052505b509192915050565b604080518082019091526000808252602082015262006b4383838362007743565b5092915050565b60606000826000015167ffffffffffffffff81111562006b6e5762006b6e62008192565b6040519080825280601f01601f19166020018201604052801562006b99576020820181803683370190505b509050600060208201905062006b438185602001518660000151620077fc565b6060600062006bc762003965565b6040805160ff808252612000820190925291925060009190816020015b606081526020019060019003908162006be457905050905060006040518060400160405280600381526020017f6e7078000000000000000000000000000000000000000000000000000000000081525082828062006c429062008a5e565b935060ff168151811062006c5a5762006c5a6200890d565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e330000000000000000000000000000000000000000000000000081525060405160200162006cad919062009215565b60405160208183030381529060405282828062006cca9062008a5e565b935060ff168151811062006ce25762006ce26200890d565b60200260200101819052506040518060400160405280600881526020017f76616c696461746500000000000000000000000000000000000000000000000081525082828062006d319062008a5e565b935060ff168151811062006d495762006d496200890d565b60200260200101819052508260405160200162006d67919062008988565b60405160208183030381529060405282828062006d849062008a5e565b935060ff168151811062006d9c5762006d9c6200890d565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e74726163740000000000000000000000000000000000000000000081525082828062006deb9062008a5e565b935060ff168151811062006e035762006e036200890d565b602002602001018190525062006e1a878462007885565b828262006e278162008a5e565b935060ff168151811062006e3f5762006e3f6200890d565b60209081029190910101528551511562006ef85760408051808201909152600b81527f2d2d7265666572656e63650000000000000000000000000000000000000000006020820152828262006e948162008a5e565b935060ff168151811062006eac5762006eac6200890d565b602002602001018190525062006ec786600001518462007885565b828262006ed48162008a5e565b935060ff168151811062006eec5762006eec6200890d565b60200260200101819052505b85608001511562006f6d5760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b00000000000000006020820152828262006f448162008a5e565b935060ff168151811062006f5c5762006f5c6200890d565b602002602001018190525062006fd9565b841562006fd95760408051808201909152601281527f2d2d726571756972655265666572656e636500000000000000000000000000006020820152828262006fb58162008a5e565b935060ff168151811062006fcd5762006fcd6200890d565b60200260200101819052505b60408601515115620070805760408051808201909152600d81527f2d2d756e73616665416c6c6f770000000000000000000000000000000000000060208201528282620070268162008a5e565b935060ff16815181106200703e576200703e6200890d565b602002602001018190525085604001518282806200705c9062008a5e565b935060ff16815181106200707457620070746200890d565b60200260200101819052505b856060015115620070f05760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282620070cc8162008a5e565b935060ff1681518110620070e457620070e46200890d565b60200260200101819052505b60008160ff1667ffffffffffffffff81111562007111576200711162008192565b6040519080825280602002602001820160405280156200714657816020015b6060815260200190600190039081620071305790505b50905060005b8260ff168160ff161015620071b457838160ff16815181106200717357620071736200890d565b6020026020010151828260ff16815181106200719357620071936200890d565b60200260200101819052508080620071ab9062008a5e565b9150506200714c565b50979650505050505050565b6040805180820190915260008082526020820152815183511015620071e757508162003537565b81518351602085015160009291620071ff9162009032565b6200720b9190620082f5565b602084015190915060019082146200722d575082516020840151819020908220145b80156200724b5783518551869062007247908390620082f5565b9052505b50929392505050565b60008082600001516200727a8560000151866020015186600001518760200151620075ff565b62007286919062009032565b90505b835160208501516200729c919062009032565b811162006b435781620072af81620091f8565b9250508260000151620072ec856020015183620072cd9190620082f5565b8651620072db9190620082f5565b8386600001518760200151620075ff565b620072f8919062009032565b905062007289565b6060600062007310848462007254565b6200731d90600162009032565b67ffffffffffffffff81111562007338576200733862008192565b6040519080825280602002602001820160405280156200736d57816020015b6060815260200190600190039081620073575790505b50905060005b8151811015620073c3576200738d620056bd868662006b22565b828281518110620073a257620073a26200890d565b60200260200101819052508080620073ba90620091f8565b91505062007373565b509392505050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831062007415577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef8100000000831062007442576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106200746157662386f26fc10000830492506010015b6305f5e10083106200747a576305f5e100830492506008015b61271083106200748f57612710830492506004015b60648310620074a2576064830492506002015b600a8310620035375760010192915050565b6000620074c28383620078c9565b159392505050565b600080858411620075f5576020841162007595576000841562007520576001620074f6866020620082f5565b620075039060086200925c565b6200751090600262009373565b6200751c9190620082f5565b1990505b835181168562007531898962009032565b6200753d9190620082f5565b805190935082165b8181146200757d5787841162007562578794505050505062005094565b836200756e8162009381565b94505082845116905062007545565b62007589878562009032565b94505050505062005094565b838320620075a48588620082f5565b620075b0908762009032565b91505b858210620075f357848220808203620075dd57620075d2868462009032565b935050505062005094565b620075ea600184620082f5565b925050620075b3565b505b5092949350505050565b600083818685116200772c5760208511620076d15760008515620076565760016200762c876020620082f5565b620076399060086200925c565b6200764690600262009373565b620076529190620082f5565b1990505b84518116600087620076698b8b62009032565b620076759190620082f5565b855190915083165b828114620076c257818610620076a757620076998b8b62009032565b965050505050505062005094565b85620076b381620091f8565b9650508386511690506200767d565b85965050505050505062005094565b508383206000905b620076e58689620082f5565b82116200772a5785832080820362007704578394505050505062005094565b6200771160018562009032565b93505081806200772190620091f8565b925050620076d9565b505b62007738878762009032565b979650505050505050565b60408051808201909152600080825260208201526000620077778560000151866020015186600001518760200151620075ff565b602080870180519186019190915251909150620077959082620082f5565b835284516020860151620077aa919062009032565b8103620077bb5760008552620077f3565b83518351620077cb919062009032565b85518690620077dc908390620082f5565b9052508351620077ed908262009032565b60208601525b50909392505050565b602081106200783c57815183526200781660208462009032565b92506200782560208362009032565b915062007834602082620082f5565b9050620077fc565b60001981156200787257600162007855836020620082f5565b620078639061010062009373565b6200786f9190620082f5565b90505b9151835183169219169190911790915250565b6060600062007895848462003a3d565b8051602080830151604051939450620078b1939091016200939b565b60405160208183030381529060405291505092915050565b8151815160009190811115620078dd575081515b6020808501519084015160005b83811015620079ac57825182518082146200797557600019602087101562007952576001846200791c896020620082f5565b62007928919062009032565b620079359060086200925c565b6200794290600262009373565b6200794e9190620082f5565b1990505b818116838216818103911462007972579750620035379650505050505050565b50505b6200798260208662009032565b94506200799160208562009032565b93505050602081620079a4919062009032565b9050620078ea565b5084518651620041329190620093f7565b610cca806200941b83390190565b610b35806200a0e583390190565b610f85806200ac1a83390190565b610d31806200bb9f83390190565b6107eb806200c8d083390190565b610b42806200d0bb83390190565b6119fe806200dbfd83390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200162007a6462007a69565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200162007a646040518060800160405280600081526020016000815260200160008152602001600081525090565b6020808252825182820181905260009190848201906040850190845b8181101562007b1e5783516001600160a01b03168352928401929184019160010162007af7565b50909695505050505050565b60005b8381101562007b4757818101518382015260200162007b2d565b50506000910152565b6000815180845262007b6a81602086016020860162007b2a565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b8581101562007c70577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b8181101562007c59577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089850301835262007c4684865162007b50565b948e01949350918d019160010162007c09565b505050978a01979450509188019160010162007ba5565b50919a9950505050505050505050565b600081518084526020808501945080840160005b8381101562007cd45781517fffffffff00000000000000000000000000000000000000000000000000000000168752958201959082019060010162007c94565b509495945050505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101562007d7a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08984030185528151805187855262007d4b8886018262007b50565b91890151858303868b015291905062007d65818362007c80565b96890196945050509086019060010162007d06565b509098975050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562007dff577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088860301845262007dec85835162007b50565b9450928501929085019060010162007daf565b5092979650505050505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101562007d7a578883037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0018552815180516001600160a01b0316845287015187840187905262007e898785018262007c80565b958801959350509086019060010162007e33565b60006020828403121562007eb057600080fd5b815180151581146200363857600080fd5b6101008082526005908201527f544f4b454e0000000000000000000000000000000000000000000000000000006101208201526101406020820181905260039082018190527f544b4e000000000000000000000000000000000000000000000000000000000061016083015260ff8816604083015260608201879052610180820190861062007f79577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a083015262007f9b60c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b600181811c9082168062007fca57607f821691505b602082108103620059b1577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000602082840312156200801757600080fd5b5051919050565b60608152600062008033606083018662007b50565b602083019490945250901515604090910152919050565b6080815260006200805f608083018762007b50565b62ffffff861660208401526001600160a01b0385166040840152828103606084015262007738818562007b50565b6001600160a01b038416815282602082015260606040820152600062005995606083018462007b50565b60c081526000620080cc60c083018962007b50565b8760208401526001600160a01b03871660408401528281036060840152620080f5818762007b50565b6080840195909552505090151560a090910152949350505050565b6001600160a01b038616815284602082015260a0604082015260006200813a60a083018662007b50565b6060830194909452509015156080909101529392505050565b82815260406020820152600062005094604083018462007b50565b6001600160a01b038316815260406020820152600062005094604083018462007b50565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715620081e757620081e762008192565b60405290565b600067ffffffffffffffff808411156200820b576200820b62008192565b604051601f8501601f19908116603f0116810190828211818310171562008236576200823662008192565b816040528093508581528686860111156200825057600080fd5b6200826086602083018762007b2a565b5050509392505050565b600082601f8301126200827c57600080fd5b6200363883835160208501620081ed565b600060208284031215620082a057600080fd5b815167ffffffffffffffff811115620082b857600080fd5b62003533848285016200826a565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115620035375762003537620082c6565b6001600160a01b038716815260c0602082015260006200832f60c083018862007b50565b86604084015285606084015284608084015282810360a084015262008355818562007b50565b9998505050505050505050565b60808152600062008377608083018762007b50565b8560208401526001600160a01b0385166040840152828103606084015262007738818562007b50565b604081526000620083b5604083018562007b50565b828103602084015262003634818562007b50565b608081526000620083de608083018762007b50565b8281036020840152620083f2818762007b50565b6040840195909552505090151560609091015292915050565b7f4661696c656420746f206465706c6f7920636f6e7472616374200000000000008152600083516200844581601a85016020880162007b2a565b7f3a20000000000000000000000000000000000000000000000000000000000000601a9184019182015283516200848481601c84016020880162007b2a565b01601c01949350505050565b60208152600062003638602083018462007b50565b600060208284031215620084b857600080fd5b81516001600160a01b03811681146200363857600080fd5b60008351620084e481846020880162007b2a565b835190830190620084fa81836020880162007b2a565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e7472616374200000000000008152600083516200853d81601a85016020880162007b2a565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a9184019182015283516200857c81603384016020880162007b2a565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f5554000000000000000000000000000000000000000000606082015260806020820152600062003638608083018462007b50565b6000602082840312156200860e57600080fd5b815167ffffffffffffffff8111156200862657600080fd5b8201601f810184136200863857600080fd5b6200353384825160208401620081ed565b600085516200865d818460208a0162007b2a565b80830190507f2f0000000000000000000000000000000000000000000000000000000000000080825286516200869b816001850160208b0162007b2a565b600192019182018190528551620086ba816002850160208a0162007b2a565b60029201918201528351620086d781600384016020880162007b2a565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600392909101918201526008019695505050505050565b60408152600062008724604083018462007b50565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e20617274696661637420008152600082516200879d81601f85016020870162007b2a565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b6040815260006200880c604083018462007b50565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b60408152600062008860604083018462007b50565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b27000000000000000000000000815260008251620088d981601485016020870162007b2a565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007f220000000000000000000000000000000000000000000000000000000000000080835283516200897781600186016020880162007b2a565b600193019283015250600201919050565b600082516200899c81846020870162007b2a565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825162008a5181604b85016020870162007b2a565b91909101604b0192915050565b600060ff821660ff810362008a775762008a77620082c6565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825162008ae081602985016020870162007b2a565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f5041544800000000000000000000606082015260806020820152600062003638608083018462007b50565b60006020828403121562008b4957600080fd5b815167ffffffffffffffff8082111562008b6257600080fd5b908301906060828603121562008b7757600080fd5b62008b81620081c1565b82518060030b811462008b9357600080fd5b815260208301518281111562008ba857600080fd5b62008bb6878286016200826a565b60208301525060408301518281111562008bcf57600080fd5b62008bdd878286016200826a565b60408301525095945050505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825162008c4c81602185016020870162007b2a565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f270000000000000000000000000000000000000000000000000000000000000060208201526000835162008e3a81602185016020880162007b2a565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835162008e7981602e84016020880162007b2a565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825162008ae081602985016020870162007b2a565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a00000000000000000000000000000000000000000000000000000000000060208201526000825162008f4581602285016020870162007b2a565b9190910160220192915050565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825162008f8c81600e85016020870162007b2a565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b80820180821115620035375762003537620082c6565b7f53504458206c6963656e7365206964656e7469666965722000000000000000008152600083516200908281601885016020880162007b2a565b7f20696e20000000000000000000000000000000000000000000000000000000006018918401918201528351620090c181601c84016020880162007b2a565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b60008251620091c981846020870162007b2a565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b600060001982036200920e576200920e620082c6565b5060010190565b7f406f70656e7a657070656c696e2f75706772616465732d636f726540000000008152600082516200924f81601c85016020870162007b2a565b91909101601c0192915050565b8082028115828204841417620035375762003537620082c6565b600181815b80851115620092b75781600019048211156200929b576200929b620082c6565b80851615620092a957918102915b93841c93908002906200927b565b509250929050565b600082620092d05750600162003537565b81620092df5750600062003537565b8160018114620092f85760028114620093035762009323565b600191505062003537565b60ff841115620093175762009317620082c6565b50506001821b62003537565b5060208310610133831016604e8410600b841016171562009348575081810a62003537565b62009354838362009276565b80600019048211156200936b576200936b620082c6565b029392505050565b6000620036388383620092bf565b600081620093935762009393620082c6565b506000190190565b60008351620093af81846020880162007b2a565b7f3a000000000000000000000000000000000000000000000000000000000000009083019081528351620093eb81600184016020880162007b2a565b01600101949350505050565b818103600083128015838313168383128216171562006b435762006b43620082c656fe60806040523480156200001157600080fd5b5060405162000cca38038062000cca833981016040819052620000349162000123565b818160036200004483826200021c565b5060046200005382826200021c565b5050505050620002e8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008657600080fd5b81516001600160401b0380821115620000a357620000a36200005e565b604051601f8301601f19908116603f01168101908282118183101715620000ce57620000ce6200005e565b81604052838152602092508683858801011115620000eb57600080fd5b600091505b838210156200010f5785820183015181830184015290820190620000f0565b600093810190920192909252949350505050565b600080604083850312156200013757600080fd5b82516001600160401b03808211156200014f57600080fd5b6200015d8683870162000074565b935060208501519150808211156200017457600080fd5b50620001838582860162000074565b9150509250929050565b600181811c90821680620001a257607f821691505b602082108103620001c357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021757600081815260208120601f850160051c81016020861015620001f25750805b601f850160051c820191505b818110156200021357828155600101620001fe565b5050505b505050565b81516001600160401b038111156200023857620002386200005e565b62000250816200024984546200018d565b84620001c9565b602080601f8311600181146200028857600084156200026f5750858301515b600019600386901b1c1916600185901b17855562000213565b600085815260208120601f198616915b82811015620002b95788860151825594840194600190910190840162000298565b5085821015620002d85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6109d280620002f86000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108ba565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dc565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f39061090f565b80601f016020809104026020016040519081016040528092919081815260200182805461021f9061090f565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f39061090f565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610962565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b600060208083528351808285015260005b818110156107ec578581018301518582016040015282016107d0565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b9150604084013590509250925092565b6000602082840312156108cc57600080fd5b6108d58261082b565b9392505050565b600080604083850312156108ef57600080fd5b6108f88361082b565b91506109066020840161082b565b90509250929050565b600181811c9082168061092357607f821691505b60208210810361095c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220556869bd33d6741656e444b7d99e56e0c3a9495b8426ba227d4f4af169660e8264736f6c63430008150033608060405234801561001057600080fd5b50604051610b35380380610b3583398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a37806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bd565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610942565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102819392919061098d565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610942565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102819392919061098d565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109b0565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109d2565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff8082111561087557600080fd5b818801915088601f83011261088957600080fd5b81358181111561089857600080fd5b8960208285010111156108aa57600080fd5b9699959850939650602001949392505050565b6000806000606084860312156108d257600080fd5b6108db846107f9565b92506108e9602085016107f9565b9150604084013590509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109826080830184866108f9565b979650505050505050565b8381526040602082015260006109a76040830184866108f9565b95945050505050565b6000602082840312156109c257600080fd5b8151801515811461065e57600080fd5b6000825160005b818110156109f357602081860181015185830152016109d9565b50600092019182525091905056fea2646970667358221220add5c975d5cd9c8b4afe35ea370aed6f4c4571bcc8cfe91b243cc9add705e36664736f6c6343000815003360c060405260001960025534801561001657600080fd5b50604051610f85380380610f85833981016040819052610035916100d8565b60016000558282826001600160a01b038316158061005a57506001600160a01b038216155b8061006c57506001600160a01b038116155b1561008a5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b031916919092161790555061011b915050565b80516001600160a01b03811681146100d357600080fd5b919050565b6000806000606084860312156100ed57600080fd5b6100f6846100bc565b9250610104602085016100bc565b9150610112604085016100bc565b90509250925092565b60805160a051610deb61019a6000396000818161012601528181610216015281816103580152818161041e01528181610541015281816106630152818161077c015281816108be015281816109840152610af101526000818160d501528181610322015281816103ef0152818161088801526109550152610deb6000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80635b112591116100765780636f8b44b01161005b5780636f8b44b01461017b578063743e0c9b1461018e578063d5abeb01146101a157600080fd5b80635b112591146101485780635e3e9fef1461016857600080fd5b806302d5c899146100a8578063106e6290146100bd578063116191b6146100d057806321e093b114610121575b600080fd5b6100bb6100b6366004610bca565b6101b8565b005b6100bb6100cb366004610c59565b6104e3565b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b6001546100f79073ffffffffffffffffffffffffffffffffffffffff1681565b6100bb610176366004610bca565b61071e565b6100bb610189366004610c8c565b610a30565b6100bb61019c366004610c8c565b610abc565b6101aa60025481565b604051908152602001610118565b6101c0610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610211576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561027f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a39190610ca5565b6102ad9086610cbe565b11156102e5576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561039c57600080fd5b505af11580156103b0573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd4915061044e907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d47565b600060405180830381600087803b15801561046857600080fd5b505af115801561047c573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516104ca93929190610d92565b60405180910390a26104dc6001600055565b5050505050565b6104eb610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff16331461053c576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ce9190610ca5565b6105d89084610cbe565b1115610610576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156106a757600080fd5b505af11580156106bb573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161070791815260200190565b60405180910390a26107196001600055565b505050565b610726610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610777576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108099190610ca5565b6108139086610cbe565b111561084b576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561090257600080fd5b505af1158015610916573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506109b4907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d47565b600060405180830381600087803b1580156109ce57600080fd5b505af11580156109e2573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516104ca93929190610d92565b60015473ffffffffffffffffffffffffffffffffffffffff163314610a81576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a150565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610b4a57600080fd5b505af11580156104dc573d6000803e3d6000fd5b600260005403610b9a576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff81168114610bc557600080fd5b919050565b600080600080600060808688031215610be257600080fd5b610beb86610ba1565b945060208601359350604086013567ffffffffffffffff80821115610c0f57600080fd5b818801915088601f830112610c2357600080fd5b813581811115610c3257600080fd5b896020828501011115610c4457600080fd5b96999598505060200195606001359392505050565b600080600060608486031215610c6e57600080fd5b610c7784610ba1565b95602085013595506040909401359392505050565b600060208284031215610c9e57600080fd5b5035919050565b600060208284031215610cb757600080fd5b5051919050565b80820180821115610cf8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015260806060830152610d87608083018486610cfe565b979650505050505050565b838152604060208201526000610dac604083018486610cfe565b9594505050505056fea2646970667358221220c1247105cac785b4e05127d6e13cb72f7443d98af6ef964c579e161b48ffece664736f6c63430008150033608060405234801561001057600080fd5b506001600055610d0c806100256000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610893565b6102f9565b34801561010057600080fd5b5061006a61010f36600461097d565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a58565b60405180910390a15050565b610226610372565b6000610233600285610ac2565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b6b565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610bb9565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610c9d565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610cba565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff8082111561072757600080fd5b818501915085601f83011261073b57600080fd5b81358181111561074a57600080fd5b86602082850101111561075c57600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e4576107e461076e565b604052919050565b600082601f8301126107fd57600080fd5b813567ffffffffffffffff8111156108175761081761076e565b61084860207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079d565b81815284602083860101111561085d57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087a565b6000806000606084860312156108a857600080fd5b833567ffffffffffffffff8111156108bf57600080fd5b6108cb868287016107ec565b9350506020840135915060408401356108e38161087a565b809150509250925092565b600067ffffffffffffffff8211156109085761090861076e565b5060051b60200190565b600082601f83011261092357600080fd5b81356020610938610933836108ee565b61079d565b82815260059290921b8401810191818101908684111561095757600080fd5b8286015b84811015610972578035835291830191830161095b565b509695505050505050565b60008060006060848603121561099257600080fd5b833567ffffffffffffffff808211156109aa57600080fd5b818601915086601f8301126109be57600080fd5b813560206109ce610933836108ee565b82815260059290921b8401810191818101908a8411156109ed57600080fd5b8286015b84811015610a2557803586811115610a095760008081fd5b610a178d86838b01016107ec565b8452509183019183016109f1565b5097505087013592505080821115610a3c57600080fd5b50610a4986828701610912565b9250506106f360408501610888565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610af8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b18578181015183820152602001610b00565b50506000910152565b60008151808452610b39816020860160208601610afd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610ba060a0830186610b21565b6060830194909452509015156080909101529392505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff87168352602060808185015281875180845260a08601915060a08160051b870101935082890160005b82811015610c49577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60888703018452610c37868351610b21565b95509284019290840190600101610bfd565b50505050838203604085015285518083528187019282019060005b81811015610c8057845183529383019391830191600101610c64565b505085151560608601529250610c94915050565b95945050505050565b600060208284031215610caf57600080fd5b81516104f98161087a565b60008251610ccc818460208701610afd565b919091019291505056fea26469706673582212203c78a9c62b9e8060d1fadf61a8e6e054c88d36bdb3ea73702c26bf13f718fad664736f6c63430008150033608060405234801561001057600080fd5b506040516107eb3803806107eb83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b610758806100936000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063a0a1730b146100a4575b600080fd5b6100596100543660046104b8565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b2366004610570565b6102af565b60008383836040516024016100ce93929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061067e565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106a2565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f0ac7c44c00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690630ac7c44c9061039490889085906004016106f4565b600060405180830381600087803b1580156103ae57600080fd5b505af11580156103c2573d6000803e3d6000fd5b505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261040d57600080fd5b813567ffffffffffffffff80821115610428576104286103cd565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561046e5761046e6103cd565b8160405283815286602085880101111561048757600080fd5b836020870160208301376000602085830101528094505050505092915050565b80151581146104b557600080fd5b50565b60008060008060008060c087890312156104d157600080fd5b863567ffffffffffffffff808211156104e957600080fd5b6104f58a838b016103fc565b9750602089013596506040890135915073ffffffffffffffffffffffffffffffffffffffff8216821461052757600080fd5b9094506060880135908082111561053d57600080fd5b5061054a89828a016103fc565b9350506080870135915060a0870135610562816104a7565b809150509295509295509295565b6000806000806080858703121561058657600080fd5b843567ffffffffffffffff8082111561059e57600080fd5b6105aa888389016103fc565b955060208701359150808211156105c057600080fd5b506105cd878288016103fc565b9350506040850135915060608501356105e5816104a7565b939692955090935050565b6000815180845260005b81811015610616576020818501810151868301820152016105fa565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60608152600061066760608301866105f0565b602083019490945250901515604090910152919050565b60006020828403121561069057600080fd5b815161069b816104a7565b9392505050565b6080815260006106b560808301876105f0565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526106e981856105f0565b979650505050505050565b60408152600061070760408301856105f0565b828103602084015261071981856105f0565b9594505050505056fea2646970667358221220e92044c2cf71fdca139b2b32bfecac087bbcce9922fcdb35a853eeb2131c909c64736f6c63430008150033608060405234801561001057600080fd5b50604051610b42380380610b4283398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a378061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fb565b6103a0565b6101416101da36600461081d565b610419565b6101046101ed36600461083f565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610882565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108ae565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e906103669084908990899089908990600401610919565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff808211156107b357600080fd5b818801915088601f8301126107c757600080fd5b8135818111156107d657600080fd5b8960208285010111156107e857600080fd5b9699959850939650602001949392505050565b60006020828403121561080d57600080fd5b61081682610737565b9392505050565b6000806040838503121561083057600080fd5b50508035926020909101359150565b60008060006060848603121561085457600080fd5b61085d84610737565b925061086b60208501610737565b915061087960408501610737565b90509250925092565b6000806040838503121561089557600080fd5b823591506108a560208401610737565b90509250929050565b6000602082840312156108c057600080fd5b8151801515811461081657600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610951576020818401810151610100878401015201610933565b50610100915060008282860101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8201168401905060208901516109b060a086018273ffffffffffffffffffffffffffffffffffffffff169052565b50604089015160c085015273ffffffffffffffffffffffffffffffffffffffff88166020850152866040850152818482030160608501526109f482820186886108d0565b999850505050505050505056fea2646970667358221220d405fb7f3635781dc44a764c4ab0ab7a8b6dd42a7c2e19946b702fe5f711c84e64736f6c6343000815003360c06040523480156200001157600080fd5b50604051620019fe380380620019fe8339810160408190526200003491620001fa565b3373735b14bb79463307aacbed86daf3322b1e6226ab146200006957604051632b2add3d60e01b815260040160405180910390fd5b600762000077898262000359565b50600862000086888262000359565b506009805460ff191660ff88161790556080859052836002811115620000b057620000b062000425565b60a0816002811115620000c757620000c762000425565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506200043b9350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013057600080fd5b81516001600160401b03808211156200014d576200014d62000108565b604051601f8301601f19908116603f0116810190828211818310171562000178576200017862000108565b816040528381526020925086838588010111156200019557600080fd5b600091505b83821015620001b957858201830151818301840152908201906200019a565b600093810190920192909252949350505050565b805160038110620001dd57600080fd5b919050565b80516001600160a01b0381168114620001dd57600080fd5b600080600080600080600080610100898b0312156200021857600080fd5b88516001600160401b03808211156200023057600080fd5b6200023e8c838d016200011e565b995060208b01519150808211156200025557600080fd5b50620002648b828c016200011e565b975050604089015160ff811681146200027c57600080fd5b60608a015190965094506200029460808a01620001cd565b935060a08901519250620002ab60c08a01620001e2565b9150620002bb60e08a01620001e2565b90509295985092959890939650565b600181811c90821680620002df57607f821691505b6020821081036200030057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200035457600081815260208120601f850160051c810160208610156200032f5750805b601f850160051c820191505b8181101562000350578281556001016200033b565b5050505b505050565b81516001600160401b0381111562000375576200037562000108565b6200038d81620003868454620002ca565b8462000306565b602080601f831160018114620003c55760008415620003ac5750858301515b600019600386901b1c1916600185901b17855562000350565b600085815260208120601f198616915b82811015620003f657888601518255948401946001909101908401620003d5565b5085821015620004155787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161158f6200046f60003960006102f30152600081816102c4015281816109430152610a49015261158f6000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113b8565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c906113f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610478906113f1565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611473565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d4918690611486565b60405180910390a250600192915050565b60606008805461044c906113f1565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114a8565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ca565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce91906114f9565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad09190611516565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f919061152f565b610b299190611546565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611473565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e89908490611546565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611473565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611473565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e9190611546565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d8908490611546565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff8082111561131057600080fd5b818501915085601f83011261132457600080fd5b813581811115611336576113366112b6565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561137c5761137c6112b6565b8160405282815288602084870101111561139557600080fd5b826020860160208301376000602093820184015298969091013596505050505050565b600080604083850312156113cb57600080fd5b82356113d6816111ad565b915060208301356113e6816111ad565b809150509250929050565b600181811c9082168061140557607f821691505b60208210810361143e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611444565b604081526000611499604083018561112f565b90508260208301529392505050565b6000602082840312156114ba57600080fd5b815180151581146111a657600080fd5b6080815260006114dd608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561150b57600080fd5b81516111a6816111ad565b60006020828403121561152857600080fd5b5051919050565b80820281158282048414176104e0576104e0611444565b808201808211156104e0576104e061144456fea26469706673582212207b3cc2ba67a436eb1551f5330365347b3502d42c3eefdd1c782af1c00e42e23b64736f6c63430008150033a26469706673582212205c9a5fae739515a46198315a123a278a81122e0212bdbac3f58c8a5b7e6242a164736f6c63430008150033", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061f1148061003c6000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806385226c81116100b2578063b5508aa911610081578063d7a525fc11610066578063d7a525fc146101ec578063e20c9f71146101f4578063fa7626d4146101fc57600080fd5b8063b5508aa9146101cc578063ba414fa6146101d457600080fd5b806385226c8114610192578063916a17c6146101a75780639683c695146101bc578063b0464fdc146101c457600080fd5b80633f7286f4116100ee5780633f7286f414610165578063524744131461016d57806366d9a9a0146101755780636ff15ccc1461018a57600080fd5b80630a9254e4146101205780631ed7831c1461012a5780632ade3880146101485780633e5e3c231461015d575b600080fd5b610128610209565b005b610132611156565b60405161013f9190617602565b60405180910390f35b6101506111b8565b60405161013f919061769e565b6101326112fa565b61013261135a565b6101286113ba565b61017d611c17565b60405161013f9190617804565b610128611d99565b61019a6125a2565b60405161013f91906178a2565b6101af612672565b60405161013f9190617919565b61012861276d565b6101af612d32565b61019a612e2d565b6101dc612efd565b604051901515815260200161013f565b610128612fd1565b61013261337d565b601f546101dc9060ff1681565b602680547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602780548216611234179055602880548216615678179055602e8054909116614321179055604051610267906174ee565b60408082526004908201527f746573740000000000000000000000000000000000000000000000000000000060608201526080602082018190526003908201527f54544b000000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f0801580156102ec573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055604051610331906174ee565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f0801580156103b5573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081178255604080518082018252600e81527f4761746577617945564d2e736f6c0000000000000000000000000000000000006020820152602854915191909416928101929092526044820152610499919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc955000000000000000000000000000000000000000000000000000000001790526133dd565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff000000000000000000000000000000000000000090911681179091556028546040519192169061051d906174fb565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015610550573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392831617905560205460245460285460405192841693918216929116906105a590617508565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f0801580156105e1573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556028546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b15801561068d57600080fd5b505af11580156106a1573d6000803e3d6000fd5b50506028546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b15801561071757600080fd5b505af115801561072b573d6000803e3d6000fd5b50506020546021546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b15801561079157600080fd5b505af11580156107a5573d6000803e3d6000fd5b50506020546022546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b15801561080b57600080fd5b505af115801561081f573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561088157600080fd5b505af1158015610895573d6000803e3d6000fd5b50506023546026546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f42406024820152911692506340c10f199150604401600060405180830381600087803b15801561090457600080fd5b505af1158015610918573d6000803e3d6000fd5b50506023546021546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526207a12060248201529116925063a9059cbb91506044016020604051808303816000875af115801561098c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b091906179b0565b506040516109bd90617515565b604051809103906000f0801580156109d9573d6000803e3d6000fd5b50602580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055604080518082018252600f81527f476174657761795a45564d2e736f6c000000000000000000000000000000000060208201526024805492519290931692820192909252610ab7919060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc4d66de8000000000000000000000000000000000000000000000000000000001790526133dd565b602980546001600160a01b03929092167fffffffffffffffffffffffff00000000000000000000000000000000000000009283168117909155602a80549092168117909155604051610b0890617522565b6001600160a01b039091168152602001604051809103906000f080158015610b34573d6000803e3d6000fd5b50602b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040517f06447d5600000000000000000000000000000000000000000000000000000000815273735b14bb79463307aacbed86daf3322b1e6226ab6004820181905290737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d5690602401600060405180830381600087803b158015610be957600080fd5b505af1158015610bfd573d6000803e3d6000fd5b505050506000806000604051610c129061752f565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610c4e573d6000803e3d6000fd5b50602c80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155602a54604051601293600193600093849391921690610ca49061753c565b610cb3969594939291906179d2565b604051809103906000f080158015610ccf573d6000803e3d6000fd5b50602d80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155602c546040517fee2815ba0000000000000000000000000000000000000000000000000000000081526001600482015260248101929092529091169063ee2815ba90604401600060405180830381600087803b158015610d6657600080fd5b505af1158015610d7a573d6000803e3d6000fd5b5050602c546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b158015610de457600080fd5b505af1158015610df8573d6000803e3d6000fd5b5050602d54602e546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f42406024820152911692506347e7ef2491506044016020604051808303816000875af1158015610e6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9091906179b0565b50602d54602b546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f424060248201529116906347e7ef24906044016020604051808303816000875af1158015610f01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2591906179b0565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610f8457600080fd5b505af1158015610f98573d6000803e3d6000fd5b5050602e546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561100e57600080fd5b505af1158015611022573d6000803e3d6000fd5b5050602d54602a546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620f424060248201529116925063095ea7b391506044016020604051808303816000875af1158015611096573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ba91906179b0565b506028546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b15801561113b57600080fd5b505af115801561114f573d6000803e3d6000fd5b5050505050565b606060168054806020026020016040519081016040528092919081815260200182805480156111ae57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611190575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b828210156112f157600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b828210156112da57838290600052602060002001805461124d90617ac7565b80601f016020809104026020016040519081016040528092919081815260200182805461127990617ac7565b80156112c65780601f1061129b576101008083540402835291602001916112c6565b820191906000526020600020905b8154815290600101906020018083116112a957829003601f168201915b50505050508152602001906001019061122e565b5050505081525050815260200190600101906111dc565b50505050905090565b606060188054806020026020016040519081016040528092919081815260200182805480156111ae576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611190575050505050905090565b606060178054806020026020016040519081016040528092919081815260200182805480156111ae576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611190575050505050905090565b604080518082018252600681527f48656c6c6f2100000000000000000000000000000000000000000000000000006020820152602d54602b5492517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0393841660048201529192602a92600192670de0b6b3a7640000926000929116906370a0823190602401602060405180830381865afa158015611466573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061148a9190617b14565b6040519091506000907fe04d4f9700000000000000000000000000000000000000000000000000000000906114c790889088908890602401617b2d565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909516949094179093526025549051919350600092611560926001600160a01b03909216910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602d5461159192620f4240916001600160a01b0316908690602401617b57565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7993c1e000000000000000000000000000000000000000000000000000000000179052602a5490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba39161164e916001600160a01b0391909116906000908690600401617b96565b600060405180830381600087803b15801561166857600080fd5b505af115801561167c573d6000803e3d6000fd5b5050602e546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156116f257600080fd5b505af1158015611706573d6000803e3d6000fd5b5050602b5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b039091169250630abd8905915060340160408051601f1981840301815290829052602d547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526117a092620f4240916001600160a01b0316908d908d908d90600401617bbe565b600060405180830381600087803b1580156117ba57600080fd5b505af11580156117ce573d6000803e3d6000fd5b50506020546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260248101879052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b15801561184b57600080fd5b505af115801561185f573d6000803e3d6000fd5b50506025546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156118f157600080fd5b505af1158015611905573d6000803e3d6000fd5b50506020546040517f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa935061194e92506001600160a01b039091169087908b908b908b90617c13565b60405180910390a16020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156119e457600080fd5b505af11580156119f8573d6000803e3d6000fd5b50506025546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9150611a3d9087908690617c54565b60405180910390a26028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611ab757600080fd5b505af1158015611acb573d6000803e3d6000fd5b50506020546025546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd93508892611b1f9216908790600401617c6d565b60006040518083038185885af1158015611b3d573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052611b669190810190617d77565b50602d54602b546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015611bd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bf59190617b14565b9050611c0d81611c08620f424087617ddb565b6133fc565b5050505050505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156112f15783829060005260206000209060020201604051806040016040529081600082018054611c6e90617ac7565b80601f0160208091040260200160405190810160405280929190818152602001828054611c9a90617ac7565b8015611ce75780601f10611cbc57610100808354040283529160200191611ce7565b820191906000526020600020905b815481529060010190602001808311611cca57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611d8157602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611d2e5790505b50505050508152505081526020019060010190611c3b565b604080518082018252600681527f48656c6c6f21000000000000000000000000000000000000000000000000000060208201529051602a90600190670de0b6b3a7640000906000907fe04d4f970000000000000000000000000000000000000000000000000000000090611e1590879087908790602401617b2d565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009490941693909317909252602a5491517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b0390921660848301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015611f0457600080fd5b505af1158015611f18573d6000803e3d6000fd5b5050602e54602d5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b0392831694507f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc577169350911690603401604051602081830303815290604052620f42406000602d60009054906101000a90046001600160a01b03166001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fde573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120029190617b14565b8760405161201596959493929190617dee565b60405180910390a2602e546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561208f57600080fd5b505af11580156120a3573d6000803e3d6000fd5b5050602a5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b039091169250637993c1e0915060340160408051601f1981840301815290829052602d547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16835261213992620f4240916001600160a01b0316908790600401617e41565b600060405180830381600087803b15801561215357600080fd5b505af1158015612167573d6000803e3d6000fd5b5050602d54602e546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156121d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f79190617b14565b90506122048160006133fc565b6020546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260248101849052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d906044015b600060405180830381600087803b15801561227e57600080fd5b505af1158015612292573d6000803e3d6000fd5b50506025546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561232457600080fd5b505af1158015612338573d6000803e3d6000fd5b50506020546040517f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa935061238192506001600160a01b039091169086908a908a908a90617c13565b60405180910390a16020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561241757600080fd5b505af115801561242b573d6000803e3d6000fd5b50506025546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f91506124709086908690617c54565b60405180910390a26028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156124ea57600080fd5b505af11580156124fe573d6000803e3d6000fd5b50506020546025546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd935087926125529216908790600401617c6d565b60006040518083038185885af1158015612570573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526125999190810190617d77565b50505050505050565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156112f15783829060005260206000200180546125e590617ac7565b80601f016020809104026020016040519081016040528092919081815260200182805461261190617ac7565b801561265e5780601f106126335761010080835404028352916020019161265e565b820191906000526020600020905b81548152906001019060200180831161264157829003601f168201915b5050505050815260200190600101906125c6565b6060601d805480602002602001604051908101604052809291908181526020016000905b828210156112f15760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561275557602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116127025790505b50505050508152505081526020019060010190612696565b604080518082018252600681527f48656c6c6f21000000000000000000000000000000000000000000000000000060208201529051602a90600190670de0b6b3a7640000906000907fe04d4f9700000000000000000000000000000000000000000000000000000000906127e990879087908790602401617b2d565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009490941693909317909252602e5491517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b0390921660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156128bc57600080fd5b505af11580156128d0573d6000803e3d6000fd5b5050602a546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561296257600080fd5b505af1158015612976573d6000803e3d6000fd5b5050602e5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b0390911692507f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f915060340160408051601f19818403018152908290526129ea918590617e7b565b60405180910390a2602a5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b0390911690630ac7c44c90603401604051602081830303815290604052836040518363ffffffff1660e01b8152600401612a57929190617e7b565b600060405180830381600087803b158015612a7157600080fd5b505af1158015612a85573d6000803e3d6000fd5b50506020546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260248101859052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015612b0257600080fd5b505af1158015612b16573d6000803e3d6000fd5b50506020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015612ba857600080fd5b505af1158015612bbc573d6000803e3d6000fd5b50506025546040516001600160a01b0390911692507fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9150612c019085908590617c54565b60405180910390a26028546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612c7b57600080fd5b505af1158015612c8f573d6000803e3d6000fd5b50506020546025546040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450631cff79cd93508692612ce39216908690600401617c6d565b60006040518083038185885af1158015612d01573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052612d2a9190810190617d77565b505050505050565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156112f15760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015612e1557602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411612dc25790505b50505050508152505081526020019060010190612d56565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156112f1578382906000526020600020018054612e7090617ac7565b80601f0160208091040260200160405190810160405280929190818152602001828054612e9c90617ac7565b8015612ee95780601f10612ebe57610100808354040283529160200191612ee9565b820191906000526020600020905b815481529060010190602001808311612ecc57829003601f168201915b505050505081526020019060010190612e51565b60085460009060ff1615612f15575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015612fa6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fca9190617b14565b1415905090565b604080518082018252600681527f48656c6c6f21000000000000000000000000000000000000000000000000000060208201529051602a90600190670de0b6b3a7640000906000907fe04d4f97000000000000000000000000000000000000000000000000000000009061304d90879087908790602401617b2d565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009095169490941790935260255490519193506000926130e6926001600160a01b03909216910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052613105918490602401617e7b565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0ac7c44c00000000000000000000000000000000000000000000000000000000179052602a5490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba3916131c2916001600160a01b0391909116906000908690600401617b96565b600060405180830381600087803b1580156131dc57600080fd5b505af11580156131f0573d6000803e3d6000fd5b5050602e546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561326657600080fd5b505af115801561327a573d6000803e3d6000fd5b5050602b5460255460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b03909116925063a0a1730b91506034016040516020818303038152906040528888886040518563ffffffff1660e01b81526004016132e79493929190617ea0565b600060405180830381600087803b15801561330157600080fd5b505af1158015613315573d6000803e3d6000fd5b50506020546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260248101869052737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401612264565b606060158054806020026020016040519081016040528092919081815260200182805480156111ae576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611190575050505050905090565b60006133e7617549565b6133f284848361347b565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b15801561346757600080fd5b505afa158015612d2a573d6000803e3d6000fd5b60008061348885846134f6565b90506134eb6040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f787900000081525082866040516020016134d6929190617c6d565b60405160208183030381529060405285613502565b9150505b9392505050565b60006134ef8383613530565b60c081015151600090156135265761351f84848460c0015161354b565b90506134ef565b61351f84846136f1565b600061353c83836137dc565b6134ef83836020015184613502565b6000806135566137ec565b9050600061356486836138bf565b9050600061357b8260600151836020015185613d65565b9050600061358b83838989613f77565b9050600061359882614df4565b602081015181519192509060030b1561360b578982604001516040516020016135c2929190617ede565b60408051601f19818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261360291600401617f5f565b60405180910390fd5b600061364e6040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001614fc3565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d906136a1908490600401617f5f565b602060405180830381865afa1580156136be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136e29190617f72565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590613746908790600401617f5f565b600060405180830381865afa158015613763573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261378b9190810190617d77565b905060006137b982856040516020016137a5929190617f9b565b6040516020818303038152906040526151c3565b90506001600160a01b0381166133f25784846040516020016135c2929190617fca565b6137e8828260006151d6565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90613873908490600401618075565b600060405180830381865afa158015613890573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526138b891908101906180bc565b9250505090565b6138f16040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d905061393c6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b613945856152d9565b60208201526000613955866156be565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015613997573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526139bf91908101906180bc565b868385602001516040516020016139d99493929190618105565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190613a31908590600401617f5f565b600060405180830381865afa158015613a4e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613a7691908101906180bc565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690613abe908490600401618209565b602060405180830381865afa158015613adb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613aff91906179b0565b613b1457816040516020016135c2919061825b565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890613b599084906004016182ed565b600060405180830381865afa158015613b76573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613b9e91908101906180bc565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690613be590849060040161833f565b602060405180830381865afa158015613c02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c2691906179b0565b15613cbb576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890613c7090849060040161833f565b600060405180830381865afa158015613c8d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613cb591908101906180bc565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001613ce09190618391565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401613d0c929190617e7b565b600060405180830381865afa158015613d29573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613d5191908101906180bc565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b6060815260200190600190039081613d815790505090506040518060400160405280600481526020017f677265700000000000000000000000000000000000000000000000000000000081525081600081518110613de157613de16183fd565b60200260200101819052506040518060400160405280600381526020017f2d726c000000000000000000000000000000000000000000000000000000000081525081600181518110613e3557613e356183fd565b602002602001018190525084604051602001613e51919061842c565b60405160208183030381529060405281600281518110613e7357613e736183fd565b602002602001018190525082604051602001613e8f9190618498565b60405160208183030381529060405281600381518110613eb157613eb16183fd565b60200260200101819052506000613ec782614df4565b602080820151604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000008185019081528251808401845260008082529086015282518084019093529051825292810192909252919250613f589060408051808201825260008082526020918201528151808301909252845182528085019082015290615941565b613f6d57856040516020016135c291906184d9565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015613fc7565b511590565b61413b57826020015115614083576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401613602565b8260c001511561413b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401613602565b6040805160ff8082526120008201909252600091816020015b606081526020019060019003908161415457905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806141af9061856a565b935060ff16815181106141c4576141c46183fd565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e37000000000000000000000000000000000000008152506040516020016142159190618589565b6040516020818303038152906040528282806142309061856a565b935060ff1681518110614245576142456183fd565b60200260200101819052506040518060400160405280600681526020017f6465706c6f7900000000000000000000000000000000000000000000000000008152508282806142929061856a565b935060ff16815181106142a7576142a76183fd565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d650000000000000000000000000000000000008152508282806142f49061856a565b935060ff1681518110614309576143096183fd565b602002602001018190525087602001518282806143259061856a565b935060ff168151811061433a5761433a6183fd565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e7472616374506174680000000000000000000000000000000000008152508282806143879061856a565b935060ff168151811061439c5761439c6183fd565b6020908102919091010152875182826143b48161856a565b935060ff16815181106143c9576143c96183fd565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e496400000000000000000000000000000000000000000000008152508282806144169061856a565b935060ff168151811061442b5761442b6183fd565b602002602001018190525061443f466159a2565b828261444a8161856a565b935060ff168151811061445f5761445f6183fd565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c6500000000000000000000000000000000008152508282806144ac9061856a565b935060ff16815181106144c1576144c16183fd565b6020026020010181905250868282806144d99061856a565b935060ff16815181106144ee576144ee6183fd565b60209081029190910101528551156146155760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f646500000000000000000000006020820152828261453f8161856a565b935060ff1681518110614554576145546183fd565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d906145a4908990600401617f5f565b600060405180830381865afa1580156145c1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526145e991908101906180bc565b82826145f48161856a565b935060ff1681518110614609576146096183fd565b60200260200101819052505b8460200151156146e55760408051808201909152601281527f2d2d766572696679536f75726365436f646500000000000000000000000000006020820152828261465e8161856a565b935060ff1681518110614673576146736183fd565b60200260200101819052506040518060400160405280600581526020017f66616c73650000000000000000000000000000000000000000000000000000008152508282806146c09061856a565b935060ff16815181106146d5576146d56183fd565b60200260200101819052506148ac565b61471d613fc28660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6147b05760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826147608161856a565b935060ff1681518110614775576147756183fd565b60200260200101819052508460a00151604051602001614795919061842c565b6040516020818303038152906040528282806146c09061856a565b8460c001511580156147f35750604080890151815180830183526000808252602091820152825180840190935281518352908101908201526147f190511590565b155b156148ac5760408051808201909152600d81527f2d2d6c6963656e73655479706500000000000000000000000000000000000000602082015282826148378161856a565b935060ff168151811061484c5761484c6183fd565b602002602001018190525061486088615a42565b604051602001614870919061842c565b60405160208183030381529060405282828061488b9061856a565b935060ff16815181106148a0576148a06183fd565b60200260200101819052505b604080860151815180830183526000808252602091820152825180840190935281518352908101908201526148e090511590565b6149755760408051808201909152600b81527f2d2d72656c617965724964000000000000000000000000000000000000000000602082015282826149238161856a565b935060ff1681518110614938576149386183fd565b602002602001018190525084604001518282806149549061856a565b935060ff1681518110614969576149696183fd565b60200260200101819052505b606085015115614a965760408051808201909152600681527f2d2d73616c740000000000000000000000000000000000000000000000000000602082015282826149be8161856a565b935060ff16815181106149d3576149d36183fd565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015614a42573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614a6a91908101906180bc565b8282614a758161856a565b935060ff1681518110614a8a57614a8a6183fd565b60200260200101819052505b60e08501515115614b3d5760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282614ae08161856a565b935060ff1681518110614af557614af56183fd565b6020026020010181905250614b118560e00151600001516159a2565b8282614b1c8161856a565b935060ff1681518110614b3157614b316183fd565b60200260200101819052505b60e08501516020015115614be75760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282614b8a8161856a565b935060ff1681518110614b9f57614b9f6183fd565b6020026020010181905250614bbb8560e00151602001516159a2565b8282614bc68161856a565b935060ff1681518110614bdb57614bdb6183fd565b60200260200101819052505b60e08501516040015115614c915760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282614c348161856a565b935060ff1681518110614c4957614c496183fd565b6020026020010181905250614c658560e00151604001516159a2565b8282614c708161856a565b935060ff1681518110614c8557614c856183fd565b60200260200101819052505b60e08501516060015115614d3b5760408051808201909152601681527f2d2d6d61785072696f726974794665655065724761730000000000000000000060208201528282614cde8161856a565b935060ff1681518110614cf357614cf36183fd565b6020026020010181905250614d0f8560e00151606001516159a2565b8282614d1a8161856a565b935060ff1681518110614d2f57614d2f6183fd565b60200260200101819052505b60008160ff1667ffffffffffffffff811115614d5957614d59617c8f565b604051908082528060200260200182016040528015614d8c57816020015b6060815260200190600190039081614d775790505b50905060005b8260ff168160ff161015614de557838160ff1681518110614db557614db56183fd565b6020026020010151828260ff1681518110614dd257614dd26183fd565b6020908102919091010152600101614d92565b5093505050505b949350505050565b614e1b6040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c91614ea1918691016185f4565b600060405180830381865afa158015614ebe573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614ee691908101906180bc565b90506000614ef48683616531565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b8152600401614f2491906178a2565b6000604051808303816000875af1158015614f43573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614f6b919081019061863b565b805190915060030b15801590614f845750602081015151155b8015614f935750604081015151155b15613f6d5781600081518110614fab57614fab6183fd565b60200260200101516040516020016135c291906186f1565b60606000614ff88560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252865182528087019082015290915061502f9082905b90616686565b1561518c5760006150ac826150a6846150a06150728a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b906166ad565b9061670f565b604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615110908290616686565b1561517a57604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615177905b8290616794565b90505b615183816167ba565b925050506134ef565b82156151a55784846040516020016135c29291906188dd565b50506040805160208101909152600081526134ef565b509392505050565b6000808251602084016000f09392505050565b8160a00151156151e557505050565b60006151f2848484616823565b905060006151ff82614df4565b602081015181519192509060030b15801561529b5750604080518082018252600781527f53554343455353000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261529b90604080518082018252600080825260209182015281518083019092528451825280850190820152615029565b156152a857505050505050565b604082015151156152c85781604001516040516020016135c29190618984565b806040516020016135c291906189e2565b6060600061530e8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615373905b8290615941565b156153e257604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526134ef906153dd908390616dbe565b6167ba565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615444905b8290616e48565b60010361551157604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526154aa90615170565b50604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526134ef906153dd905b8390616794565b604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526155709061536c565b156156a757604080518082018252600181527f2f000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201819052845180860190955292518452830152906155d8908390616ee2565b9050600081600183516155eb9190617ddb565b815181106155fb576155fb6183fd565b6020026020010151905061569e6153dd6156716040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252855182528086019082015290616dbe565b95945050505050565b826040516020016135c29190618a4d565b50919050565b606060006156f38360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506157559061536c565b15615763576134ef816167ba565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526157c29061543d565b60010361582c57604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526134ef906153dd9061550a565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261588b9061536c565b156156a757604080518082018252600181527f2f000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201819052845180860190955292518452830152906158f3908390616ee2565b905060018151111561592f57806002825161590e9190617ddb565b8151811061591e5761591e6183fd565b602002602001015192505050919050565b50826040516020016135c29190618a4d565b805182516000911115615956575060006133f6565b8151835160208501516000929161596c91618b2b565b6159769190617ddb565b90508260200151810361598d5760019150506133f6565b82516020840151819020912014905092915050565b606060006159af83616f87565b600101905060008167ffffffffffffffff8111156159cf576159cf617c8f565b6040519080825280601f01601f1916602001820160405280156159f9576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084615a0357509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091615ace905b8290617069565b15615b0e57505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615b6d90615ac7565b15615bad57505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615c0c90615ac7565b15615c4c57505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615cab90615ac7565b80615d105750604080518082018252601081527f47504c2d322e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615d1090615ac7565b15615d5057505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615daf90615ac7565b80615e145750604080518082018252601081527f47504c2d332e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615e1490615ac7565b15615e5457505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615eb390615ac7565b80615f185750604080518082018252601181527f4c47504c2d322e312d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615f1890615ac7565b15615f5857505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615fb790615ac7565b8061601c5750604080518082018252601181527f4c47504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261601c90615ac7565b1561605c57505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526160bb90615ac7565b156160fb57505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261615a90615ac7565b1561619a57505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526161f990615ac7565b1561623957505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261629890615ac7565b156162d857505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261633790615ac7565b1561637757505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526163d690615ac7565b8061643b5750604080518082018252601181527f4147504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261643b90615ac7565b1561647b57505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e31000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526164da90615ac7565b1561651a57505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b604080840151845191516135c29290602001618b3e565b60608060005b84518110156165bc5781858281518110616553576165536183fd565b602002602001015160405160200161656c929190617f9b565b60405160208183030381529060405291506001855161658b9190617ddb565b81146165b457816040516020016165a29190618ca7565b60405160208183030381529060405291505b600101616537565b5060408051600380825260808201909252600091816020015b60608152602001906001900390816165d55790505090508381600081518110616600576166006183fd565b60200260200101819052506040518060400160405280600281526020017f2d6300000000000000000000000000000000000000000000000000000000000081525081600181518110616654576166546183fd565b60200260200101819052508181600281518110616673576166736183fd565b6020908102919091010152949350505050565b60208083015183518351928401516000936166a4929184919061707d565b14159392505050565b604080518082019091526000808252602082015260006166df846000015185602001518560000151866020015161718e565b90508360200151816166f19190617ddb565b84518590616700908390617ddb565b90525060208401525090919050565b60408051808201909152600080825260208201528151835110156167345750816133f6565b602080830151908401516001911461675b5750815160208481015190840151829020919020145b801561678c57825184518590616772908390617ddb565b9052508251602085018051616788908390618b2b565b9052505b509192915050565b60408051808201909152600080825260208201526167b38383836172ae565b5092915050565b60606000826000015167ffffffffffffffff8111156167db576167db617c8f565b6040519080825280601f01601f191660200182016040528015616805576020820181803683370190505b50905060006020820190506167b38185602001518660000151617359565b6060600061682f6137ec565b6040805160ff808252612000820190925291925060009190816020015b606081526020019060019003908161684c57905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806168a79061856a565b935060ff16815181106168bc576168bc6183fd565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e330000000000000000000000000000000000000000000000000081525060405160200161690d9190618ce8565b6040516020818303038152906040528282806169289061856a565b935060ff168151811061693d5761693d6183fd565b60200260200101819052506040518060400160405280600881526020017f76616c696461746500000000000000000000000000000000000000000000000081525082828061698a9061856a565b935060ff168151811061699f5761699f6183fd565b6020026020010181905250826040516020016169bb9190618498565b6040516020818303038152906040528282806169d69061856a565b935060ff16815181106169eb576169eb6183fd565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280616a389061856a565b935060ff1681518110616a4d57616a4d6183fd565b6020026020010181905250616a6287846173d3565b8282616a6d8161856a565b935060ff1681518110616a8257616a826183fd565b602090810291909101015285515115616b2e5760408051808201909152600b81527f2d2d7265666572656e636500000000000000000000000000000000000000000060208201528282616ad48161856a565b935060ff1681518110616ae957616ae96183fd565b6020026020010181905250616b028660000151846173d3565b8282616b0d8161856a565b935060ff1681518110616b2257616b226183fd565b60200260200101819052505b856080015115616b9c5760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282616b778161856a565b935060ff1681518110616b8c57616b8c6183fd565b6020026020010181905250616c02565b8415616c025760408051808201909152601281527f2d2d726571756972655265666572656e6365000000000000000000000000000060208201528282616be18161856a565b935060ff1681518110616bf657616bf66183fd565b60200260200101819052505b60408601515115616c9e5760408051808201909152600d81527f2d2d756e73616665416c6c6f770000000000000000000000000000000000000060208201528282616c4c8161856a565b935060ff1681518110616c6157616c616183fd565b60200260200101819052508560400151828280616c7d9061856a565b935060ff1681518110616c9257616c926183fd565b60200260200101819052505b856060015115616d085760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282616ce78161856a565b935060ff1681518110616cfc57616cfc6183fd565b60200260200101819052505b60008160ff1667ffffffffffffffff811115616d2657616d26617c8f565b604051908082528060200260200182016040528015616d5957816020015b6060815260200190600190039081616d445790505b50905060005b8260ff168160ff161015616db257838160ff1681518110616d8257616d826183fd565b6020026020010151828260ff1681518110616d9f57616d9f6183fd565b6020908102919091010152600101616d5f565b50979650505050505050565b6040805180820190915260008082526020820152815183511015616de35750816133f6565b81518351602085015160009291616df991618b2b565b616e039190617ddb565b60208401519091506001908214616e24575082516020840151819020908220145b8015616e3f57835185518690616e3b908390617ddb565b9052505b50929392505050565b6000808260000151616e6c856000015186602001518660000151876020015161718e565b616e769190618b2b565b90505b83516020850151616e8a9190618b2b565b81116167b35781616e9a81618d2d565b9250508260000151616ed1856020015183616eb59190617ddb565b8651616ec19190617ddb565b838660000151876020015161718e565b616edb9190618b2b565b9050616e79565b60606000616ef08484616e48565b616efb906001618b2b565b67ffffffffffffffff811115616f1357616f13617c8f565b604051908082528060200260200182016040528015616f4657816020015b6060815260200190600190039081616f315790505b50905060005b81518110156151bb57616f626153dd8686616794565b828281518110616f7457616f746183fd565b6020908102919091010152600101616f4c565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310616fd0577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310616ffc576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061701a57662386f26fc10000830492506010015b6305f5e1008310617032576305f5e100830492506008015b612710831061704657612710830492506004015b60648310617058576064830492506002015b600a83106133f65760010192915050565b60006170758383617413565b159392505050565b600080858411617184576020841161713057600084156170c85760016170a4866020617ddb565b6170af906008618d47565b6170ba906002618e45565b6170c49190617ddb565b1990505b83518116856170d78989618b2b565b6170e19190617ddb565b805190935082165b81811461711b578784116171035787945050505050614dec565b8361710d81618e51565b9450508284511690506170e9565b6171258785618b2b565b945050505050614dec565b83832061713d8588617ddb565b6171479087618b2b565b91505b8582106171825784822080820361716f576171658684618b2b565b9350505050614dec565b61717a600184617ddb565b92505061714a565b505b5092949350505050565b60008381868511617299576020851161724857600085156171da5760016171b6876020617ddb565b6171c1906008618d47565b6171cc906002618e45565b6171d69190617ddb565b1990505b845181166000876171eb8b8b618b2b565b6171f59190617ddb565b855190915083165b82811461723a57818610617222576172158b8b618b2b565b9650505050505050614dec565b8561722c81618d2d565b9650508386511690506171fd565b859650505050505050614dec565b508383206000905b61725a8689617ddb565b8211617297578583208082036172765783945050505050614dec565b617281600185618b2b565b935050818061728f90618d2d565b925050617250565b505b6172a38787618b2b565b979650505050505050565b604080518082019091526000808252602082015260006172e0856000015186602001518660000151876020015161718e565b6020808701805191860191909152519091506172fc9082617ddb565b83528451602086015161730f9190618b2b565b810361731e5760008552617350565b8351835161732c9190618b2b565b8551869061733b908390617ddb565b905250835161734a9082618b2b565b60208601525b50909392505050565b602081106173915781518352617370602084618b2b565b925061737d602083618b2b565b915061738a602082617ddb565b9050617359565b60001981156173c05760016173a7836020617ddb565b6173b390610100618e45565b6173bd9190617ddb565b90505b9151835183169219169190911790915250565b606060006173e184846138bf565b80516020808301516040519394506173fb93909101618e68565b60405160208183030381529060405291505092915050565b8151815160009190811115617426575081515b6020808501519084015160005b838110156174df57825182518082146174af57600019602087101561748e57600184617460896020617ddb565b61746a9190618b2b565b617475906008618d47565b617480906002618e45565b61748a9190617ddb565b1990505b81811683821681810391146174ac5797506133f69650505050505050565b50505b6174ba602086618b2b565b94506174c7602085618b2b565b935050506020816174d89190618b2b565b9050617433565b5084518651613f6d9190618ec0565b610c9f80618ee183390190565b610b4a80619b8083390190565b610f9a8061a6ca83390190565b610d5e8061b66483390190565b6107f68061c3c283390190565b610b3f8061cbb883390190565b6119e88061d6f783390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161758c617591565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200161758c6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b818110156176435783516001600160a01b031683526020938401939092019160010161761c565b509095945050505050565b60005b83811015617669578181015183820152602001617651565b50506000910152565b6000815180845261768a81602086016020860161764e565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561779a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015617780577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a850301835261776a848651617672565b6020958601959094509290920191600101617730565b5091975050506020948501949290920191506001016176c6565b50929695505050505050565b600081518084526020840193506020830160005b828110156177fa5781517fffffffff00000000000000000000000000000000000000000000000000000000168652602095860195909101906001016177ba565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561779a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281518051604087526178706040880182617672565b905060208201519150868103602088015261788b81836177a6565b96505050602093840193919091019060010161782c565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561779a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452617904858351617672565b945060209384019391909101906001016178ca565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561779a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b038151168652602081015190506040602087015261799a60408701826177a6565b9550506020938401939190910190600101617941565b6000602082840312156179c257600080fd5b815180151581146134ef57600080fd5b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff8816604083015286606083015260038610617a8c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a0830152617aad60c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b600181811c90821680617adb57607f821691505b6020821081036156b8577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060208284031215617b2657600080fd5b5051919050565b606081526000617b406060830186617672565b602083019490945250901515604090910152919050565b608081526000617b6a6080830187617672565b62ffffff861660208401526001600160a01b038516604084015282810360608401526172a38185617672565b6001600160a01b038416815282602082015260606040820152600061569e6060830184617672565b60c081526000617bd160c0830189617672565b8760208401526001600160a01b03871660408401528281036060840152617bf88187617672565b6080840195909552505090151560a090910152949350505050565b6001600160a01b038616815284602082015260a060408201526000617c3b60a0830186617672565b6060830194909452509015156080909101529392505050565b828152604060208201526000614dec6040830184617672565b6001600160a01b0383168152604060208201526000614dec6040830184617672565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715617ce157617ce1617c8f565b60405290565b60008067ffffffffffffffff841115617d0257617d02617c8f565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff82111715617d3157617d31617c8f565b604052838152905080828401851015617d4957600080fd5b6151bb84602083018561764e565b600082601f830112617d6857600080fd5b6134ef83835160208501617ce7565b600060208284031215617d8957600080fd5b815167ffffffffffffffff811115617da057600080fd5b6133f284828501617d57565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156133f6576133f6617dac565b6001600160a01b038716815260c060208201526000617e1060c0830188617672565b86604084015285606084015284608084015282810360a0840152617e348185617672565b9998505050505050505050565b608081526000617e546080830187617672565b8560208401526001600160a01b038516604084015282810360608401526172a38185617672565b604081526000617e8e6040830185617672565b82810360208401526134eb8185617672565b608081526000617eb36080830187617672565b8281036020840152617ec58187617672565b6040840195909552505090151560609091015292915050565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351617f1681601a85016020880161764e565b7f3a20000000000000000000000000000000000000000000000000000000000000601a918401918201528351617f5381601c84016020880161764e565b01601c01949350505050565b6020815260006134ef6020830184617672565b600060208284031215617f8457600080fd5b81516001600160a01b03811681146134ef57600080fd5b60008351617fad81846020880161764e565b835190830190617fc181836020880161764e565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161800281601a85016020880161764e565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161803f81603384016020880161764e565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f555400000000000000000000000000000000000000000060608201526080602082015260006134ef6080830184617672565b6000602082840312156180ce57600080fd5b815167ffffffffffffffff8111156180e557600080fd5b8201601f810184136180f657600080fd5b6133f284825160208401617ce7565b60008551618117818460208a0161764e565b7f2f000000000000000000000000000000000000000000000000000000000000009083019081528551618151816001840160208a0161764e565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161818f81600284016020890161764e565b6001818301019150507f2f00000000000000000000000000000000000000000000000000000000000000600182015283516181d181600284016020880161764e565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b60408152600061821c6040830184617672565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161829381601f85016020870161764e565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b6040815260006183006040830184617672565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b6040815260006183526040830184617672565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b270000000000000000000000008152600082516183c981601485016020870161764e565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f220000000000000000000000000000000000000000000000000000000000000081526000825161846481600185016020870161764e565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b600082516184aa81846020870161764e565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161855d81604b85016020870161764e565b91909101604b0192915050565b600060ff821660ff810361858057618580617dac565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c694000000000000000000000000000000000000000000000006020820152600082516185e781602985016020870161764e565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f504154480000000000000000000060608201526080602082015260006134ef6080830184617672565b60006020828403121561864d57600080fd5b815167ffffffffffffffff81111561866457600080fd5b82016060818503121561867657600080fd5b61867e617cbe565b81518060030b811461868f57600080fd5b8152602082015167ffffffffffffffff8111156186ab57600080fd5b6186b786828501617d57565b602083015250604082015167ffffffffffffffff8111156186d757600080fd5b6186e386828501617d57565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161874f81602185016020870161764e565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f270000000000000000000000000000000000000000000000000000000000000060208201526000835161893b81602185016020880161764e565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835161897881602e84016020880161764e565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a2000000000000000000000000000000000000000000000006020820152600082516185e781602985016020870161764e565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a000000000000000000000000000000000000000000000000000000000000602082015260008251618a4081602285016020870161764e565b9190910160220192915050565b7f436f6e7472616374206e616d6520000000000000000000000000000000000000815260008251618a8581600e85016020870161764e565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b808201808211156133f6576133f6617dac565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351618b7681601885016020880161764e565b7f20696e20000000000000000000000000000000000000000000000000000000006018918401918201528351618bb381601c84016020880161764e565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b60008251618cb981846020870161764e565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f72654000000000815260008251618d2081601c85016020870161764e565b91909101601c0192915050565b60006000198203618d4057618d40617dac565b5060010190565b80820281158282048414176133f6576133f6617dac565b6001815b6001841115618d9957808504811115618d7d57618d7d617dac565b6001841615618d8b57908102905b60019390931c928002618d62565b935093915050565b600082618db0575060016133f6565b81618dbd575060006133f6565b8160018114618dd35760028114618ddd57618df9565b60019150506133f6565b60ff841115618dee57618dee617dac565b50506001821b6133f6565b5060208310610133831016604e8410600b8410161715618e1c575081810a6133f6565b618e296000198484618d5e565b8060001904821115618e3d57618e3d617dac565b029392505050565b60006134ef8383618da1565b600081618e6057618e60617dac565b506000190190565b60008351618e7a81846020880161764e565b7f3a000000000000000000000000000000000000000000000000000000000000009083019081528351618eb481600184016020880161764e565b01600101949350505050565b81810360008312801583831316838312821617156167b3576167b3617dac56fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a0033608060405234801561001057600080fd5b50604051610b4a380380610b4a83398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a4c806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bf565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610945565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e858585604051610281939291906109a2565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610945565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8858585604051610281939291906109a2565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109c5565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109e7565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff81111561087457600080fd5b8601601f8101881361088557600080fd5b803567ffffffffffffffff81111561089c57600080fd5b8860208284010111156108ae57600080fd5b959894975092955050506020019190565b6000806000606084860312156108d457600080fd5b6108dd846107f9565b92506108eb602085016107f9565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006109976080830184866108fc565b979650505050505050565b8381526040602082015260006109bc6040830184866108fc565b95945050505050565b6000602082840312156109d757600080fd5b8151801515811461065e57600080fd5b6000825160005b81811015610a0857602081860181015185830152016109ee565b50600092019182525091905056fea264697066735822122041336b1568f49be1aa3dcd208e804b373772741e9b7e1726a8869e99fced60c764736f6c634300081a003360c060405260001960025534801561001657600080fd5b50604051610f9a380380610f9a833981016040819052610035916100d8565b60016000558282826001600160a01b038316158061005a57506001600160a01b038216155b8061006c57506001600160a01b038116155b1561008a5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b031916919092161790555061011b915050565b80516001600160a01b03811681146100d357600080fd5b919050565b6000806000606084860312156100ed57600080fd5b6100f6846100bc565b9250610104602085016100bc565b9150610112604085016100bc565b90509250925092565b60805160a051610e0061019a6000396000818161012601528181610216015281816103580152818161041e01528181610541015281816106630152818161077c015281816108be015281816109840152610af101526000818160d501528181610322015281816103ef0152818161088801526109550152610e006000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80635b112591116100765780636f8b44b01161005b5780636f8b44b01461017b578063743e0c9b1461018e578063d5abeb01146101a157600080fd5b80635b112591146101485780635e3e9fef1461016857600080fd5b806302d5c899146100a8578063106e6290146100bd578063116191b6146100d057806321e093b114610121575b600080fd5b6100bb6100b6366004610bca565b6101b8565b005b6100bb6100cb366004610c5c565b6104e3565b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b6001546100f79073ffffffffffffffffffffffffffffffffffffffff1681565b6100bb610176366004610bca565b61071e565b6100bb610189366004610c8f565b610a30565b6100bb61019c366004610c8f565b610abc565b6101aa60025481565b604051908152602001610118565b6101c0610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610211576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561027f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a39190610ca8565b6102ad9086610cc1565b11156102e5576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561039c57600080fd5b505af11580156103b0573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd4915061044e907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d4a565b600060405180830381600087803b15801561046857600080fd5b505af115801561047c573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516104ca93929190610da7565b60405180910390a26104dc6001600055565b5050505050565b6104eb610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff16331461053c576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ce9190610ca8565b6105d89084610cc1565b1115610610576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156106a757600080fd5b505af11580156106bb573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161070791815260200190565b60405180910390a26107196001600055565b505050565b610726610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610777576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108099190610ca8565b6108139086610cc1565b111561084b576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561090257600080fd5b505af1158015610916573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506109b4907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d4a565b600060405180830381600087803b1580156109ce57600080fd5b505af11580156109e2573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516104ca93929190610da7565b60015473ffffffffffffffffffffffffffffffffffffffff163314610a81576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a150565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610b4a57600080fd5b505af11580156104dc573d6000803e3d6000fd5b600260005403610b9a576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff81168114610bc557600080fd5b919050565b600080600080600060808688031215610be257600080fd5b610beb86610ba1565b945060208601359350604086013567ffffffffffffffff811115610c0e57600080fd5b8601601f81018813610c1f57600080fd5b803567ffffffffffffffff811115610c3657600080fd5b886020828401011115610c4857600080fd5b959894975060200195606001359392505050565b600080600060608486031215610c7157600080fd5b610c7a84610ba1565b95602085013595506040909401359392505050565b600060208284031215610ca157600080fd5b5035919050565b600060208284031215610cba57600080fd5b5051919050565b80820180821115610cfb577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff85166020820152836040820152608060608201526000610d9c608083018486610d01565b979650505050505050565b838152604060208201526000610dc1604083018486610d01565b9594505050505056fea2646970667358221220eef04aea35a49145971cb42500074f7c44d89db08a5df2b7d071494c05cc1a2a64736f6c634300081a00336080604052348015600f57600080fd5b506001600055610d3a806100246000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610895565b6102f9565b34801561010057600080fd5b5061006a61010f366004610981565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a6b565b60405180910390a15050565b610226610372565b6000610233600285610ad5565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b7e565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610c08565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610ccb565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610ce8565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff81111561072657600080fd5b8301601f8101851361073757600080fd5b803567ffffffffffffffff81111561074e57600080fd5b85602082840101111561076057600080fd5b6020919091019590945092505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e6576107e6610770565b604052919050565b600082601f8301126107ff57600080fd5b813567ffffffffffffffff81111561081957610819610770565b61084a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079f565b81815284602083860101111561085f57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087c565b6000806000606084860312156108aa57600080fd5b833567ffffffffffffffff8111156108c157600080fd5b6108cd868287016107ee565b9350506020840135915060408401356108e58161087c565b809150509250925092565b600067ffffffffffffffff82111561090a5761090a610770565b5060051b60200190565b600082601f83011261092557600080fd5b8135610938610933826108f0565b61079f565b8082825260208201915060208360051b86010192508583111561095a57600080fd5b602085015b8381101561097757803583526020928301920161095f565b5095945050505050565b60008060006060848603121561099657600080fd5b833567ffffffffffffffff8111156109ad57600080fd5b8401601f810186136109be57600080fd5b80356109cc610933826108f0565b8082825260208201915060208360051b8501019250888311156109ee57600080fd5b602084015b83811015610a3057803567ffffffffffffffff811115610a1257600080fd5b610a218b6020838901016107ee565b845250602092830192016109f3565b509550505050602084013567ffffffffffffffff811115610a5057600080fd5b610a5c86828701610914565b9250506106f36040850161088a565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610b0b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b2b578181015183820152602001610b13565b50506000910152565b60008151808452610b4c816020860160208601610b10565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610bb360a0830186610b34565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610bfe578151865260209586019590910190600101610be0565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610c86858351610b34565b94506020938401939190910190600101610c4c565b505050508281036040840152610cb18186610bcc565b915050610cc2606083018415159052565b95945050505050565b600060208284031215610cdd57600080fd5b81516104f98161087c565b60008251610cfa818460208701610b10565b919091019291505056fea2646970667358221220556072e1abafc3c4063b8cce832228b4f309b93726aaa6a6dfab20cb880c6d1864736f6c634300081a00336080604052348015600f57600080fd5b506040516107f63803806107f6833981016040819052602c916050565b600080546001600160a01b0319166001600160a01b0392909216919091179055607e565b600060208284031215606157600080fd5b81516001600160a01b0381168114607757600080fd5b9392505050565b6107698061008d6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063a0a1730b146100a4575b600080fd5b6100596100543660046104c1565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b236600461057c565b6102af565b60008383836040516024016100ce93929190610665565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061068f565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106b3565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610665565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f0ac7c44c00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690630ac7c44c906103949088908590600401610705565b600060405180830381600087803b1580156103ae57600080fd5b505af11580156103c2573d6000803e3d6000fd5b505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261040d57600080fd5b81356020830160008067ffffffffffffffff84111561042e5761042e6103cd565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff8211171561047b5761047b6103cd565b60405283815290508082840187101561049357600080fd5b838360208301376000602085830101528094505050505092915050565b80151581146104be57600080fd5b50565b60008060008060008060c087890312156104da57600080fd5b863567ffffffffffffffff8111156104f157600080fd5b6104fd89828a016103fc565b96505060208701359450604087013573ffffffffffffffffffffffffffffffffffffffff8116811461052e57600080fd5b9350606087013567ffffffffffffffff81111561054a57600080fd5b61055689828a016103fc565b9350506080870135915060a087013561056e816104b0565b809150509295509295509295565b6000806000806080858703121561059257600080fd5b843567ffffffffffffffff8111156105a957600080fd5b6105b5878288016103fc565b945050602085013567ffffffffffffffff8111156105d257600080fd5b6105de878288016103fc565b9350506040850135915060608501356105f6816104b0565b939692955090935050565b6000815180845260005b818110156106275760208185018101518683018201520161060b565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6060815260006106786060830186610601565b602083019490945250901515604090910152919050565b6000602082840312156106a157600080fd5b81516106ac816104b0565b9392505050565b6080815260006106c66080830187610601565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526106fa8185610601565b979650505050505050565b6040815260006107186040830185610601565b828103602084015261072a8185610601565b9594505050505056fea26469706673582212204babda0c6b9bc7b1d80b616dce92ddfbe79ae0bb96aad4f2c77ffb6a8c63da7f64736f6c634300081a0033608060405234801561001057600080fd5b50604051610b3f380380610b3f83398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a348061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fd565b6103a0565b6101416101da36600461081f565b610419565b6101046101ed366004610841565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610884565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108b0565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e90610366908490899089908990899060040161091b565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff8111156107b257600080fd5b8601601f810188136107c357600080fd5b803567ffffffffffffffff8111156107da57600080fd5b8860208284010111156107ec57600080fd5b959894975092955050506020019190565b60006020828403121561080f57600080fd5b61081882610737565b9392505050565b6000806040838503121561083257600080fd5b50508035926020909101359150565b60008060006060848603121561085657600080fd5b61085f84610737565b925061086d60208501610737565b915061087b60408501610737565b90509250925092565b6000806040838503121561089757600080fd5b823591506108a760208401610737565b90509250929050565b6000602082840312156108c257600080fd5b8151801515811461081857600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610953576020818401810151610100878401015201610935565b5060008482016101000152602089015173ffffffffffffffffffffffffffffffffffffffff811660a0860152601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168401915050604088015160c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401526101008382030160608401526109f2610100820185876108d2565b9897505050505050505056fea2646970667358221220fbd69f8a6a30bdc247946500ad2bb4f7e9f585a260ef649595b89d427fb12f2064736f6c634300081a003360c060405234801561001057600080fd5b506040516119e83803806119e883398101604081905261002f916101db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600761006f898261032d565b50600861007c888261032d565b506009805460ff191660ff881617905560808590528360028111156100a3576100a36103eb565b60a08160028111156100b7576100b76103eb565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104019350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261011e57600080fd5b81516001600160401b03811115610137576101376100f7565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610165576101656100f7565b60405281815283820160200185101561017d57600080fd5b60005b8281101561019c57602081860181015183830182015201610180565b506000918101602001919091529392505050565b8051600381106101bf57600080fd5b919050565b80516001600160a01b03811681146101bf57600080fd5b600080600080600080600080610100898b0312156101f857600080fd5b88516001600160401b0381111561020e57600080fd5b61021a8b828c0161010d565b60208b015190995090506001600160401b0381111561023857600080fd5b6102448b828c0161010d565b975050604089015160ff8116811461025b57600080fd5b60608a0151909650945061027160808a016101b0565b60a08a0151909450925061028760c08a016101c4565b915061029560e08a016101c4565b90509295985092959890939650565b600181811c908216806102b857607f821691505b6020821081036102d857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561032857806000526020600020601f840160051c810160208510156103055750805b601f840160051c820191505b818110156103255760008155600101610311565b50505b505050565b81516001600160401b03811115610346576103466100f7565b61035a8161035484546102a4565b846102de565b6020601f82116001811461038e57600083156103765750848201515b600019600385901b1c1916600184901b178455610325565b600084815260208120601f198516915b828110156103be578785015182556020948501946001909201910161039e565b50848210156103dc5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a0516115b461043460003960006102f30152600081816102c4015281816109430152610a4901526115b46000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c90611416565b80601f016020809104026020016040519081016040528092919081815260200182805461047890611416565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611498565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d49186906114ab565b60405180910390a250600192915050565b60606008805461044c90611416565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114cd565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ef565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce919061151e565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad0919061153b565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f9190611554565b610b29919061156b565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611498565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e8990849061156b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611498565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611498565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e919061156b565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d890849061156b565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff81111561130f57600080fd5b8301601f8101851361132057600080fd5b803567ffffffffffffffff81111561133a5761133a6112b6565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156113a6576113a66112b6565b6040528181528282016020018710156113be57600080fd5b8160208401602083013760006020928201830152969401359450505050565b600080604083850312156113f057600080fd5b82356113fb816111ad565b9150602083013561140b816111ad565b809150509250929050565b600181811c9082168061142a57607f821691505b602082108103611463577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611469565b6040815260006114be604083018561112f565b90508260208301529392505050565b6000602082840312156114df57600080fd5b815180151581146111a657600080fd5b608081526000611502608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561153057600080fd5b81516111a6816111ad565b60006020828403121561154d57600080fd5b5051919050565b80820281158282048414176104e0576104e0611469565b808201808211156104e0576104e061146956fea26469706673582212207bc62dfdede7c005315010b4244c5d1661fb65fbf23259603e26342f3a5148c464736f6c634300081a0033a2646970667358221220dbf12c2832ab74df8ec1292715e3c69624daafc9af9fa95864fbcca6c9f90d3e64736f6c634300081a0033", } // GatewayEVMZEVMTestABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/gatewayzevm.sol/gatewayzevm.go b/v2/pkg/gatewayzevm.sol/gatewayzevm.go index fedc5a81..18a63fc8 100644 --- a/v2/pkg/gatewayzevm.sol/gatewayzevm.go +++ b/v2/pkg/gatewayzevm.sol/gatewayzevm.go @@ -46,7 +46,7 @@ type ZContext struct { // GatewayZEVMMetaData contains all meta data concerning the GatewayZEVM contract. var GatewayZEVMMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"receive\",\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"FUNGIBLE_MODULE_ADDRESS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"UPGRADE_INTERFACE_VERSION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"call\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"context\",\"type\":\"tuple\",\"internalType\":\"structzContext\",\"components\":[{\"name\":\"origin\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"context\",\"type\":\"tuple\",\"internalType\":\"structzContext\",\"components\":[{\"name\":\"origin\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositAndRevert\",\"inputs\":[{\"name\":\"context\",\"type\":\"tuple\",\"internalType\":\"structrevertContext\",\"components\":[{\"name\":\"origin\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"execute\",\"inputs\":[{\"name\":\"context\",\"type\":\"tuple\",\"internalType\":\"structzContext\",\"components\":[{\"name\":\"origin\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"executeRevert\",\"inputs\":[{\"name\":\"context\",\"type\":\"tuple\",\"internalType\":\"structrevertContext\",\"components\":[{\"name\":\"origin\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_zetaToken\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndCall\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndCall\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"zetaToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawal\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"zrc20\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"gasfee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"protocolFlatFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"CallerIsNotFungibleModule\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ERC1967InvalidImplementation\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC1967NonPayable\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedZetaSent\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GasFeeTransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientZRC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTarget\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyWZETAOrFungible\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OwnableInvalidOwner\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UUPSUnauthorizedCallContext\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"UUPSUnsupportedProxiableUUID\",\"inputs\":[{\"name\":\"slot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"WithdrawalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20BurnFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20TransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161255462000104600039600081816117c7015281816117f001526119a001526125546000f3fe6080604052600436106101635760003560e01c80635af65967116100c0578063bcf7f32b11610074578063c4d66de811610059578063c4d66de814610458578063f2fde38b14610478578063f45346dc1461049857600080fd5b8063bcf7f32b14610418578063c39aca371461043857600080fd5b80637993c1e0116100a55780637993c1e0146103655780638da5cb5b14610385578063ad3cb1cc146103c257600080fd5b80635af6596714610330578063715018a61461035057600080fd5b80632e1a7d4d116101175780633ce4a5bc116100fc5780633ce4a5bc146102d25780634f1ef286146102fa57806352d1902d1461030d57600080fd5b80632e1a7d4d14610292578063309f5004146102b257600080fd5b806321501a951161014857806321501a951461021557806321e093b114610235578063267e75a01461027257600080fd5b80630ac7c44c146101d5578063135390f9146101f557600080fd5b366101d0576000546001600160a01b0316331480159061019757503373735b14bb79463307aacbed86daf3322b1e6226ab14155b156101ce576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b3480156101e157600080fd5b506101ce6101f0366004611eff565b6104b8565b34801561020157600080fd5b506101ce610210366004611f7d565b610533565b34801561022157600080fd5b506101ce610230366004611ff0565b61061d565b34801561024157600080fd5b50600054610255906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561027e57600080fd5b506101ce61028d366004612079565b610768565b34801561029e57600080fd5b506101ce6102ad3660046120b8565b610813565b3480156102be57600080fd5b506101ce6102cd3660046120d1565b6108ee565b3480156102de57600080fd5b5061025573735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce61030836600461216e565b6109c2565b34801561031957600080fd5b506103226109e1565b604051908152602001610269565b34801561033c57600080fd5b506101ce61034b3660046120d1565b610a10565b34801561035c57600080fd5b506101ce610ba1565b34801561037157600080fd5b506101ce6103803660046121be565b610bb5565b34801561039157600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610255565b3480156103ce57600080fd5b5061040b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b604051610269919061224a565b34801561042457600080fd5b506101ce6104333660046120d1565b610caa565b34801561044457600080fd5b506101ce6104533660046120d1565b610d44565b34801561046457600080fd5b506101ce61047336600461225d565b610ed5565b34801561048457600080fd5b506101ce61049336600461225d565b6110d8565b3480156104a457600080fd5b506101ce6104b336600461227a565b611131565b6104c061127a565b336001600160a01b03167f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f8484846040516104fd939291906122dc565b60405180910390a261052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b61053b61127a565b60006105478383611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771683868685876001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105da919061230c565b6040516105eb959493929190612325565b60405180910390a25061052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461066a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061069d57506001600160a01b03831630145b156106d4576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106de84846115ee565b6000546040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169263de43156e9261072f928a921690899088908890600401612416565b600060405180830381600087803b15801561074957600080fd5b505af115801561075d573d6000803e3d6000fd5b505050505050505050565b61077061127a565b61078e8373735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526104fd9291889060009081908a908a9061245d565b61081b61127a565b6108398173735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526108ba929186906000908190612325565b60405180910390a26108eb60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461093b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b600060405180830381600087803b1580156109a257600080fd5b505af11580156109b6573d6000803e3d6000fd5b50505050505050505050565b6109ca6117bc565b6109d38261188c565b6109dd8282611894565b5050565b60006109eb611995565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a5d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610a9057506001600160a01b03831630145b15610ac7576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5391906124b2565b506040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b610ba96119f7565b610bb36000611a6b565b565b610bbd61127a565b6000610bc98585611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771685888885896001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5c919061230c565b8989604051610c71979695949392919061245d565b60405180910390a250610ca360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cf7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d91576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610dc457506001600160a01b03831630145b15610dfb576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610e63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8791906124b2565b506040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610f205750825b905060008267ffffffffffffffff166001148015610f3d5750303b155b905081158015610f4b575080155b15610f82576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fe35784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038616611023576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61102c33611af4565b611034611b05565b61103c611b0d565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03881617905583156110d05784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6110e06119f7565b6001600160a01b038116611128576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6108eb81611a6b565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461117e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab14806111b157506001600160a01b03811630145b156111e8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af1158015611250573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127491906124b2565b50505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016112f5576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000806000836001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa158015611363573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138791906124d4565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af115801561140c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143091906124b2565b611466576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526001600160a01b038516906323b872dd906064016020604051808303816000875af11580156114d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f691906124b2565b61152c576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b038516906342966c68906024016020604051808303816000875af115801561158c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b091906124b2565b6115e6576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801561165e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168291906124b2565b6116b8576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561171757600080fd5b505af115801561172b573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d806000811461177c576040519150601f19603f3d011682016040523d82523d6000602084013e611781565b606091505b505090508061052e576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061185557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166118497f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108eb6119f7565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118ee575060408051601f3d908101601f191682019092526118eb9181019061230c565b60015b61192f576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461198b576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161111f565b61052e8383611b1d565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33611a297f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610bb3576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161111f565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b611afc611b73565b6108eb81611bda565b610bb3611b73565b611b15611b73565b610bb3611be2565b611b2682611bea565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611b6b5761052e8282611c92565b6109dd611d08565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610bb3576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110e0611b73565b6112fb611b73565b806001600160a01b03163b600003611c39576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611caf9190612502565b600060405180830381855af49150503d8060008114611cea576040519150601f19603f3d011682016040523d82523d6000602084013e611cef565b606091505b5091509150611cff858383611d40565b95945050505050565b3415610bb3576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082611d5557611d5082611db8565b611db1565b8151158015611d6c57506001600160a01b0384163b155b15611dae576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161111f565b50805b9392505050565b805115611dc85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112611e3a57600080fd5b813567ffffffffffffffff80821115611e5557611e55611dfa565b604051601f8301601f19908116603f01168101908282118183101715611e7d57611e7d611dfa565b81604052838152866020858801011115611e9657600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008083601f840112611ec857600080fd5b50813567ffffffffffffffff811115611ee057600080fd5b602083019150836020828501011115611ef857600080fd5b9250929050565b600080600060408486031215611f1457600080fd5b833567ffffffffffffffff80821115611f2c57600080fd5b611f3887838801611e29565b94506020860135915080821115611f4e57600080fd5b50611f5b86828701611eb6565b9497909650939450505050565b6001600160a01b03811681146108eb57600080fd5b600080600060608486031215611f9257600080fd5b833567ffffffffffffffff811115611fa957600080fd5b611fb586828701611e29565b935050602084013591506040840135611fcd81611f68565b809150509250925092565b600060608284031215611fea57600080fd5b50919050565b60008060008060006080868803121561200857600080fd5b853567ffffffffffffffff8082111561202057600080fd5b61202c89838a01611fd8565b9650602088013595506040880135915061204582611f68565b9093506060870135908082111561205b57600080fd5b5061206888828901611eb6565b969995985093965092949392505050565b60008060006040848603121561208e57600080fd5b83359250602084013567ffffffffffffffff8111156120ac57600080fd5b611f5b86828701611eb6565b6000602082840312156120ca57600080fd5b5035919050565b60008060008060008060a087890312156120ea57600080fd5b863567ffffffffffffffff8082111561210257600080fd5b61210e8a838b01611fd8565b97506020890135915061212082611f68565b9095506040880135945060608801359061213982611f68565b9093506080880135908082111561214f57600080fd5b5061215c89828a01611eb6565b979a9699509497509295939492505050565b6000806040838503121561218157600080fd5b823561218c81611f68565b9150602083013567ffffffffffffffff8111156121a857600080fd5b6121b485828601611e29565b9150509250929050565b6000806000806000608086880312156121d657600080fd5b853567ffffffffffffffff808211156121ee57600080fd5b61202c89838a01611e29565b60005b838110156122155781810151838201526020016121fd565b50506000910152565b600081518084526122368160208601602086016121fa565b601f01601f19169290920160200192915050565b602081526000611db1602083018461221e565b60006020828403121561226f57600080fd5b8135611db181611f68565b60008060006060848603121561228f57600080fd5b833561229a81611f68565b9250602084013591506040840135611fcd81611f68565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6040815260006122ef604083018661221e565b82810360208401526123028185876122b1565b9695505050505050565b60006020828403121561231e57600080fd5b5051919050565b6001600160a01b038616815260c06020820152600061234760c083018761221e565b6040830195909552506060810192909252608082015280820360a0909101526000815260200192915050565b600081357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18336030181126123a757600080fd5b820160208101903567ffffffffffffffff8111156123c457600080fd5b8036038213156123d357600080fd5b606085526123e56060860182846122b1565b91505060208301356123f681611f68565b6001600160a01b0316602085015260409283013592909301919091525090565b6080815260006124296080830188612373565b6001600160a01b038716602084015285604084015282810360608401526124518185876122b1565b98975050505050505050565b6001600160a01b038816815260c06020820152600061247f60c083018961221e565b87604084015286606084015285608084015282810360a08401526124a48185876122b1565b9a9950505050505050505050565b6000602082840312156124c457600080fd5b81518015158114611db157600080fd5b600080604083850312156124e757600080fd5b82516124f281611f68565b6020939093015192949293505050565b600082516125148184602087016121fa565b919091019291505056fea2646970667358221220a0aac54cd913d91847e5c215b40b796f82134b073fa197d13d1207e7019546ea64736f6c63430008150033", + Bin: "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125536100fd600039600081816117c7015281816117f001526119a001526125536000f3fe6080604052600436106101635760003560e01c80635af65967116100c0578063bcf7f32b11610074578063c4d66de811610059578063c4d66de814610458578063f2fde38b14610478578063f45346dc1461049857600080fd5b8063bcf7f32b14610418578063c39aca371461043857600080fd5b80637993c1e0116100a55780637993c1e0146103655780638da5cb5b14610385578063ad3cb1cc146103c257600080fd5b80635af6596714610330578063715018a61461035057600080fd5b80632e1a7d4d116101175780633ce4a5bc116100fc5780633ce4a5bc146102d25780634f1ef286146102fa57806352d1902d1461030d57600080fd5b80632e1a7d4d14610292578063309f5004146102b257600080fd5b806321501a951161014857806321501a951461021557806321e093b114610235578063267e75a01461027257600080fd5b80630ac7c44c146101d5578063135390f9146101f557600080fd5b366101d0576000546001600160a01b0316331480159061019757503373735b14bb79463307aacbed86daf3322b1e6226ab14155b156101ce576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b3480156101e157600080fd5b506101ce6101f0366004611f02565b6104b8565b34801561020157600080fd5b506101ce610210366004611f85565b610533565b34801561022157600080fd5b506101ce610230366004611ff8565b61061d565b34801561024157600080fd5b50600054610255906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561027e57600080fd5b506101ce61028d366004612084565b610768565b34801561029e57600080fd5b506101ce6102ad3660046120b7565b610813565b3480156102be57600080fd5b506101ce6102cd3660046120d0565b6108ee565b3480156102de57600080fd5b5061025573735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce61030836600461216e565b6109c2565b34801561031957600080fd5b506103226109e1565b604051908152602001610269565b34801561033c57600080fd5b506101ce61034b3660046120d0565b610a10565b34801561035c57600080fd5b506101ce610ba1565b34801561037157600080fd5b506101ce6103803660046121be565b610bb5565b34801561039157600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610255565b3480156103ce57600080fd5b5061040b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516102699190612249565b34801561042457600080fd5b506101ce6104333660046120d0565b610caa565b34801561044457600080fd5b506101ce6104533660046120d0565b610d44565b34801561046457600080fd5b506101ce61047336600461225c565b610ed5565b34801561048457600080fd5b506101ce61049336600461225c565b6110d8565b3480156104a457600080fd5b506101ce6104b3366004612279565b611131565b6104c061127a565b336001600160a01b03167f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f8484846040516104fd939291906122db565b60405180910390a261052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b61053b61127a565b60006105478383611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771683868685876001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105da919061230b565b6040516105eb959493929190612324565b60405180910390a25061052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461066a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061069d57506001600160a01b03831630145b156106d4576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106de84846115ee565b6000546040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169263de43156e9261072f928a921690899088908890600401612415565b600060405180830381600087803b15801561074957600080fd5b505af115801561075d573d6000803e3d6000fd5b505050505050505050565b61077061127a565b61078e8373735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526104fd9291889060009081908a908a9061245c565b61081b61127a565b6108398173735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526108ba929186906000908190612324565b60405180910390a26108eb60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461093b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612415565b600060405180830381600087803b1580156109a257600080fd5b505af11580156109b6573d6000803e3d6000fd5b50505050505050505050565b6109ca6117bc565b6109d38261188c565b6109dd8282611894565b5050565b60006109eb611995565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a5d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610a9057506001600160a01b03831630145b15610ac7576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5391906124b1565b506040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612415565b610ba96119f7565b610bb36000611a6b565b565b610bbd61127a565b6000610bc98585611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771685888885896001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5c919061230b565b8989604051610c71979695949392919061245c565b60405180910390a250610ca360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cf7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612415565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d91576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610dc457506001600160a01b03831630145b15610dfb576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610e63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8791906124b1565b506040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612415565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610f205750825b905060008267ffffffffffffffff166001148015610f3d5750303b155b905081158015610f4b575080155b15610f82576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fe35784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038616611023576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61102c33611af4565b611034611b05565b61103c611b0d565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03881617905583156110d05784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6110e06119f7565b6001600160a01b038116611128576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6108eb81611a6b565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461117e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab14806111b157506001600160a01b03811630145b156111e8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af1158015611250573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127491906124b1565b50505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016112f5576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000806000836001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa158015611363573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138791906124d3565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af115801561140c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143091906124b1565b611466576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526001600160a01b038516906323b872dd906064016020604051808303816000875af11580156114d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f691906124b1565b61152c576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b038516906342966c68906024016020604051808303816000875af115801561158c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b091906124b1565b6115e6576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801561165e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168291906124b1565b6116b8576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561171757600080fd5b505af115801561172b573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d806000811461177c576040519150601f19603f3d011682016040523d82523d6000602084013e611781565b606091505b505090508061052e576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061185557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166118497f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108eb6119f7565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118ee575060408051601f3d908101601f191682019092526118eb9181019061230b565b60015b61192f576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461198b576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161111f565b61052e8383611b1d565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33611a297f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610bb3576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161111f565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b611afc611b73565b6108eb81611bda565b610bb3611b73565b611b15611b73565b610bb3611be2565b611b2682611bea565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611b6b5761052e8282611c92565b6109dd611d08565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610bb3576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110e0611b73565b6112fb611b73565b806001600160a01b03163b600003611c39576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611caf9190612501565b600060405180830381855af49150503d8060008114611cea576040519150601f19603f3d011682016040523d82523d6000602084013e611cef565b606091505b5091509150611cff858383611d40565b95945050505050565b3415610bb3576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082611d5557611d5082611db8565b611db1565b8151158015611d6c57506001600160a01b0384163b155b15611dae576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161111f565b50805b9392505050565b805115611dc85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112611e3a57600080fd5b813567ffffffffffffffff811115611e5457611e54611dfa565b604051601f19603f601f19601f8501160116810181811067ffffffffffffffff82111715611e8457611e84611dfa565b604052818152838201602001851015611e9c57600080fd5b816020850160208301376000918101602001919091529392505050565b60008083601f840112611ecb57600080fd5b50813567ffffffffffffffff811115611ee357600080fd5b602083019150836020828501011115611efb57600080fd5b9250929050565b600080600060408486031215611f1757600080fd5b833567ffffffffffffffff811115611f2e57600080fd5b611f3a86828701611e29565b935050602084013567ffffffffffffffff811115611f5757600080fd5b611f6386828701611eb9565b9497909650939450505050565b6001600160a01b03811681146108eb57600080fd5b600080600060608486031215611f9a57600080fd5b833567ffffffffffffffff811115611fb157600080fd5b611fbd86828701611e29565b935050602084013591506040840135611fd581611f70565b809150509250925092565b600060608284031215611ff257600080fd5b50919050565b60008060008060006080868803121561201057600080fd5b853567ffffffffffffffff81111561202757600080fd5b61203388828901611fe0565b95505060208601359350604086013561204b81611f70565b9250606086013567ffffffffffffffff81111561206757600080fd5b61207388828901611eb9565b969995985093965092949392505050565b60008060006040848603121561209957600080fd5b83359250602084013567ffffffffffffffff811115611f5757600080fd5b6000602082840312156120c957600080fd5b5035919050565b60008060008060008060a087890312156120e957600080fd5b863567ffffffffffffffff81111561210057600080fd5b61210c89828a01611fe0565b965050602087013561211d81611f70565b945060408701359350606087013561213481611f70565b9250608087013567ffffffffffffffff81111561215057600080fd5b61215c89828a01611eb9565b979a9699509497509295939492505050565b6000806040838503121561218157600080fd5b823561218c81611f70565b9150602083013567ffffffffffffffff8111156121a857600080fd5b6121b485828601611e29565b9150509250929050565b6000806000806000608086880312156121d657600080fd5b853567ffffffffffffffff8111156121ed57600080fd5b61203388828901611e29565b60005b838110156122145781810151838201526020016121fc565b50506000910152565b600081518084526122358160208601602086016121f9565b601f01601f19169290920160200192915050565b602081526000611db1602083018461221d565b60006020828403121561226e57600080fd5b8135611db181611f70565b60008060006060848603121561228e57600080fd5b833561229981611f70565b9250602084013591506040840135611fd581611f70565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6040815260006122ee604083018661221d565b82810360208401526123018185876122b0565b9695505050505050565b60006020828403121561231d57600080fd5b5051919050565b6001600160a01b038616815260c06020820152600061234660c083018761221d565b6040830195909552506060810192909252608082015280820360a0909101526000815260200192915050565b600081357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18336030181126123a657600080fd5b820160208101903567ffffffffffffffff8111156123c357600080fd5b8036038213156123d257600080fd5b606085526123e46060860182846122b0565b91505060208301356123f581611f70565b6001600160a01b0316602085015260409283013592909301919091525090565b6080815260006124286080830188612372565b6001600160a01b038716602084015285604084015282810360608401526124508185876122b0565b98975050505050505050565b6001600160a01b038816815260c06020820152600061247e60c083018961221d565b87604084015286606084015285608084015282810360a08401526124a38185876122b0565b9a9950505050505050505050565b6000602082840312156124c357600080fd5b81518015158114611db157600080fd5b600080604083850312156124e657600080fd5b82516124f181611f70565b6020939093015192949293505050565b600082516125138184602087016121f9565b919091019291505056fea2646970667358221220d8d50a67f6aea88515e2af6733e3b64f97273a2f0b00d518adc713b4a35c370164736f6c634300081a0033", } // GatewayZEVMABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/gatewayzevm.t.sol/gatewayzevminboundtest.go b/v2/pkg/gatewayzevm.t.sol/gatewayzevminboundtest.go index d692bdeb..860cd68a 100644 --- a/v2/pkg/gatewayzevm.t.sol/gatewayzevminboundtest.go +++ b/v2/pkg/gatewayzevm.t.sol/gatewayzevminboundtest.go @@ -50,7 +50,7 @@ type StdInvariantFuzzSelector struct { // GatewayZEVMInboundTestMetaData contains all meta data concerning the GatewayZEVMInboundTest contract. var GatewayZEVMInboundTestMetaData = &bind.MetaData{ ABI: "[{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testCall\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETA\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETAFailsIfNoAllowance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETAWithMessage\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZETAWithMessageFailsIfNoAllowance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20FailsIfNoAllowance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20WithMessage\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawZRC20WithMessageFailsIfNoAllowance\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawal\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"zrc20\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"gasfee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"protocolFlatFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"CallerIsNotFungibleModule\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedZetaSent\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GasFeeTransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientZRC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTarget\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyWZETAOrFungible\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20BurnFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20TransferFailed\",\"inputs\":[]}]", - Bin: "0x6080604052600c8054600160ff199182168117909255601f805490911690911790553480156200002e57600080fd5b5061d12d806200003f6000396000f3fe60806040523480156200001157600080fd5b5060043610620001a15760003560e01c806385226c8111620000e9578063ba414fa61162000097578063ea37902f116200006e578063ea37902f14620002cb578063fa7626d414620002d5578063fbc611c814620002e357600080fd5b8063ba414fa6146200029c578063dde7e96714620002b7578063e20c9f7114620002c157600080fd5b8063b0464fdc11620000cc578063b0464fdc146200027e578063b5508aa91462000288578063b7f05836146200029257600080fd5b806385226c81146200024c578063916a17c6146200026557600080fd5b80632ade388011620001535780635006fd80116200012a5780635006fd80146200021f5780635d72228f146200022957806366d9a9a0146200023357600080fd5b80632ade388014620001f25780633e5e3c23146200020b5780633f7286f4146200021557600080fd5b806318a4cfdc116200018857806318a4cfdc14620001bc5780631e63d2b914620001c65780631ed7831c14620001d057600080fd5b80630a9254e414620001a65780631238212c14620001b2575b600080fd5b620001b0620002ed565b005b620001b062000d80565b620001b06200115c565b620001b0620015bf565b620001da620019b0565b604051620001e9919062007df9565b60405180910390f35b620001fc62001a14565b604051620001e9919062007e9c565b620001da62001b62565b620001da62001bc4565b620001b062001c26565b620001b0620020d5565b6200023d62002437565b604051620001e9919062007ffd565b62000256620025c5565b604051620001e99190620080a6565b6200026f6200269f565b604051620001e991906200812a565b6200026f6200279e565b620002566200289d565b620001b062002977565b620002a662002bb5565b6040519015158152602001620001e9565b620001b062002c8d565b620001da620030c6565b620001b062003128565b601f54620002a69060ff1681565b620001b0620034e9565b602580547fffffffffffffffffffffffff0000000000000000000000000000000000000000908116301790915560268054909116611234179055604051620003359062007d05565b604051809103906000f08015801562000352573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169182179055604080518082018252600f81527f476174657761795a45564d2e736f6c00000000000000000000000000000000006020820152905160248101929092526200042d9160440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc4d66de80000000000000000000000000000000000000000000000000000000017905262003862565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b039384168102919091179182905560208054919092049092167fffffffffffffffffffffffff000000000000000000000000000000000000000090921682178155604080517f3ce4a5bc0000000000000000000000000000000000000000000000000000000081529051633ce4a5bc926004808401939192918290030181865afa158015620004f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005169190620081bb565b602780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516200055c9062007d13565b604051809103906000f08015801562000579573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161781556027546040517f06447d5600000000000000000000000000000000000000000000000000000000815292166004830152737109709ecfa91a80626ff3989d68f67f5b1dd12d916306447d569101600060405180830381600087803b1580156200061657600080fd5b505af11580156200062b573d6000803e3d6000fd5b505050506000806000604051620006429062007d21565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f0801580156200067f573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155602054604051601293600193849360009391921690620006d79062007d2f565b620006e896959493929190620081e6565b604051809103906000f08015801562000705573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556023546040517fee2815ba0000000000000000000000000000000000000000000000000000000081526001600482015260248101929092529091169063ee2815ba90604401600060405180830381600087803b1580156200079d57600080fd5b505af1158015620007b2573d6000803e3d6000fd5b50506023546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b1580156200081d57600080fd5b505af115801562000832573d6000803e3d6000fd5b50506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015620008b357600080fd5b505af1158015620008c8573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b1580156200091e57600080fd5b505af115801562000933573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015620009a8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620009ce9190620082da565b506021546025546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116906347e7ef24906044016020604051808303816000875af115801562000a40573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a669190620082da565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562000ac657600080fd5b505af115801562000adb573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b15801562000b5257600080fd5b505af115801562000b67573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116925063095ea7b391506044016020604051808303816000875af115801562000bdc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c029190620082da565b50602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b15801562000c5557600080fd5b505af115801562000c6a573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af115801562000cdf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d059190620082da565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562000d6557600080fd5b505af115801562000d7a573d6000803e3d6000fd5b50505050565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa15801562000dd2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000df89190620082fe565b6025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562000e6e57600080fd5b505af115801562000e83573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af115801562000ef6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f1c9190620082da565b506026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae7600000000000000000000000000000000000000000000000000000000017905280517ff48448140000000000000000000000000000000000000000000000000000000081529051919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f48448149160048082019260009290919082900301818387803b15801562000ff957600080fd5b505af11580156200100e573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637993c1e0915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168352620010a49288916001600160a01b031690879060040162008318565b600060405180830381600087803b158015620010bf57600080fd5b505af1158015620010d4573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa15801562001128573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200114e9190620082fe565b905062000d7a838262003885565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015620011ae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620011d49190620082fe565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa15801562001227573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200124d9190620082fe565b6027546026546040516001600160a01b03918216602482015292935016319060009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156200135a57600080fd5b505af11580156200136f573d6000803e3d6000fd5b505060255460225460275460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b0392831694507f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716935091169060340160408051601f1981840301815290829052620013f392918a906000908190899062008356565b60405180910390a26020546040517f267e75a00000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063267e75a090620014489088908590600401620083ad565b600060405180830381600087803b1580156200146357600080fd5b505af115801562001478573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015620014cc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620014f29190620082fe565b90506200150c62001505600187620083f7565b8262003885565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa1580156200155e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620015849190620082fe565b905062001592858262003885565b620015b6620015a38560016200840d565b6027546001600160a01b03163162003885565b50505050505050565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa15801562001611573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620016379190620082fe565b6026546040516001600160a01b03909116602482015290915060009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156200173e57600080fd5b505af115801562001753573d6000803e3d6000fd5b505060255460215460265460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b0392831694507f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc577169350911690603401604051602081830303815290604052866000602160009054906101000a90046001600160a01b03166001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001817573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200183d9190620082fe565b87604051620018529695949392919062008356565b60405180910390a2602080546026546040516001600160a01b0392831693637993c1e0936200189b9316910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168352620018f49288916001600160a01b031690879060040162008318565b600060405180830381600087803b1580156200190f57600080fd5b505af115801562001924573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa15801562001978573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200199e9190620082fe565b905062000d7a620015058585620083f7565b6060601680548060200260200160405190810160405280929190818152602001828054801562001a0a57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311620019eb575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101562001b5957600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101562001b4157838290600052602060002001805462001aad9062008423565b80601f016020809104026020016040519081016040528092919081815260200182805462001adb9062008423565b801562001b2c5780601f1062001b005761010080835404028352916020019162001b2c565b820191906000526020600020905b81548152906001019060200180831162001b0e57829003601f168201915b50505050508152602001906001019062001a8b565b50505050815250508152602001906001019062001a38565b50505050905090565b6060601880548060200260200160405190810160405280929190818152602001828054801562001a0a576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620019eb575050505050905090565b6060601780548060200260200160405190810160405280929190818152602001828054801562001a0a576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620019eb575050505050905090565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa15801562001c78573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001c9e9190620082fe565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa15801562001cf1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001d179190620082fe565b6027546026546040516001600160a01b03918216602482015292935016319060009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae7600000000000000000000000000000000000000000000000000000000017905260255490517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001e0957600080fd5b505af115801562001e1e573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af115801562001e91573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001eb79190620082da565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562001f1757600080fd5b505af115801562001f2c573d6000803e3d6000fd5b50506020546040517f267e75a00000000000000000000000000000000000000000000000000000000081526001600160a01b03909116925063267e75a0915062001f7d9088908590600401620083ad565b600060405180830381600087803b15801562001f9857600080fd5b505af115801562001fad573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa15801562002001573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620020279190620082fe565b905062002035858262003885565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa15801562002087573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620020ad9190620082fe565b9050620020bb858262003885565b602754620015b69085906001600160a01b03163162003885565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa15801562002127573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200214d9190620082fe565b6025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620021c357600080fd5b505af1158015620021d8573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af11580156200224b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620022719190620082da565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620022d157600080fd5b505af1158015620022e6573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b0316925063135390f9915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526200237a9287916001600160a01b03169060040162008472565b600060405180830381600087803b1580156200239557600080fd5b505af1158015620023aa573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015620023fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620024249190620082fe565b905062002432828262003885565b505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101562001b595783829060005260206000209060020201604051806040016040529081600082018054620024919062008423565b80601f0160208091040260200160405190810160405280929190818152602001828054620024bf9062008423565b8015620025105780601f10620024e45761010080835404028352916020019162002510565b820191906000526020600020905b815481529060010190602001808311620024f257829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015620025ac57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620025585790505b505050505081525050815260200190600101906200245b565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101562001b595783829060005260206000200180546200260b9062008423565b80601f0160208091040260200160405190810160405280929190818152602001828054620026399062008423565b80156200268a5780601f106200265e576101008083540402835291602001916200268a565b820191906000526020600020905b8154815290600101906020018083116200266c57829003601f168201915b505050505081526020019060010190620025e9565b6060601d805480602002602001604051908101604052809291908181526020016000905b8282101562001b595760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200278557602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620027315790505b50505050508152505081526020019060010190620026c3565b6060601c805480602002602001604051908101604052809291908181526020016000905b8282101562001b595760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200288457602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620028305790505b50505050508152505081526020019060010190620027c2565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101562001b59578382906000526020600020018054620028e39062008423565b80601f0160208091040260200160405190810160405280929190818152602001828054620029119062008423565b8015620029625780601f10620029365761010080835404028352916020019162002962565b820191906000526020600020905b8154815290600101906020018083116200294457829003601f168201915b505050505081526020019060010190620028c1565b6026546040516001600160a01b03909116602482015260009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801562002a7b57600080fd5b505af115801562002a90573d6000803e3d6000fd5b505060255460265460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b0390911692507f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f915060340160408051601f198184030181529082905262002b06918590620084a6565b60405180910390a2602080546026546040516001600160a01b0392831693630ac7c44c9362002b4f9316910160609190911b6bffffffffffffffffffffffff1916815260140190565b604051602081830303815290604052836040518363ffffffff1660e01b815260040162002b7e929190620084a6565b600060405180830381600087803b15801562002b9957600080fd5b505af115801562002bae573d6000803e3d6000fd5b5050505050565b60085460009060ff161562002bce575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa15801562002c60573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002c869190620082fe565b1415905090565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa15801562002cdf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002d059190620082fe565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa15801562002d58573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002d7e9190620082fe565b6027546025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152929350163190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562002dfa57600080fd5b505af115801562002e0f573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af115801562002e82573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002ea89190620082da565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562002f0857600080fd5b505af115801562002f1d573d6000803e3d6000fd5b50506020546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018890526001600160a01b039091169250632e1a7d4d9150602401600060405180830381600087803b15801562002f8157600080fd5b505af115801562002f96573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa15801562002fea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620030109190620082fe565b90506200301e848262003885565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa15801562003070573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620030969190620082fe565b9050620030a4848262003885565b602754620030be9084906001600160a01b03163162003885565b505050505050565b6060601580548060200260200160405190810160405280929190818152602001828054801562001a0a576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311620019eb575050505050905090565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa1580156200317a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620031a09190620082fe565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa158015620031f3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620032199190620082fe565b6027546020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039182166084820152929350163190737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015620032b157600080fd5b505af1158015620032c6573d6000803e3d6000fd5b505060255460225460275460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b0392831694507f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716935091169060340160408051601f198184030181529082905262003348929189906000908190620084cf565b60405180910390a26020546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b158015620033b057600080fd5b505af1158015620033c5573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa15801562003419573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200343f9190620082fe565b90506200345262001505600186620083f7565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015620034a4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620034ca9190620082fe565b9050620034d8848262003885565b620030be620015a38460016200840d565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa1580156200353b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620035619190620082fe565b6020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015620035f357600080fd5b505af115801562003608573d6000803e3d6000fd5b505060255460215460265460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b0392831694507f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc577169350911690603401604051602081830303815290604052856000602160009054906101000a90046001600160a01b03166001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620036cc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620036f29190620082fe565b60405162003705959493929190620084cf565b60405180910390a2602080546026546040516001600160a01b039283169363135390f9936200374e9316910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168352620037a6926001916001600160a01b03169060040162008472565b600060405180830381600087803b158015620037c157600080fd5b505af1158015620037d6573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156200382a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620038509190620082fe565b905062002432620015058484620083f7565b60006200386e62007d3d565b6200387b84848362003906565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b158015620038f157600080fd5b505afa158015620030be573d6000803e3d6000fd5b60008062003915858462003987565b90506200397c6040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001620039669291906200851f565b6040516020818303038152906040528562003995565b9150505b9392505050565b6000620039808383620039c9565b60c08101515160009015620039bd57620039b584848460c00151620039e8565b905062003980565b620039b5848462003ba4565b6000620039d7838362003c9b565b620039808383602001518462003995565b600080620039f562003cad565b9050600062003a05868362003d85565b9050600062003a1e82606001518360200151856200425a565b9050600062003a308383898962004484565b9050600062003a3f82620053e4565b602081015181519192509060030b1562003ab75789826040015160405160200162003a6c92919062008543565b60408051601f19818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825262003aae91600401620085c8565b60405180910390fd5b600062003afc6040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001620055c8565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d9062003b51908490600401620085c8565b602060405180830381865afa15801562003b6f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003b959190620081bb565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc9259062003bfb908790600401620085c8565b600060405180830381865afa15801562003c19573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003c439190810190620086d8565b9050600062003c75828560405160200162003c6092919062008711565b604051602081830303815290604052620057d6565b90506001600160a01b0381166200387b57848460405160200162003a6c92919062008744565b62003ca982826000620057e9565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c9062003d36908490600401620087f3565b600060405180830381865afa15801562003d54573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003d7e91908101906200883c565b9250505090565b62003db86040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d905062003e046040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b62003e0f85620058fa565b6020820152600062003e218662005cff565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa15801562003e64573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003e8e91908101906200883c565b8683856020015160405160200162003eaa94939291906200888a565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb119062003f04908590600401620085c8565b600060405180830381865afa15801562003f22573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003f4c91908101906200883c565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f69062003f9690849060040162008950565b602060405180830381865afa15801562003fb4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003fda9190620082da565b62003ff2578160405160200162003a6c9190620089a4565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac8906200403990849060040162008a38565b600060405180830381865afa15801562004057573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200408191908101906200883c565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690620040ca90849060040162008a8c565b602060405180830381865afa158015620040e8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200410e9190620082da565b15620041a9576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac8906200415b90849060040162008a8c565b600060405180830381865afa15801562004179573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620041a391908101906200883c565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001620041d0919062008ae0565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401620041fe929190620084a6565b600060405180830381865afa1580156200421c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200424691908101906200883c565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b6060815260200190600190039081620042765790505090506040518060400160405280600481526020017f677265700000000000000000000000000000000000000000000000000000000081525081600081518110620042da57620042da62008b4e565b60200260200101819052506040518060400160405280600381526020017f2d726c00000000000000000000000000000000000000000000000000000000008152508160018151811062004331576200433162008b4e565b6020026020010181905250846040516020016200434f919062008b7d565b6040516020818303038152906040528160028151811062004374576200437462008b4e565b60200260200101819052508260405160200162004392919062008bc9565b60405160208183030381529060405281600381518110620043b757620043b762008b4e565b60200260200101819052506000620043cf82620053e4565b602080820151604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000818501908152825180840184526000808252908601528251808401909352905182529281019290925291925062004462906040805180820182526000808252602091820152815180830190925284518252808501908201529062005f9b565b6200447a578560405160200162003a6c919062008c0c565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015620044d5565b511590565b6200464e5782602001511562004594576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a40162003aae565b8260c00151156200464e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a40162003aae565b6040805160ff8082526120008201909252600091816020015b60608152602001906001900390816200466757905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280620046c59062008c9f565b935060ff1681518110620046dd57620046dd62008b4e565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e370000000000000000000000000000000000000081525060405160200162004730919062008cc1565b6040516020818303038152906040528282806200474d9062008c9f565b935060ff168151811062004765576200476562008b4e565b60200260200101819052506040518060400160405280600681526020017f6465706c6f790000000000000000000000000000000000000000000000000000815250828280620047b49062008c9f565b935060ff1681518110620047cc57620047cc62008b4e565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d650000000000000000000000000000000000008152508282806200481b9062008c9f565b935060ff168151811062004833576200483362008b4e565b60200260200101819052508760200151828280620048519062008c9f565b935060ff168151811062004869576200486962008b4e565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e747261637450617468000000000000000000000000000000000000815250828280620048b89062008c9f565b935060ff1681518110620048d057620048d062008b4e565b602090810291909101015287518282620048ea8162008c9f565b935060ff168151811062004902576200490262008b4e565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e49640000000000000000000000000000000000000000000000815250828280620049519062008c9f565b935060ff168151811062004969576200496962008b4e565b60200260200101819052506200497f4662006004565b82826200498c8162008c9f565b935060ff1681518110620049a457620049a462008b4e565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c650000000000000000000000000000000000815250828280620049f39062008c9f565b935060ff168151811062004a0b5762004a0b62008b4e565b60200260200101819052508682828062004a259062008c9f565b935060ff168151811062004a3d5762004a3d62008b4e565b602090810291909101015285511562004b745760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f646500000000000000000000006020820152828262004a918162008c9f565b935060ff168151811062004aa95762004aa962008b4e565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d9062004afb908990600401620085c8565b600060405180830381865afa15801562004b19573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262004b4391908101906200883c565b828262004b508162008c9f565b935060ff168151811062004b685762004b6862008b4e565b60200260200101819052505b84602001511562004c505760408051808201909152601281527f2d2d766572696679536f75726365436f646500000000000000000000000000006020820152828262004bc08162008c9f565b935060ff168151811062004bd85762004bd862008b4e565b60200260200101819052506040518060400160405280600581526020017f66616c736500000000000000000000000000000000000000000000000000000081525082828062004c279062008c9f565b935060ff168151811062004c3f5762004c3f62008b4e565b602002602001018190525062004e34565b62004c8a620044d08660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b62004d275760408051808201909152600d81527f2d2d6c6963656e736554797065000000000000000000000000000000000000006020820152828262004cd08162008c9f565b935060ff168151811062004ce85762004ce862008b4e565b60200260200101819052508460a0015160405160200162004d0a919062008b7d565b60405160208183030381529060405282828062004c279062008c9f565b8460c0015115801562004d6c57506040808901518151808301835260008082526020918201528251808401909352815183529081019082015262004d6a90511590565b155b1562004e345760408051808201909152600d81527f2d2d6c6963656e736554797065000000000000000000000000000000000000006020820152828262004db38162008c9f565b935060ff168151811062004dcb5762004dcb62008b4e565b602002602001018190525062004de188620060ab565b60405160200162004df3919062008b7d565b60405160208183030381529060405282828062004e109062008c9f565b935060ff168151811062004e285762004e2862008b4e565b60200260200101819052505b6040808601518151808301835260008082526020918201528251808401909352815183529081019082015262004e6990511590565b62004f095760408051808201909152600b81527f2d2d72656c6179657249640000000000000000000000000000000000000000006020820152828262004eaf8162008c9f565b935060ff168151811062004ec75762004ec762008b4e565b6020026020010181905250846040015182828062004ee59062008c9f565b935060ff168151811062004efd5762004efd62008b4e565b60200260200101819052505b606085015115620050385760408051808201909152600681527f2d2d73616c7400000000000000000000000000000000000000000000000000006020820152828262004f558162008c9f565b935060ff168151811062004f6d5762004f6d62008b4e565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa15801562004fdd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200500791908101906200883c565b8282620050148162008c9f565b935060ff16815181106200502c576200502c62008b4e565b60200260200101819052505b60e08501515115620050ec5760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282620050858162008c9f565b935060ff16815181106200509d576200509d62008b4e565b6020026020010181905250620050bb8560e001516000015162006004565b8282620050c88162008c9f565b935060ff1681518110620050e057620050e062008b4e565b60200260200101819052505b60e08501516020015115620051a35760408051808201909152600a81527f2d2d676173507269636500000000000000000000000000000000000000000000602082015282826200513c8162008c9f565b935060ff168151811062005154576200515462008b4e565b6020026020010181905250620051728560e001516020015162006004565b82826200517f8162008c9f565b935060ff168151811062005197576200519762008b4e565b60200260200101819052505b60e085015160400151156200525a5760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282620051f38162008c9f565b935060ff16815181106200520b576200520b62008b4e565b6020026020010181905250620052298560e001516040015162006004565b8282620052368162008c9f565b935060ff16815181106200524e576200524e62008b4e565b60200260200101819052505b60e08501516060015115620053115760408051808201909152601681527f2d2d6d61785072696f726974794665655065724761730000000000000000000060208201528282620052aa8162008c9f565b935060ff1681518110620052c257620052c262008b4e565b6020026020010181905250620052e08560e001516060015162006004565b8282620052ed8162008c9f565b935060ff168151811062005305576200530562008b4e565b60200260200101819052505b60008160ff1667ffffffffffffffff811115620053325762005332620085dd565b6040519080825280602002602001820160405280156200536757816020015b6060815260200190600190039081620053515790505b50905060005b8260ff168160ff161015620053d557838160ff168151811062005394576200539462008b4e565b6020026020010151828260ff1681518110620053b457620053b462008b4e565b60200260200101819052508080620053cc9062008c9f565b9150506200536d565b5093505050505b949350505050565b6200540c6040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c91620054949186910162008d2e565b600060405180830381865afa158015620054b2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620054dc91908101906200883c565b90506000620054ec868362006bd5565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b81526004016200551e9190620080a6565b6000604051808303816000875af11580156200553e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262005568919081019062008d77565b805190915060030b15801590620055825750602081015151155b8015620055925750604081015151155b156200447a5781600081518110620055ae57620055ae62008b4e565b602002602001015160405160200162003a6c919062008e2d565b60606000620055fe8560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528651825280870190820152909150620056379082905b9062006d4c565b15620057a3576000620056bb82620056b484620056ad6200567f8a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b9062006d75565b9062006ddd565b604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506200572190829062006d4c565b156200578e57604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526200578b905b829062006e6a565b90505b620057998162006e92565b9250505062003980565b8215620057bf57848460405160200162003a6c9291906200901b565b505060408051602081019091526000815262003980565b6000808251602084016000f09392505050565b8160a0015115620057f957505050565b60006200580884848462006f01565b905060006200581782620053e4565b602081015181519192509060030b158015620058b65750604080518082018252600781527f535543434553530000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620058b69060408051808201825260008082526020918201528151808301909252845182528085019082015262005630565b15620058c457505050505050565b60408201515115620058e757816040015160405160200162003a6c9190620090c6565b8060405160200162003a6c919062009126565b60606000620059308360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915062005997905b829062005f9b565b1562005a0b57604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620039809062005a0590839062007508565b62006e92565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015262005a6f905b82906200759c565b60010362005b4257604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015262005ad89062005783565b50604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620039809062005a05905b839062006e6a565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015262005ba3906200598f565b1562005ce657604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529062005c0e90839062007648565b90506000816001835162005c239190620083f7565b8151811062005c365762005c3662008b4e565b6020026020010151905062005cdd62005a0562005caf6040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925285518252808601908201529062007508565b95945050505050565b8260405160200162003a6c919062009193565b50919050565b6060600062005d358360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915062005d99906200598f565b1562005daa57620039808162006e92565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015262005e0b9062005a67565b60010362005e7957604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620039809062005a059062005b3a565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015262005eda906200598f565b1562005ce657604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529062005f4590839062007648565b905060018151111562005f8757806002825162005f639190620083f7565b8151811062005f765762005f7662008b4e565b602002602001015192505050919050565b508260405160200162003a6c919062009193565b80518251600091111562005fb2575060006200387f565b8151835160208501516000929162005fca916200840d565b62005fd69190620083f7565b90508260200151810362005fef5760019150506200387f565b82516020840151819020912014905092915050565b60606000620060138362007713565b600101905060008167ffffffffffffffff811115620060365762006036620085dd565b6040519080825280601f01601f19166020018201604052801562006061576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85049450846200606b57509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e534544000000000000000000000000000000000000000000008184019081528551808701875283815284019290925284518086019095525184529083015260609162006139905b8290620077fc565b156200617a57505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620061db9062006131565b156200621c57505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d49540000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526200627d9062006131565b15620062be57505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526200631f9062006131565b80620063875750604080518082018252601081527f47504c2d322e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620063879062006131565b15620063c857505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620064299062006131565b80620064915750604080518082018252601081527f47504c2d332e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620064919062006131565b15620064d257505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620065339062006131565b806200659b5750604080518082018252601181527f4c47504c2d322e312d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526200659b9062006131565b15620065dc57505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526200663d9062006131565b80620066a55750604080518082018252601181527f4c47504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620066a59062006131565b15620066e657505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620067479062006131565b156200678857505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620067e99062006131565b156200682a57505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526200688b9062006131565b15620068cc57505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526200692d9062006131565b156200696e57505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e300000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620069cf9062006131565b1562006a1057505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015262006a719062006131565b8062006ad95750604080518082018252601181527f4147504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015262006ad99062006131565b1562006b1a57505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015262006b7b9062006131565b1562006bbc57505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b6040808401518451915162003a6c929060200162009273565b60608060005b845181101562006c78578185828151811062006bfb5762006bfb62008b4e565b602002602001015160405160200162006c1692919062008711565b60405160208183030381529060405291506001855162006c379190620083f7565b811462006c63578160405160200162006c519190620093e0565b60405160208183030381529060405291505b8062006c6f8162009423565b91505062006bdb565b5060408051600380825260808201909252600091816020015b606081526020019060019003908162006c91579050509050838160008151811062006cc05762006cc062008b4e565b60200260200101819052506040518060400160405280600281526020017f2d630000000000000000000000000000000000000000000000000000000000008152508160018151811062006d175762006d1762008b4e565b6020026020010181905250818160028151811062006d395762006d3962008b4e565b6020908102919091010152949350505050565b602080830151835183519284015160009362006d6c929184919062007812565b14159392505050565b6040805180820190915260008082526020820152600062006da9846000015185602001518560000151866020015162007947565b905083602001518162006dbd9190620083f7565b8451859062006dce908390620083f7565b90525060208401525090919050565b604080518082019091526000808252602082015281518351101562006e045750816200387f565b602080830151908401516001911462006e2c5750815160208481015190840151829020919020145b801562006e625782518451859062006e46908390620083f7565b905250825160208501805162006e5e9083906200840d565b9052505b509192915050565b604080518082019091526000808252602082015262006e8b83838362007a8b565b5092915050565b60606000826000015167ffffffffffffffff81111562006eb65762006eb6620085dd565b6040519080825280601f01601f19166020018201604052801562006ee1576020820181803683370190505b509050600060208201905062006e8b818560200151866000015162007b44565b6060600062006f0f62003cad565b6040805160ff808252612000820190925291925060009190816020015b606081526020019060019003908162006f2c57905050905060006040518060400160405280600381526020017f6e7078000000000000000000000000000000000000000000000000000000000081525082828062006f8a9062008c9f565b935060ff168151811062006fa25762006fa262008b4e565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e330000000000000000000000000000000000000000000000000081525060405160200162006ff5919062009440565b604051602081830303815290604052828280620070129062008c9f565b935060ff16815181106200702a576200702a62008b4e565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280620070799062008c9f565b935060ff168151811062007091576200709162008b4e565b602002602001018190525082604051602001620070af919062008bc9565b604051602081830303815290604052828280620070cc9062008c9f565b935060ff1681518110620070e457620070e462008b4e565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280620071339062008c9f565b935060ff16815181106200714b576200714b62008b4e565b602002602001018190525062007162878462007bcd565b82826200716f8162008c9f565b935060ff168151811062007187576200718762008b4e565b602090810291909101015285515115620072405760408051808201909152600b81527f2d2d7265666572656e636500000000000000000000000000000000000000000060208201528282620071dc8162008c9f565b935060ff1681518110620071f457620071f462008b4e565b60200260200101819052506200720f86600001518462007bcd565b82826200721c8162008c9f565b935060ff168151811062007234576200723462008b4e565b60200260200101819052505b856080015115620072b55760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b0000000000000000602082015282826200728c8162008c9f565b935060ff1681518110620072a457620072a462008b4e565b602002602001018190525062007321565b8415620073215760408051808201909152601281527f2d2d726571756972655265666572656e6365000000000000000000000000000060208201528282620072fd8162008c9f565b935060ff168151811062007315576200731562008b4e565b60200260200101819052505b60408601515115620073c85760408051808201909152600d81527f2d2d756e73616665416c6c6f7700000000000000000000000000000000000000602082015282826200736e8162008c9f565b935060ff168151811062007386576200738662008b4e565b60200260200101819052508560400151828280620073a49062008c9f565b935060ff1681518110620073bc57620073bc62008b4e565b60200260200101819052505b856060015115620074385760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282620074148162008c9f565b935060ff16815181106200742c576200742c62008b4e565b60200260200101819052505b60008160ff1667ffffffffffffffff811115620074595762007459620085dd565b6040519080825280602002602001820160405280156200748e57816020015b6060815260200190600190039081620074785790505b50905060005b8260ff168160ff161015620074fc57838160ff1681518110620074bb57620074bb62008b4e565b6020026020010151828260ff1681518110620074db57620074db62008b4e565b60200260200101819052508080620074f39062008c9f565b91505062007494565b50979650505050505050565b60408051808201909152600080825260208201528151835110156200752f5750816200387f565b8151835160208501516000929162007547916200840d565b620075539190620083f7565b6020840151909150600190821462007575575082516020840151819020908220145b801562007593578351855186906200758f908390620083f7565b9052505b50929392505050565b6000808260000151620075c2856000015186602001518660000151876020015162007947565b620075ce91906200840d565b90505b83516020850151620075e491906200840d565b811162006e8b5781620075f78162009423565b925050826000015162007634856020015183620076159190620083f7565b8651620076239190620083f7565b838660000151876020015162007947565b6200764091906200840d565b9050620075d1565b606060006200765884846200759c565b620076659060016200840d565b67ffffffffffffffff811115620076805762007680620085dd565b604051908082528060200260200182016040528015620076b557816020015b60608152602001906001900390816200769f5790505b50905060005b81518110156200770b57620076d562005a05868662006e6a565b828281518110620076ea57620076ea62008b4e565b60200260200101819052508080620077029062009423565b915050620076bb565b509392505050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106200775d577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106200778a576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310620077a957662386f26fc10000830492506010015b6305f5e1008310620077c2576305f5e100830492506008015b6127108310620077d757612710830492506004015b60648310620077ea576064830492506002015b600a83106200387f5760010192915050565b60006200780a838362007c11565b159392505050565b6000808584116200793d5760208411620078dd5760008415620078685760016200783e866020620083f7565b6200784b90600862009487565b620078589060026200959e565b620078649190620083f7565b1990505b83518116856200787989896200840d565b620078859190620083f7565b805190935082165b818114620078c557878411620078aa5787945050505050620053dc565b83620078b681620095ac565b9450508284511690506200788d565b620078d187856200840d565b945050505050620053dc565b838320620078ec8588620083f7565b620078f890876200840d565b91505b8582106200793b5784822080820362007925576200791a86846200840d565b9350505050620053dc565b62007932600184620083f7565b925050620078fb565b505b5092949350505050565b6000838186851162007a74576020851162007a1957600085156200799e57600162007974876020620083f7565b6200798190600862009487565b6200798e9060026200959e565b6200799a9190620083f7565b1990505b84518116600087620079b18b8b6200840d565b620079bd9190620083f7565b855190915083165b82811462007a0a57818610620079ef57620079e18b8b6200840d565b9650505050505050620053dc565b85620079fb8162009423565b965050838651169050620079c5565b859650505050505050620053dc565b508383206000905b62007a2d8689620083f7565b821162007a725785832080820362007a4c5783945050505050620053dc565b62007a596001856200840d565b935050818062007a699062009423565b92505062007a21565b505b62007a8087876200840d565b979650505050505050565b6040805180820190915260008082526020820152600062007abf856000015186602001518660000151876020015162007947565b60208087018051918601919091525190915062007add9082620083f7565b83528451602086015162007af291906200840d565b810362007b03576000855262007b3b565b8351835162007b1391906200840d565b8551869062007b24908390620083f7565b905250835162007b3590826200840d565b60208601525b50909392505050565b6020811062007b84578151835262007b5e6020846200840d565b925062007b6d6020836200840d565b915062007b7c602082620083f7565b905062007b44565b600019811562007bba57600162007b9d836020620083f7565b62007bab906101006200959e565b62007bb79190620083f7565b90505b9151835183169219169190911790915250565b6060600062007bdd848462003d85565b805160208083015160405193945062007bf993909101620095c6565b60405160208183030381529060405291505092915050565b815181516000919081111562007c25575081515b6020808501519084015160005b8381101562007cf4578251825180821462007cbd57600019602087101562007c9a5760018462007c64896020620083f7565b62007c7091906200840d565b62007c7d90600862009487565b62007c8a9060026200959e565b62007c969190620083f7565b1990505b818116838216818103911462007cba5797506200387f9650505050505050565b50505b62007cca6020866200840d565b945062007cd96020856200840d565b9350505060208162007cec91906200840d565b905062007c32565b50845186516200447a919062009622565b610b67806200964683390190565b6104e4806200a1ad83390190565b611069806200a69183390190565b6119fe806200b6fa83390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200162007d8262007d87565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200162007d826040518060800160405280600081526020016000815260200160008152602001600081525090565b6020808252825182820181905260009190848201906040850190845b8181101562007e3c5783516001600160a01b03168352928401929184019160010162007e15565b50909695505050505050565b60005b8381101562007e6557818101518382015260200162007e4b565b50506000910152565b6000815180845262007e8881602086016020860162007e48565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b8581101562007f8e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b8181101562007f77577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089850301835262007f6484865162007e6e565b948e01949350918d019160010162007f27565b505050978a01979450509188019160010162007ec3565b50919a9950505050505050505050565b600081518084526020808501945080840160005b8381101562007ff25781517fffffffff00000000000000000000000000000000000000000000000000000000168752958201959082019060010162007fb2565b509495945050505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101562008098577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc089840301855281518051878552620080698886018262007e6e565b91890151858303868b015291905062008083818362007f9e565b96890196945050509086019060010162008024565b509098975050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156200811d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526200810a85835162007e6e565b94509285019290850190600101620080cd565b5092979650505050505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101562008098578883037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0018552815180516001600160a01b03168452870151878401879052620081a78785018262007f9e565b958801959350509086019060010162008151565b600060208284031215620081ce57600080fd5b81516001600160a01b03811681146200398057600080fd5b6101008082526005908201527f544f4b454e0000000000000000000000000000000000000000000000000000006101208201526101406020820181905260039082018190527f544b4e000000000000000000000000000000000000000000000000000000000061016083015260ff881660408301526060820187905261018082019086106200829e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a0830152620082c060c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b600060208284031215620082ed57600080fd5b815180151581146200398057600080fd5b6000602082840312156200831157600080fd5b5051919050565b6080815260006200832d608083018762007e6e565b8560208401526001600160a01b0385166040840152828103606084015262007a80818562007e6e565b6001600160a01b038716815260c0602082015260006200837a60c083018862007e6e565b86604084015285606084015284608084015282810360a0840152620083a0818562007e6e565b9998505050505050505050565b828152604060208201526000620053dc604083018462007e6e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156200387f576200387f620083c8565b808201808211156200387f576200387f620083c8565b600181811c908216806200843857607f821691505b60208210810362005cf9577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60608152600062008487606083018662007e6e565b90508360208301526001600160a01b0383166040830152949350505050565b604081526000620084bb604083018562007e6e565b82810360208401526200397c818562007e6e565b6001600160a01b038616815260c060208201526000620084f360c083018762007e6e565b6040830195909552506060810192909252608082015280820360a0909101526000815260200192915050565b6001600160a01b0383168152604060208201526000620053dc604083018462007e6e565b7f4661696c656420746f206465706c6f7920636f6e7472616374200000000000008152600083516200857d81601a85016020880162007e48565b7f3a20000000000000000000000000000000000000000000000000000000000000601a918401918201528351620085bc81601c84016020880162007e48565b01601c01949350505050565b60208152600062003980602083018462007e6e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715620086325762008632620085dd565b60405290565b600067ffffffffffffffff80841115620086565762008656620085dd565b604051601f8501601f19908116603f01168101908282118183101715620086815762008681620085dd565b816040528093508581528686860111156200869b57600080fd5b620086ab86602083018762007e48565b5050509392505050565b600082601f830112620086c757600080fd5b620039808383516020850162008638565b600060208284031215620086eb57600080fd5b815167ffffffffffffffff8111156200870357600080fd5b6200387b84828501620086b5565b600083516200872581846020880162007e48565b8351908301906200873b81836020880162007e48565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e7472616374200000000000008152600083516200877e81601a85016020880162007e48565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a918401918201528351620087bd81603384016020880162007e48565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f5554000000000000000000000000000000000000000000606082015260806020820152600062003980608083018462007e6e565b6000602082840312156200884f57600080fd5b815167ffffffffffffffff8111156200886757600080fd5b8201601f810184136200887957600080fd5b6200387b8482516020840162008638565b600085516200889e818460208a0162007e48565b80830190507f2f000000000000000000000000000000000000000000000000000000000000008082528651620088dc816001850160208b0162007e48565b600192019182018190528551620088fb816002850160208a0162007e48565b600292019182015283516200891881600384016020880162007e48565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600392909101918201526008019695505050505050565b60408152600062008965604083018462007e6e565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e2061727469666163742000815260008251620089de81601f85016020870162007e48565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600062008a4d604083018462007e6e565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b60408152600062008aa1604083018462007e6e565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b2700000000000000000000000081526000825162008b1a81601485016020870162007e48565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007f2200000000000000000000000000000000000000000000000000000000000000808352835162008bb881600186016020880162007e48565b600193019283015250600201919050565b6000825162008bdd81846020870162007e48565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825162008c9281604b85016020870162007e48565b91909101604b0192915050565b600060ff821660ff810362008cb85762008cb8620083c8565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825162008d2181602985016020870162007e48565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f5041544800000000000000000000606082015260806020820152600062003980608083018462007e6e565b60006020828403121562008d8a57600080fd5b815167ffffffffffffffff8082111562008da357600080fd5b908301906060828603121562008db857600080fd5b62008dc26200860c565b82518060030b811462008dd457600080fd5b815260208301518281111562008de957600080fd5b62008df787828601620086b5565b60208301525060408301518281111562008e1057600080fd5b62008e1e87828601620086b5565b60408301525095945050505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825162008e8d81602185016020870162007e48565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f27000000000000000000000000000000000000000000000000000000000000006020820152600083516200907b81602185016020880162007e48565b7f2720696e206f75747075743a20000000000000000000000000000000000000006021918401918201528351620090ba81602e84016020880162007e48565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825162008d2181602985016020870162007e48565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a0000000000000000000000000000000000000000000000000000000000006020820152600082516200918681602285016020870162007e48565b9190910160220192915050565b7f436f6e7472616374206e616d6520000000000000000000000000000000000000815260008251620091cd81600e85016020870162007e48565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351620092ad81601885016020880162007e48565b7f20696e20000000000000000000000000000000000000000000000000000000006018918401918201528351620092ec81601c84016020880162007e48565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b60008251620093f481846020870162007e48565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b60006000198203620094395762009439620083c8565b5060010190565b7f406f70656e7a657070656c696e2f75706772616465732d636f726540000000008152600082516200947a81601c85016020870162007e48565b91909101601c0192915050565b80820281158282048414176200387f576200387f620083c8565b600181815b80851115620094e2578160001904821115620094c657620094c6620083c8565b80851615620094d457918102915b93841c9390800290620094a6565b509250929050565b600082620094fb575060016200387f565b816200950a575060006200387f565b81600181146200952357600281146200952e576200954e565b60019150506200387f565b60ff841115620095425762009542620083c8565b50506001821b6200387f565b5060208310610133831016604e8410600b841016171562009573575081810a6200387f565b6200957f8383620094a1565b8060001904821115620095965762009596620083c8565b029392505050565b6000620039808383620094ea565b600081620095be57620095be620083c8565b506000190190565b60008351620095da81846020880162007e48565b7f3a0000000000000000000000000000000000000000000000000000000000000090830190815283516200961681600184016020880162007e48565b01600101949350505050565b818103600083128015838313168383128216171562006e8b5762006e8b620083c856fe60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d3565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57600081815260208120601f850160051c810160208610156100ec5750805b601f850160051c820191505b8181101561010b578281556001016100f8565b5050505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b602080601f831160018114610176576000841561015e5750858301515b600019600386901b1c1916600185901b17855561010b565b600085815260208120601f198616915b828110156101a557888601518255948401946001909101908401610186565b50858210156101c35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610985806101e26000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610840565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d3366004610859565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610874565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d6565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108e9565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108e9565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093c565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093c565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d6565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093c565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108e9565b600061073e3384846103bd565b9392505050565b600060208083528351808285015260005b8181101561077257858101830151858201604001528201610756565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b9150604084013590509250925092565b60006020828403121561085257600080fd5b5035919050565b60006020828403121561086b57600080fd5b61073e826107b1565b6000806040838503121561088757600080fd5b610890836107b1565b915061089e602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a7565b600181811c908216806108fd57607f821691505b602082108103610936577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a756fea26469706673582212201fc127b73c19f2c1775b48f5275858b6ddd49d93989841a848b1a4ececbdafd664736f6c63430008150033608060405234801561001057600080fd5b506104c4806100206000396000f3fe60806040526004361061002a5760003560e01c806369582bee14610033578063de43156e1461005357005b3661003157005b005b34801561003f57600080fd5b5061003161004e3660046101ba565b610073565b34801561005f57600080fd5b5061003161006e3660046101ba565b6100ee565b6060811561008a576100878284018461026e565b90505b7ffdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e999486100b5878061033d565b6100c560408a0160208b016103a2565b896040013533866040516100de969594939291906103c4565b60405180910390a1505050505050565b60608115610105576101028284018461026e565b90505b7fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e6100b5878061033d565b60006060828403121561014257600080fd5b50919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461016c57600080fd5b919050565b60008083601f84011261018357600080fd5b50813567ffffffffffffffff81111561019b57600080fd5b6020830191508360208285010111156101b357600080fd5b9250929050565b6000806000806000608086880312156101d257600080fd5b853567ffffffffffffffff808211156101ea57600080fd5b6101f689838a01610130565b965061020460208901610148565b955060408801359450606088013591508082111561022157600080fd5b5061022e88828901610171565b969995985093965092949392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561028057600080fd5b813567ffffffffffffffff8082111561029857600080fd5b818401915084601f8301126102ac57600080fd5b8135818111156102be576102be61023f565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156103045761030461023f565b8160405282815287602084870101111561031d57600080fd5b826020860160208301376000928101602001929092525095945050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261037257600080fd5b83018035915067ffffffffffffffff82111561038d57600080fd5b6020019150368190038213156101b357600080fd5b6000602082840312156103b457600080fd5b6103bd82610148565b9392505050565b60a081528560a0820152858760c0830137600060c0878301015260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe080601f8901168301602073ffffffffffffffffffffffffffffffffffffffff808a168287015288604087015280881660608701525060c085830301608086015285518060c084015260005b818110156104685787810183015184820160e00152820161044c565b50600060e0828501015260e084601f83011684010194505050505097965050505050505056fea264697066735822122078d900ecbf3fff2425499bb2eafdc9d45545dc5fea40a7cdc33694659008318c64736f6c6343000815003360c060405234801561001057600080fd5b5060405161106938038061106983398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f1f61014a60003960006101e50152600081816102b9015261045b0152610f1f6000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d4d565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d90565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610dfb565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff80821115610cb457600080fd5b908801906060828b031215610cc857600080fd5b819750610cd760208a01610bea565b965060408901359550610cec60608a01610bea565b94506080890135915080821115610d0257600080fd5b818901915089601f830112610d1657600080fd5b813581811115610d2557600080fd5b8a6020828501011115610d3757600080fd5b6020830194508093505050509295509295509295565b600080600060608486031215610d6257600080fd5b610d6b84610bea565b9250610d7960208501610bea565b9150610d8760408501610bea565b90509250925092565b600060208284031215610da257600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3357600080fd5b870160208101903567ffffffffffffffff811115610e5057600080fd5b803603821315610e5f57600080fd5b60606080850152610e7460e085018284610db2565b91505073ffffffffffffffffffffffffffffffffffffffff610e9860208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610edd818587610db2565b9897505050505050505056fea264697066735822122038e4bf7dcb062e1e18216d9535ed07d4a620437f10b3da9f85a81c208884ef7264736f6c6343000815003360c06040523480156200001157600080fd5b50604051620019fe380380620019fe8339810160408190526200003491620001fa565b3373735b14bb79463307aacbed86daf3322b1e6226ab146200006957604051632b2add3d60e01b815260040160405180910390fd5b600762000077898262000359565b50600862000086888262000359565b506009805460ff191660ff88161790556080859052836002811115620000b057620000b062000425565b60a0816002811115620000c757620000c762000425565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506200043b9350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013057600080fd5b81516001600160401b03808211156200014d576200014d62000108565b604051601f8301601f19908116603f0116810190828211818310171562000178576200017862000108565b816040528381526020925086838588010111156200019557600080fd5b600091505b83821015620001b957858201830151818301840152908201906200019a565b600093810190920192909252949350505050565b805160038110620001dd57600080fd5b919050565b80516001600160a01b0381168114620001dd57600080fd5b600080600080600080600080610100898b0312156200021857600080fd5b88516001600160401b03808211156200023057600080fd5b6200023e8c838d016200011e565b995060208b01519150808211156200025557600080fd5b50620002648b828c016200011e565b975050604089015160ff811681146200027c57600080fd5b60608a015190965094506200029460808a01620001cd565b935060a08901519250620002ab60c08a01620001e2565b9150620002bb60e08a01620001e2565b90509295985092959890939650565b600181811c90821680620002df57607f821691505b6020821081036200030057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200035457600081815260208120601f850160051c810160208610156200032f5750805b601f850160051c820191505b8181101562000350578281556001016200033b565b5050505b505050565b81516001600160401b0381111562000375576200037562000108565b6200038d81620003868454620002ca565b8462000306565b602080601f831160018114620003c55760008415620003ac5750858301515b600019600386901b1c1916600185901b17855562000350565b600085815260208120601f198616915b82811015620003f657888601518255948401946001909101908401620003d5565b5085821015620004155787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161158f6200046f60003960006102f30152600081816102c4015281816109430152610a49015261158f6000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113b8565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c906113f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610478906113f1565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611473565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d4918690611486565b60405180910390a250600192915050565b60606008805461044c906113f1565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114a8565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ca565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce91906114f9565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad09190611516565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f919061152f565b610b299190611546565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611473565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e89908490611546565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611473565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611473565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e9190611546565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d8908490611546565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff8082111561131057600080fd5b818501915085601f83011261132457600080fd5b813581811115611336576113366112b6565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561137c5761137c6112b6565b8160405282815288602084870101111561139557600080fd5b826020860160208301376000602093820184015298969091013596505050505050565b600080604083850312156113cb57600080fd5b82356113d6816111ad565b915060208301356113e6816111ad565b809150509250929050565b600181811c9082168061140557607f821691505b60208210810361143e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611444565b604081526000611499604083018561112f565b90508260208301529392505050565b6000602082840312156114ba57600080fd5b815180151581146111a657600080fd5b6080815260006114dd608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561150b57600080fd5b81516111a6816111ad565b60006020828403121561152857600080fd5b5051919050565b80820281158282048414176104e0576104e0611444565b808201808211156104e0576104e061144456fea26469706673582212207b3cc2ba67a436eb1551f5330365347b3502d42c3eefdd1c782af1c00e42e23b64736f6c63430008150033a26469706673582212200b20a5f0f8e61624ae9c31b5354d58dbcc70b9e0297ea22008aeafab50f9fe5564736f6c63430008150033", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061cbfd8061003c6000396000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c806385226c81116100d8578063ba414fa61161008c578063ea37902f11610066578063ea37902f1461027b578063fa7626d414610283578063fbc611c81461029057600080fd5b8063ba414fa614610253578063dde7e9671461026b578063e20c9f711461027357600080fd5b8063b0464fdc116100bd578063b0464fdc1461023b578063b5508aa914610243578063b7f058361461024b57600080fd5b806385226c8114610211578063916a17c61461022657600080fd5b80632ade38801161013a5780635006fd80116101145780635006fd80146101ec5780635d72228f146101f457806366d9a9a0146101fc57600080fd5b80632ade3880146101c75780633e5e3c23146101dc5780633f7286f4146101e457600080fd5b806318a4cfdc1161016b57806318a4cfdc146101995780631e63d2b9146101a15780631ed7831c146101a957600080fd5b80630a9254e4146101875780631238212c14610191575b600080fd5b61018f610298565b005b61018f610cfa565b61018f6110c3565b61018f611508565b6101b16118e4565b6040516101be91906178d1565b60405180910390f35b6101cf611946565b6040516101be919061796d565b6101b1611a88565b6101b1611ae8565b61018f611b48565b61018f611fda565b610204612329565b6040516101be9190617ad3565b6102196124ab565b6040516101be9190617b71565b61022e61257b565b6040516101be9190617be8565b61022e612676565b610219612771565b61018f612841565b61025b612a76565b60405190151581526020016101be565b61018f612b4a565b6101b1612f68565b61018f612fc8565b601f5461025b9060ff1681565b61018f61336f565b602580547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602680549091166112341790556040516102de906177e4565b604051809103906000f0801580156102fa573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169182179055604080518082018252600f81527f476174657761795a45564d2e736f6c00000000000000000000000000000000006020820152905160248101929092526103d39160440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc4d66de8000000000000000000000000000000000000000000000000000000001790526136d3565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b039384168102919091179182905560208054919092049092167fffffffffffffffffffffffff000000000000000000000000000000000000000090921682178155604080517f3ce4a5bc0000000000000000000000000000000000000000000000000000000081529051633ce4a5bc926004808401939192918290030181865afa158015610495573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b99190617c7f565b602780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516104fd906177f1565b604051809103906000f080158015610519573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161781556027546040517f06447d5600000000000000000000000000000000000000000000000000000000815292166004830152737109709ecfa91a80626ff3989d68f67f5b1dd12d916306447d569101600060405180830381600087803b1580156105b557600080fd5b505af11580156105c9573d6000803e3d6000fd5b5050505060008060006040516105de906177fe565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801561061a573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556020546040516012936001938493600093919216906106709061780b565b61067f96959493929190617ca8565b604051809103906000f08015801561069b573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556023546040517fee2815ba0000000000000000000000000000000000000000000000000000000081526001600482015260248101929092529091169063ee2815ba90604401600060405180830381600087803b15801561073257600080fd5b505af1158015610746573d6000803e3d6000fd5b50506023546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b1580156107b057600080fd5b505af11580156107c4573d6000803e3d6000fd5b50506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b15801561084457600080fd5b505af1158015610858573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610935573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109599190617d9d565b506021546025546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116906347e7ef24906044016020604051808303816000875af11580156109ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ee9190617d9d565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610a4d57600080fd5b505af1158015610a61573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015610ad757600080fd5b505af1158015610aeb573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116925063095ea7b391506044016020604051808303816000875af1158015610b5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b839190617d9d565b50602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b158015610bd557600080fd5b505af1158015610be9573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610c5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c819190617d9d565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610ce057600080fd5b505af1158015610cf4573d6000803e3d6000fd5b50505050565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015610d4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6f9190617dbf565b6025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015610de457600080fd5b505af1158015610df8573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015610e6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8e9190617d9d565b506026546040516001600160a01b03909116602482015260009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae7600000000000000000000000000000000000000000000000000000000017905280517ff48448140000000000000000000000000000000000000000000000000000000081529051919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f48448149160048082019260009290919082900301818387803b158015610f6a57600080fd5b505af1158015610f7e573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b03169250637993c1e0915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526110129288916001600160a01b0316908790600401617dd8565b600060405180830381600087803b15801561102c57600080fd5b505af1158015611040573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611093573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b79190617dbf565b9050610cf483826136f2565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015611114573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111389190617dbf565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa15801561118a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ae9190617dbf565b6027546026546040516001600160a01b03918216602482015292935016319060009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156112ba57600080fd5b505af11580156112ce573d6000803e3d6000fd5b505060255460225460275460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b0392831694507f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716935091169060340160408051601f198184030181529082905261135092918a9060009081908990617e12565b60405180910390a26020546040517f267e75a00000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063267e75a0906113a39088908590600401617e65565b600060405180830381600087803b1580156113bd57600080fd5b505af11580156113d1573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611424573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114489190617dbf565b905061145e611458600187617ead565b826136f2565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa1580156114af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d39190617dbf565b90506114df85826136f2565b6114ff6114ed856001617ec0565b6027546001600160a01b0316316136f2565b50505050505050565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015611559573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061157d9190617dbf565b6026546040516001600160a01b03909116602482015290915060009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561168357600080fd5b505af1158015611697573d6000803e3d6000fd5b505060255460215460265460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b0392831694507f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc577169350911690603401604051602081830303815290604052866000602160009054906101000a90046001600160a01b03166001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561175a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177e9190617dbf565b8760405161179196959493929190617e12565b60405180910390a2602080546026546040516001600160a01b0392831693637993c1e0936117d99316910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526118309288916001600160a01b0316908790600401617dd8565b600060405180830381600087803b15801561184a57600080fd5b505af115801561185e573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156118b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d59190617dbf565b9050610cf46114588585617ead565b6060601680548060200260200160405190810160405280929190818152602001828054801561193c57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161191e575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015611a7f57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015611a685783829060005260206000200180546119db90617ed3565b80601f0160208091040260200160405190810160405280929190818152602001828054611a0790617ed3565b8015611a545780601f10611a2957610100808354040283529160200191611a54565b820191906000526020600020905b815481529060010190602001808311611a3757829003601f168201915b5050505050815260200190600101906119bc565b50505050815250508152602001906001019061196a565b50505050905090565b6060601880548060200260200160405190810160405280929190818152602001828054801561193c576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161191e575050505050905090565b6060601780548060200260200160405190810160405280929190818152602001828054801561193c576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161191e575050505050905090565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015611b99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bbd9190617dbf565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa158015611c0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c339190617dbf565b6027546026546040516001600160a01b03918216602482015292935016319060009060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae7600000000000000000000000000000000000000000000000000000000017905260255490517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611d2457600080fd5b505af1158015611d38573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015611daa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dce9190617d9d565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611e2d57600080fd5b505af1158015611e41573d6000803e3d6000fd5b50506020546040517f267e75a00000000000000000000000000000000000000000000000000000000081526001600160a01b03909116925063267e75a09150611e909088908590600401617e65565b600060405180830381600087803b158015611eaa57600080fd5b505af1158015611ebe573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611f11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f359190617dbf565b9050611f4185826136f2565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015611f92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fb69190617dbf565b9050611fc285826136f2565b6027546114ff9085906001600160a01b0316316136f2565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa15801561202b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061204f9190617dbf565b6025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156120c457600080fd5b505af11580156120d8573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af115801561214a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216e9190617d9d565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156121cd57600080fd5b505af11580156121e1573d6000803e3d6000fd5b50506020805460265460405160609190911b6bffffffffffffffffffffffff1916928101929092526001600160a01b0316925063135390f9915060340160408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1683526122739287916001600160a01b031690600401617f20565b600060405180830381600087803b15801561228d57600080fd5b505af11580156122a1573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156122f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123189190617dbf565b905061232482826136f2565b505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015611a7f578382906000526020600020906002020160405180604001604052908160008201805461238090617ed3565b80601f01602080910402602001604051908101604052809291908181526020018280546123ac90617ed3565b80156123f95780601f106123ce576101008083540402835291602001916123f9565b820191906000526020600020905b8154815290600101906020018083116123dc57829003601f168201915b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561249357602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116124405790505b5050505050815250508152602001906001019061234d565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015611a7f5783829060005260206000200180546124ee90617ed3565b80601f016020809104026020016040519081016040528092919081815260200182805461251a90617ed3565b80156125675780601f1061253c57610100808354040283529160200191612567565b820191906000526020600020905b81548152906001019060200180831161254a57829003601f168201915b5050505050815260200190600101906124cf565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015611a7f5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561265e57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161260b5790505b5050505050815250508152602001906001019061259f565b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015611a7f5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561275957602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116127065790505b5050505050815250508152602001906001019061269a565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015611a7f5783829060005260206000200180546127b490617ed3565b80601f01602080910402602001604051908101604052809291908181526020018280546127e090617ed3565b801561282d5780601f106128025761010080835404028352916020019161282d565b820191906000526020600020905b81548152906001019060200180831161281057829003601f168201915b505050505081526020019060010190612795565b6026546040516001600160a01b03909116602482015260009060440160408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f84fae760000000000000000000000000000000000000000000000000000000001790525490517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561294457600080fd5b505af1158015612958573d6000803e3d6000fd5b505060255460265460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b0390911692507f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f915060340160408051601f19818403018152908290526129cc918590617f52565b60405180910390a2602080546026546040516001600160a01b0392831693630ac7c44c93612a149316910160609190911b6bffffffffffffffffffffffff1916815260140190565b604051602081830303815290604052836040518363ffffffff1660e01b8152600401612a41929190617f52565b600060405180830381600087803b158015612a5b57600080fd5b505af1158015612a6f573d6000803e3d6000fd5b5050505050565b60085460009060ff1615612a8e575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015612b1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b439190617dbf565b1415905090565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015612b9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bbf9190617dbf565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa158015612c11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c359190617dbf565b6027546025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152929350163190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612cb057600080fd5b505af1158015612cc4573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af1158015612d36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d5a9190617d9d565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612db957600080fd5b505af1158015612dcd573d6000803e3d6000fd5b50506020546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018890526001600160a01b039091169250632e1a7d4d9150602401600060405180830381600087803b158015612e3057600080fd5b505af1158015612e44573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015612e97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ebb9190617dbf565b9050612ec784826136f2565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015612f18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f3c9190617dbf565b9050612f4884826136f2565b602754612f609084906001600160a01b0316316136f2565b505050505050565b6060601580548060200260200160405190810160405280929190818152602001828054801561193c576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161191e575050505050905090565b6022546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015613019573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061303d9190617dbf565b6022546020546040516370a0823160e01b81526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa15801561308f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130b39190617dbf565b6027546020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039182166084820152929350163190737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561314a57600080fd5b505af115801561315e573d6000803e3d6000fd5b505060255460225460275460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b0392831694507f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716935091169060340160408051601f19818403018152908290526131de929189906000908190617f77565b60405180910390a26020546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561324557600080fd5b505af1158015613259573d6000803e3d6000fd5b50506022546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156132ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132d09190617dbf565b90506132e0611458600186617ead565b6022546020546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa158015613331573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133559190617dbf565b905061336184826136f2565b612f606114ed846001617ec0565b6021546025546040516370a0823160e01b81526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa1580156133c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133e49190617dbf565b6020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561347557600080fd5b505af1158015613489573d6000803e3d6000fd5b505060255460215460265460405160609190911b6bffffffffffffffffffffffff191660208201526001600160a01b0392831694507f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc577169350911690603401604051602081830303815290604052856000602160009054906101000a90046001600160a01b03166001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561354c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135709190617dbf565b604051613581959493929190617f77565b60405180910390a2602080546026546040516001600160a01b039283169363135390f9936135c99316910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f19818403018152908290526021547fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16835261361f926001916001600160a01b031690600401617f20565b600060405180830381600087803b15801561363957600080fd5b505af115801561364d573d6000803e3d6000fd5b50506021546025546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156136a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136c49190617dbf565b90506123246114588484617ead565b60006136dd617818565b6136e8848483613771565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b15801561375d57600080fd5b505afa158015612f60573d6000803e3d6000fd5b60008061377e85846137ec565b90506137e16040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f787900000081525082866040516020016137cc929190617fc5565b604051602081830303815290604052856137f8565b9150505b9392505050565b60006137e58383613826565b60c0810151516000901561381c5761381584848460c00151613841565b90506137e5565b61381584846139e7565b60006138328383613ad2565b6137e5838360200151846137f8565b60008061384c613ae2565b9050600061385a8683613bb5565b90506000613871826060015183602001518561405b565b905060006138818383898961426d565b9050600061388e826150ea565b602081015181519192509060030b15613901578982604001516040516020016138b8929190617fe7565b60408051601f19818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526138f891600401618068565b60405180910390fd5b60006139446040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a2000000000000000000000008152508360016152b9565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d90613997908490600401618068565b602060405180830381865afa1580156139b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139d89190617c7f565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590613a3c908790600401618068565b600060405180830381865afa158015613a59573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613a819190810190618163565b90506000613aaf8285604051602001613a9b929190618198565b6040516020818303038152906040526154b9565b90506001600160a01b0381166136e85784846040516020016138b89291906181c7565b613ade828260006154cc565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90613b69908490600401618272565b600060405180830381865afa158015613b86573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613bae91908101906182b9565b9250505090565b613be76040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050613c326040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b613c3b856155cf565b60208201526000613c4b866159b4565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015613c8d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613cb591908101906182b9565b86838560200151604051602001613ccf9493929190618302565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190613d27908590600401618068565b600060405180830381865afa158015613d44573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613d6c91908101906182b9565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690613db4908490600401618406565b602060405180830381865afa158015613dd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613df59190617d9d565b613e0a57816040516020016138b89190618458565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890613e4f9084906004016184ea565b600060405180830381865afa158015613e6c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613e9491908101906182b9565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690613edb90849060040161853c565b602060405180830381865afa158015613ef8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f1c9190617d9d565b15613fb1576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890613f6690849060040161853c565b600060405180830381865afa158015613f83573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613fab91908101906182b9565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001613fd6919061858e565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401614002929190617f52565b600060405180830381865afa15801561401f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261404791908101906182b9565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816140775790505090506040518060400160405280600481526020017f6772657000000000000000000000000000000000000000000000000000000000815250816000815181106140d7576140d76185fa565b60200260200101819052506040518060400160405280600381526020017f2d726c00000000000000000000000000000000000000000000000000000000008152508160018151811061412b5761412b6185fa565b6020026020010181905250846040516020016141479190618629565b60405160208183030381529060405281600281518110614169576141696185fa565b6020026020010181905250826040516020016141859190618695565b604051602081830303815290604052816003815181106141a7576141a76185fa565b602002602001018190525060006141bd826150ea565b602080820151604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000818501908152825180840184526000808252908601528251808401909352905182529281019290925291925061424e9060408051808201825260008082526020918201528151808301909252845182528085019082015290615c37565b61426357856040516020016138b891906186d6565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d90156142bd565b511590565b61443157826020015115614379576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a4016138f8565b8260c0015115614431576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a4016138f8565b6040805160ff8082526120008201909252600091816020015b606081526020019060019003908161444a57905050905060006040518060400160405280600381526020017f6e707800000000000000000000000000000000000000000000000000000000008152508282806144a590618767565b935060ff16815181106144ba576144ba6185fa565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e370000000000000000000000000000000000000081525060405160200161450b9190618786565b60405160208183030381529060405282828061452690618767565b935060ff168151811061453b5761453b6185fa565b60200260200101819052506040518060400160405280600681526020017f6465706c6f79000000000000000000000000000000000000000000000000000081525082828061458890618767565b935060ff168151811061459d5761459d6185fa565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d650000000000000000000000000000000000008152508282806145ea90618767565b935060ff16815181106145ff576145ff6185fa565b6020026020010181905250876020015182828061461b90618767565b935060ff1681518110614630576146306185fa565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163745061746800000000000000000000000000000000000081525082828061467d90618767565b935060ff1681518110614692576146926185fa565b6020908102919091010152875182826146aa81618767565b935060ff16815181106146bf576146bf6185fa565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e4964000000000000000000000000000000000000000000000081525082828061470c90618767565b935060ff1681518110614721576147216185fa565b602002602001018190525061473546615c98565b828261474081618767565b935060ff1681518110614755576147556185fa565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c6500000000000000000000000000000000008152508282806147a290618767565b935060ff16815181106147b7576147b76185fa565b6020026020010181905250868282806147cf90618767565b935060ff16815181106147e4576147e46185fa565b602090810291909101015285511561490b5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f646500000000000000000000006020820152828261483581618767565b935060ff168151811061484a5761484a6185fa565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d9061489a908990600401618068565b600060405180830381865afa1580156148b7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526148df91908101906182b9565b82826148ea81618767565b935060ff16815181106148ff576148ff6185fa565b60200260200101819052505b8460200151156149db5760408051808201909152601281527f2d2d766572696679536f75726365436f646500000000000000000000000000006020820152828261495481618767565b935060ff1681518110614969576149696185fa565b60200260200101819052506040518060400160405280600581526020017f66616c73650000000000000000000000000000000000000000000000000000008152508282806149b690618767565b935060ff16815181106149cb576149cb6185fa565b6020026020010181905250614ba2565b614a136142b88660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b614aa65760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614a5681618767565b935060ff1681518110614a6b57614a6b6185fa565b60200260200101819052508460a00151604051602001614a8b9190618629565b6040516020818303038152906040528282806149b690618767565b8460c00151158015614ae9575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152614ae790511590565b155b15614ba25760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614b2d81618767565b935060ff1681518110614b4257614b426185fa565b6020026020010181905250614b5688615d38565b604051602001614b669190618629565b604051602081830303815290604052828280614b8190618767565b935060ff1681518110614b9657614b966185fa565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152614bd690511590565b614c6b5760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282614c1981618767565b935060ff1681518110614c2e57614c2e6185fa565b60200260200101819052508460400151828280614c4a90618767565b935060ff1681518110614c5f57614c5f6185fa565b60200260200101819052505b606085015115614d8c5760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282614cb481618767565b935060ff1681518110614cc957614cc96185fa565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015614d38573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614d6091908101906182b9565b8282614d6b81618767565b935060ff1681518110614d8057614d806185fa565b60200260200101819052505b60e08501515115614e335760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282614dd681618767565b935060ff1681518110614deb57614deb6185fa565b6020026020010181905250614e078560e0015160000151615c98565b8282614e1281618767565b935060ff1681518110614e2757614e276185fa565b60200260200101819052505b60e08501516020015115614edd5760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282614e8081618767565b935060ff1681518110614e9557614e956185fa565b6020026020010181905250614eb18560e0015160200151615c98565b8282614ebc81618767565b935060ff1681518110614ed157614ed16185fa565b60200260200101819052505b60e08501516040015115614f875760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282614f2a81618767565b935060ff1681518110614f3f57614f3f6185fa565b6020026020010181905250614f5b8560e0015160400151615c98565b8282614f6681618767565b935060ff1681518110614f7b57614f7b6185fa565b60200260200101819052505b60e085015160600151156150315760408051808201909152601681527f2d2d6d61785072696f726974794665655065724761730000000000000000000060208201528282614fd481618767565b935060ff1681518110614fe957614fe96185fa565b60200260200101819052506150058560e0015160600151615c98565b828261501081618767565b935060ff1681518110615025576150256185fa565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561504f5761504f61807b565b60405190808252806020026020018201604052801561508257816020015b606081526020019060019003908161506d5790505b50905060005b8260ff168160ff1610156150db57838160ff16815181106150ab576150ab6185fa565b6020026020010151828260ff16815181106150c8576150c86185fa565b6020908102919091010152600101615088565b5093505050505b949350505050565b6151116040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c91615197918691016187f1565b600060405180830381865afa1580156151b4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526151dc91908101906182b9565b905060006151ea8683616827565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b815260040161521a9190617b71565b6000604051808303816000875af1158015615239573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526152619190810190618838565b805190915060030b1580159061527a5750602081015151155b80156152895750604081015151155b1561426357816000815181106152a1576152a16185fa565b60200260200101516040516020016138b891906188ee565b606060006152ee8560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506153259082905b9061697c565b156154825760006153a28261539c846153966153688a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b906169a3565b90616a05565b604080518082018252600181527f0a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061540690829061697c565b1561547057604080518082018252600181527f0a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261546d905b8290616a8a565b90505b61547981616ab0565b925050506137e5565b821561549b5784846040516020016138b8929190618ada565b50506040805160208101909152600081526137e5565b509392505050565b6000808251602084016000f09392505050565b8160a00151156154db57505050565b60006154e8848484616b19565b905060006154f5826150ea565b602081015181519192509060030b1580156155915750604080518082018252600781527f5355434345535300000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526155919060408051808201825260008082526020918201528151808301909252845182528085019082015261531f565b1561559e57505050505050565b604082015151156155be5781604001516040516020016138b89190618b81565b806040516020016138b89190618bdf565b606060006156048360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615669905b8290615c37565b156156d857604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526137e5906156d39083906170b4565b616ab0565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261573a905b829061713e565b60010361580757604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526157a090615466565b50604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526137e5906156d3905b8390616a8a565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261586690615662565b1561599d57604080518082018252600181527f2f000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201819052845180860190955292518452830152906158ce9083906171d8565b9050600081600183516158e19190617ead565b815181106158f1576158f16185fa565b602002602001015190506159946156d36159676040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528551825280860190820152906170b4565b95945050505050565b826040516020016138b89190618c4a565b50919050565b606060006159e98360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615a4b90615662565b15615a59576137e581616ab0565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615ab890615733565b600103615b2257604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526137e5906156d390615800565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615b8190615662565b1561599d57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290615be99083906171d8565b9050600181511115615c25578060028251615c049190617ead565b81518110615c1457615c146185fa565b602002602001015192505050919050565b50826040516020016138b89190618c4a565b805182516000911115615c4c575060006136ec565b81518351602085015160009291615c6291617ec0565b615c6c9190617ead565b905082602001518103615c835760019150506136ec565b82516020840151819020912014905092915050565b60606000615ca58361727d565b600101905060008167ffffffffffffffff811115615cc557615cc561807b565b6040519080825280601f01601f191660200182016040528015615cef576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084615cf957509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091615dc4905b829061735f565b15615e0457505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615e6390615dbd565b15615ea357505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615f0290615dbd565b15615f4257505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615fa190615dbd565b806160065750604080518082018252601081527f47504c2d322e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261600690615dbd565b1561604657505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c790000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526160a590615dbd565b8061610a5750604080518082018252601081527f47504c2d332e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261610a90615dbd565b1561614a57505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526161a990615dbd565b8061620e5750604080518082018252601181527f4c47504c2d322e312d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261620e90615dbd565b1561624e57505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526162ad90615dbd565b806163125750604080518082018252601181527f4c47504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261631290615dbd565b1561635257505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526163b190615dbd565b156163f157505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261645090615dbd565b1561649057505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526164ef90615dbd565b1561652f57505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261658e90615dbd565b156165ce57505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261662d90615dbd565b1561666d57505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526166cc90615dbd565b806167315750604080518082018252601181527f4147504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261673190615dbd565b1561677157505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e31000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526167d090615dbd565b1561681057505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b604080840151845191516138b89290602001618d28565b60608060005b84518110156168b25781858281518110616849576168496185fa565b6020026020010151604051602001616862929190618198565b6040516020818303038152906040529150600185516168819190617ead565b81146168aa57816040516020016168989190618e91565b60405160208183030381529060405291505b60010161682d565b5060408051600380825260808201909252600091816020015b60608152602001906001900390816168cb57905050905083816000815181106168f6576168f66185fa565b60200260200101819052506040518060400160405280600281526020017f2d630000000000000000000000000000000000000000000000000000000000008152508160018151811061694a5761694a6185fa565b60200260200101819052508181600281518110616969576169696185fa565b6020908102919091010152949350505050565b602080830151835183519284015160009361699a9291849190617373565b14159392505050565b604080518082019091526000808252602082015260006169d58460000151856020015185600001518660200151617484565b90508360200151816169e79190617ead565b845185906169f6908390617ead565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015616a2a5750816136ec565b6020808301519084015160019114616a515750815160208481015190840151829020919020145b8015616a8257825184518590616a68908390617ead565b9052508251602085018051616a7e908390617ec0565b9052505b509192915050565b6040805180820190915260008082526020820152616aa98383836175a4565b5092915050565b60606000826000015167ffffffffffffffff811115616ad157616ad161807b565b6040519080825280601f01601f191660200182016040528015616afb576020820181803683370190505b5090506000602082019050616aa9818560200151866000015161764f565b60606000616b25613ae2565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081616b4257905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280616b9d90618767565b935060ff1681518110616bb257616bb26185fa565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001616c039190618ed2565b604051602081830303815290604052828280616c1e90618767565b935060ff1681518110616c3357616c336185fa565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280616c8090618767565b935060ff1681518110616c9557616c956185fa565b602002602001018190525082604051602001616cb19190618695565b604051602081830303815290604052828280616ccc90618767565b935060ff1681518110616ce157616ce16185fa565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280616d2e90618767565b935060ff1681518110616d4357616d436185fa565b6020026020010181905250616d5887846176c9565b8282616d6381618767565b935060ff1681518110616d7857616d786185fa565b602090810291909101015285515115616e245760408051808201909152600b81527f2d2d7265666572656e636500000000000000000000000000000000000000000060208201528282616dca81618767565b935060ff1681518110616ddf57616ddf6185fa565b6020026020010181905250616df88660000151846176c9565b8282616e0381618767565b935060ff1681518110616e1857616e186185fa565b60200260200101819052505b856080015115616e925760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282616e6d81618767565b935060ff1681518110616e8257616e826185fa565b6020026020010181905250616ef8565b8415616ef85760408051808201909152601281527f2d2d726571756972655265666572656e6365000000000000000000000000000060208201528282616ed781618767565b935060ff1681518110616eec57616eec6185fa565b60200260200101819052505b60408601515115616f945760408051808201909152600d81527f2d2d756e73616665416c6c6f770000000000000000000000000000000000000060208201528282616f4281618767565b935060ff1681518110616f5757616f576185fa565b60200260200101819052508560400151828280616f7390618767565b935060ff1681518110616f8857616f886185fa565b60200260200101819052505b856060015115616ffe5760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282616fdd81618767565b935060ff1681518110616ff257616ff26185fa565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561701c5761701c61807b565b60405190808252806020026020018201604052801561704f57816020015b606081526020019060019003908161703a5790505b50905060005b8260ff168160ff1610156170a857838160ff1681518110617078576170786185fa565b6020026020010151828260ff1681518110617095576170956185fa565b6020908102919091010152600101617055565b50979650505050505050565b60408051808201909152600080825260208201528151835110156170d95750816136ec565b815183516020850151600092916170ef91617ec0565b6170f99190617ead565b6020840151909150600190821461711a575082516020840151819020908220145b801561713557835185518690617131908390617ead565b9052505b50929392505050565b60008082600001516171628560000151866020015186600001518760200151617484565b61716c9190617ec0565b90505b835160208501516171809190617ec0565b8111616aa9578161719081618f17565b92505082600001516171c78560200151836171ab9190617ead565b86516171b79190617ead565b8386600001518760200151617484565b6171d19190617ec0565b905061716f565b606060006171e6848461713e565b6171f1906001617ec0565b67ffffffffffffffff8111156172095761720961807b565b60405190808252806020026020018201604052801561723c57816020015b60608152602001906001900390816172275790505b50905060005b81518110156154b1576172586156d38686616a8a565b82828151811061726a5761726a6185fa565b6020908102919091010152600101617242565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106172c6577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106172f2576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061731057662386f26fc10000830492506010015b6305f5e1008310617328576305f5e100830492506008015b612710831061733c57612710830492506004015b6064831061734e576064830492506002015b600a83106136ec5760010192915050565b600061736b8383617709565b159392505050565b60008085841161747a576020841161742657600084156173be57600161739a866020617ead565b6173a5906008618f31565b6173b090600261902f565b6173ba9190617ead565b1990505b83518116856173cd8989617ec0565b6173d79190617ead565b805190935082165b818114617411578784116173f957879450505050506150e2565b836174038161903b565b9450508284511690506173df565b61741b8785617ec0565b9450505050506150e2565b8383206174338588617ead565b61743d9087617ec0565b91505b858210617478578482208082036174655761745b8684617ec0565b93505050506150e2565b617470600184617ead565b925050617440565b505b5092949350505050565b6000838186851161758f576020851161753e57600085156174d05760016174ac876020617ead565b6174b7906008618f31565b6174c290600261902f565b6174cc9190617ead565b1990505b845181166000876174e18b8b617ec0565b6174eb9190617ead565b855190915083165b828114617530578186106175185761750b8b8b617ec0565b96505050505050506150e2565b8561752281618f17565b9650508386511690506174f3565b8596505050505050506150e2565b508383206000905b6175508689617ead565b821161758d5785832080820361756c57839450505050506150e2565b617577600185617ec0565b935050818061758590618f17565b925050617546565b505b6175998787617ec0565b979650505050505050565b604080518082019091526000808252602082015260006175d68560000151866020015186600001518760200151617484565b6020808701805191860191909152519091506175f29082617ead565b8352845160208601516176059190617ec0565b81036176145760008552617646565b835183516176229190617ec0565b85518690617631908390617ead565b90525083516176409082617ec0565b60208601525b50909392505050565b602081106176875781518352617666602084617ec0565b9250617673602083617ec0565b9150617680602082617ead565b905061764f565b60001981156176b657600161769d836020617ead565b6176a99061010061902f565b6176b39190617ead565b90505b9151835183169219169190911790915250565b606060006176d78484613bb5565b80516020808301516040519394506176f193909101619052565b60405160208183030381529060405291505092915050565b815181516000919081111561771c575081515b6020808501519084015160005b838110156177d557825182518082146177a557600019602087101561778457600184617756896020617ead565b6177609190617ec0565b61776b906008618f31565b61777690600261902f565b6177809190617ead565b1990505b81811683821681810391146177a25797506136ec9650505050505050565b50505b6177b0602086617ec0565b94506177bd602085617ec0565b935050506020816177ce9190617ec0565b9050617729565b508451865161426391906190aa565b610b67806190cb83390190565b61053f80619c3283390190565b61106f8061a17183390190565b6119e88061b1e083390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161785b617860565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200161785b6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b818110156179125783516001600160a01b03168352602093840193909201916001016178eb565b509095945050505050565b60005b83811015617938578181015183820152602001617920565b50506000910152565b6000815180845261795981602086016020860161791d565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617a69577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015617a4f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352617a39848651617941565b60209586019590945092909201916001016179ff565b509197505050602094850194929092019150600101617995565b50929695505050505050565b600081518084526020840193506020830160005b82811015617ac95781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101617a89565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617a69577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752617b3f6040880182617941565b9050602082015191508681036020880152617b5a8183617a75565b965050506020938401939190910190600101617afb565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617a69577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452617bd3858351617941565b94506020938401939190910190600101617b99565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617a69577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152617c696040870182617a75565b9550506020938401939190910190600101617c10565b600060208284031215617c9157600080fd5b81516001600160a01b03811681146137e557600080fd5b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff8816604083015286606083015260038610617d62577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a0830152617d8360c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b600060208284031215617daf57600080fd5b815180151581146137e557600080fd5b600060208284031215617dd157600080fd5b5051919050565b608081526000617deb6080830187617941565b8560208401526001600160a01b038516604084015282810360608401526175998185617941565b6001600160a01b038716815260c060208201526000617e3460c0830188617941565b86604084015285606084015284608084015282810360a0840152617e588185617941565b9998505050505050505050565b8281526040602082015260006150e26040830184617941565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156136ec576136ec617e7e565b808201808211156136ec576136ec617e7e565b600181811c90821680617ee757607f821691505b6020821081036159ae577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b606081526000617f336060830186617941565b90508360208301526001600160a01b0383166040830152949350505050565b604081526000617f656040830185617941565b82810360208401526137e18185617941565b6001600160a01b038616815260c060208201526000617f9960c0830187617941565b6040830195909552506060810192909252608082015280820360a0909101526000815260200192915050565b6001600160a01b03831681526040602082015260006150e26040830184617941565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161801f81601a85016020880161791d565b7f3a20000000000000000000000000000000000000000000000000000000000000601a91840191820152835161805c81601c84016020880161791d565b01601c01949350505050565b6020815260006137e56020830184617941565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156180cd576180cd61807b565b60405290565b60008067ffffffffffffffff8411156180ee576180ee61807b565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561811d5761811d61807b565b60405283815290508082840185101561813557600080fd5b6154b184602083018561791d565b600082601f83011261815457600080fd5b6137e5838351602085016180d3565b60006020828403121561817557600080fd5b815167ffffffffffffffff81111561818c57600080fd5b6136e884828501618143565b600083516181aa81846020880161791d565b8351908301906181be81836020880161791d565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e7472616374200000000000008152600083516181ff81601a85016020880161791d565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161823c81603384016020880161791d565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f555400000000000000000000000000000000000000000060608201526080602082015260006137e56080830184617941565b6000602082840312156182cb57600080fd5b815167ffffffffffffffff8111156182e257600080fd5b8201601f810184136182f357600080fd5b6136e8848251602084016180d3565b60008551618314818460208a0161791d565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161834e816001840160208a0161791d565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161838c81600284016020890161791d565b6001818301019150507f2f00000000000000000000000000000000000000000000000000000000000000600182015283516183ce81600284016020880161791d565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b6040815260006184196040830184617941565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e206172746966616374200081526000825161849081601f85016020870161791d565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b6040815260006184fd6040830184617941565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b60408152600061854f6040830184617941565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b270000000000000000000000008152600082516185c681601485016020870161791d565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f220000000000000000000000000000000000000000000000000000000000000081526000825161866181600185016020870161791d565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b600082516186a781846020870161791d565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161875a81604b85016020870161791d565b91909101604b0192915050565b600060ff821660ff810361877d5761877d617e7e565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c694000000000000000000000000000000000000000000000006020820152600082516187e481602985016020870161791d565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f504154480000000000000000000060608201526080602082015260006137e56080830184617941565b60006020828403121561884a57600080fd5b815167ffffffffffffffff81111561886157600080fd5b82016060818503121561887357600080fd5b61887b6180aa565b81518060030b811461888c57600080fd5b8152602082015167ffffffffffffffff8111156188a857600080fd5b6188b486828501618143565b602083015250604082015167ffffffffffffffff8111156188d457600080fd5b6188e086828501618143565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825161894c81602185016020870161791d565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f2700000000000000000000000000000000000000000000000000000000000000602082015260008351618b3881602185016020880161791d565b7f2720696e206f75747075743a20000000000000000000000000000000000000006021918401918201528351618b7581602e84016020880161791d565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a2000000000000000000000000000000000000000000000006020820152600082516187e481602985016020870161791d565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a000000000000000000000000000000000000000000000000000000000000602082015260008251618c3d81602285016020870161791d565b9190910160220192915050565b7f436f6e7472616374206e616d6520000000000000000000000000000000000000815260008251618c8281600e85016020870161791d565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351618d6081601885016020880161791d565b7f20696e20000000000000000000000000000000000000000000000000000000006018918401918201528351618d9d81601c84016020880161791d565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b60008251618ea381846020870161791d565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f72654000000000815260008251618f0a81601c85016020870161791d565b91909101601c0192915050565b60006000198203618f2a57618f2a617e7e565b5060010190565b80820281158282048414176136ec576136ec617e7e565b6001815b6001841115618f8357808504811115618f6757618f67617e7e565b6001841615618f7557908102905b60019390931c928002618f4c565b935093915050565b600082618f9a575060016136ec565b81618fa7575060006136ec565b8160018114618fbd5760028114618fc757618fe3565b60019150506136ec565b60ff841115618fd857618fd8617e7e565b50506001821b6136ec565b5060208310610133831016604e8410600b8410161715619006575081810a6136ec565b6190136000198484618f48565b806000190482111561902757619027617e7e565b029392505050565b60006137e58383618f8b565b60008161904a5761904a617e7e565b506000190190565b6000835161906481846020880161791d565b7f3a00000000000000000000000000000000000000000000000000000000000000908301908152835161909e81600184016020880161791d565b01600101949350505050565b8181036000831280158383131683831282161715616aa957616aa9617e7e56fe60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57806000526020600020601f840160051c810160208510156100ec5750805b601f840160051c820191505b8181101561010c57600081556001016100f8565b50505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b6020601f821160018114610175576000831561015d5750848201515b600019600385901b1c1916600184901b17845561010c565b600084815260208120601f198516915b828110156101a55787850151825560209485019460019092019101610185565b50848210156101c35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610986806101e16000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610841565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d336600461085a565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610875565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d7565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108ea565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093d565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093d565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093d565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108ea565b600061073e3384846103bd565b9392505050565b602081526000825180602084015260005b818110156107735760208186018101516040868401015201610756565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b929592945050506040919091013590565b60006020828403121561085357600080fd5b5035919050565b60006020828403121561086c57600080fd5b61073e826107b1565b6000806040838503121561088857600080fd5b610891836107b1565b915061089f602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a8565b600181811c908216806108fe57607f821691505b602082108103610937577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a856fea264697066735822122008d7fc4e09519c5dd9f356b03596f6829a151d0bc7682533f9ceab4e459f5ee264736f6c634300081a00336080604052348015600f57600080fd5b506105208061001f6000396000f3fe60806040526004361061002a5760003560e01c806369582bee14610033578063de43156e1461005357005b3661003157005b005b34801561003f57600080fd5b5061003161004e3660046101ba565b610073565b34801561005f57600080fd5b5061003161006e3660046101ba565b6100ee565b6060811561008a5761008782840184610273565b90505b7ffdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e999486100b58780610369565b6100c560408a0160208b016103ce565b896040013533866040516100de969594939291906103f0565b60405180910390a1505050505050565b606081156101055761010282840184610273565b90505b7fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e6100b58780610369565b60006060828403121561014257600080fd5b50919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461016c57600080fd5b919050565b60008083601f84011261018357600080fd5b50813567ffffffffffffffff81111561019b57600080fd5b6020830191508360208285010111156101b357600080fd5b9250929050565b6000806000806000608086880312156101d257600080fd5b853567ffffffffffffffff8111156101e957600080fd5b6101f588828901610130565b95505061020460208701610148565b935060408601359250606086013567ffffffffffffffff81111561022757600080fd5b61023388828901610171565b969995985093965092949392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561028557600080fd5b813567ffffffffffffffff81111561029c57600080fd5b8201601f810184136102ad57600080fd5b803567ffffffffffffffff8111156102c7576102c7610244565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561033357610333610244565b60405281815282820160200186101561034b57600080fd5b81602084016020830137600091810160200191909152949350505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261039e57600080fd5b83018035915067ffffffffffffffff8211156103b957600080fd5b6020019150368190038213156101b357600080fd5b6000602082840312156103e057600080fd5b6103e982610148565b9392505050565b60a081528560a0820152858760c0830137600060c0878301015260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f880116820173ffffffffffffffffffffffffffffffffffffffff8716602084015285604084015273ffffffffffffffffffffffffffffffffffffffff8516606084015260c083820301608084015283518060c083015260005b818110156104a557602081870181015184830160e0015201610488565b50600060e0838301810191909152601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016909101019897505050505050505056fea2646970667358221220f4d1ccb9c8450e782e1c77412473fd37637a5c83a2a3272307d8c8bc8e8c7a3364736f6c634300081a003360c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea264697066735822122017543d2c8189b581ace78b1ea401266087d4800c1923634417b929e7efd8a9b764736f6c634300081a003360c060405234801561001057600080fd5b506040516119e83803806119e883398101604081905261002f916101db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600761006f898261032d565b50600861007c888261032d565b506009805460ff191660ff881617905560808590528360028111156100a3576100a36103eb565b60a08160028111156100b7576100b76103eb565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104019350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261011e57600080fd5b81516001600160401b03811115610137576101376100f7565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610165576101656100f7565b60405281815283820160200185101561017d57600080fd5b60005b8281101561019c57602081860181015183830182015201610180565b506000918101602001919091529392505050565b8051600381106101bf57600080fd5b919050565b80516001600160a01b03811681146101bf57600080fd5b600080600080600080600080610100898b0312156101f857600080fd5b88516001600160401b0381111561020e57600080fd5b61021a8b828c0161010d565b60208b015190995090506001600160401b0381111561023857600080fd5b6102448b828c0161010d565b975050604089015160ff8116811461025b57600080fd5b60608a0151909650945061027160808a016101b0565b60a08a0151909450925061028760c08a016101c4565b915061029560e08a016101c4565b90509295985092959890939650565b600181811c908216806102b857607f821691505b6020821081036102d857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561032857806000526020600020601f840160051c810160208510156103055750805b601f840160051c820191505b818110156103255760008155600101610311565b50505b505050565b81516001600160401b03811115610346576103466100f7565b61035a8161035484546102a4565b846102de565b6020601f82116001811461038e57600083156103765750848201515b600019600385901b1c1916600184901b178455610325565b600084815260208120601f198516915b828110156103be578785015182556020948501946001909201910161039e565b50848210156103dc5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a0516115b461043460003960006102f30152600081816102c4015281816109430152610a4901526115b46000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c90611416565b80601f016020809104026020016040519081016040528092919081815260200182805461047890611416565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611498565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d49186906114ab565b60405180910390a250600192915050565b60606008805461044c90611416565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114cd565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ef565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce919061151e565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad0919061153b565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f9190611554565b610b29919061156b565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611498565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e8990849061156b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611498565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611498565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e919061156b565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d890849061156b565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff81111561130f57600080fd5b8301601f8101851361132057600080fd5b803567ffffffffffffffff81111561133a5761133a6112b6565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156113a6576113a66112b6565b6040528181528282016020018710156113be57600080fd5b8160208401602083013760006020928201830152969401359450505050565b600080604083850312156113f057600080fd5b82356113fb816111ad565b9150602083013561140b816111ad565b809150509250929050565b600181811c9082168061142a57607f821691505b602082108103611463577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611469565b6040815260006114be604083018561112f565b90508260208301529392505050565b6000602082840312156114df57600080fd5b815180151581146111a657600080fd5b608081526000611502608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561153057600080fd5b81516111a6816111ad565b60006020828403121561154d57600080fd5b5051919050565b80820281158282048414176104e0576104e0611469565b808201808211156104e0576104e061146956fea26469706673582212207bc62dfdede7c005315010b4244c5d1661fb65fbf23259603e26342f3a5148c464736f6c634300081a0033a26469706673582212201be2823b07dd7c102eb08dd27f77c5908207f97a4d01ac542bd7e9bcece1192464736f6c634300081a0033", } // GatewayZEVMInboundTestABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/gatewayzevm.t.sol/gatewayzevmoutboundtest.go b/v2/pkg/gatewayzevm.t.sol/gatewayzevmoutboundtest.go index 7ba4b89a..ea11383c 100644 --- a/v2/pkg/gatewayzevm.t.sol/gatewayzevmoutboundtest.go +++ b/v2/pkg/gatewayzevm.t.sol/gatewayzevmoutboundtest.go @@ -50,7 +50,7 @@ type StdInvariantFuzzSelector struct { // GatewayZEVMOutboundTestMetaData contains all meta data concerning the GatewayZEVMOutboundTest contract. var GatewayZEVMOutboundTestMetaData = &bind.MetaData{ ABI: "[{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testDeposit\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositAndRevertZRC20AndCallZContract\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositAndRevertZRC20AndCallZContractFailsITargetIsFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositAndRevertZRC20AndCallZContractFailsITargetIsGateway\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositAndRevertZRC20AndCallZContractFailsIfSenderIsNotFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositFailsIfSenderNotFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositFailsIfTargetIsFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositFailsIfTargetIsGateway\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZETAAndCallZContract\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZETAAndCallZContractFailsIfSenderIsNotFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZETAAndCallZContractFailsIfTargetIsFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZETAAndCallZContractFailsIfTargetIsGateway\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZRC20AndCallZContract\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZRC20AndCallZContractFailsIfSenderIsNotFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZRC20AndCallZContractIfTargetIsFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testDepositZRC20AndCallZContractIfTargetIsGateway\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteRevertZContract\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteRevertZContractIfSenderIsNotFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteZContract\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testExecuteZContractFailsIfSenderIsNotFungibleModule\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ContextData\",\"inputs\":[{\"name\":\"origin\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"msgSender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ContextDataRevert\",\"inputs\":[{\"name\":\"origin\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"msgSender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawal\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"zrc20\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"gasfee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"protocolFlatFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"CallerIsNotFungibleModule\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedZetaSent\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GasFeeTransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientZRC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTarget\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OnlyWZETAOrFungible\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WithdrawalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20BurnFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZRC20TransferFailed\",\"inputs\":[]}]", - Bin: "0x6080604052600c8054600160ff199182168117909255601f805490911690911790553480156200002e57600080fd5b5061dc96806200003f6000396000f3fe60806040523480156200001157600080fd5b5060043610620002365760003560e01c80637f924c4e1162000142578063c272531811620000cc578063e20c9f711162000097578063f5a35733116200007a578063f5a3573314620003ce578063fa7626d414620003d8578063fc79171b14620003e657600080fd5b8063e20c9f7114620003ba578063eba3c49c14620003c457600080fd5b8063c27253181462000392578063c3248272146200039c578063cced12c714620003a6578063df690b9a14620003b057600080fd5b8063aed71d97116200010d578063aed71d971462000359578063b0464fdc1462000363578063b5508aa9146200036d578063ba414fa6146200037757600080fd5b80637f924c4e146200031357806385226c81146200031d578063916a17c6146200033657806396d9d876146200034f57600080fd5b80633a25c46011620001c4578063461fc5af116200018f578063461fc5af14620002dc578063597cfeb014620002e657806366d9a9a014620002f0578063720b9aa9146200030957600080fd5b80633a25c46014620002b45780633e5e3c2314620002be5780633f7286f414620002c857806344b2a40b14620002d257600080fd5b80631ed7831c11620002055780631ed7831c14620002655780631fe6879714620002875780632ade3880146200029157806331d0995614620002aa57600080fd5b806309f080da146200023b5780630a9254e41462000247578063104b35221462000251578063198d5ca4146200025b575b600080fd5b62000245620003f0565b005b62000245620005ee565b6200024562001081565b620002456200127d565b6200026f62001547565b6040516200027e919062008917565b60405180910390f35b62000245620015ab565b6200029b62001afd565b6040516200027e9190620089ba565b6200024562001c4b565b6200024562001e12565b6200026f62001fd5565b6200026f62002037565b6200024562002099565b6200024562002227565b62000245620023ed565b620002fa620027da565b6040516200027e919062008b1b565b6200024562002968565b6200024562002be6565b6200032762002e24565b6040516200027e919062008bc4565b6200034062002efe565b6040516200027e919062008c48565b6200024562002ffd565b6200024562003155565b6200034062003471565b6200032762003570565b620003816200364a565b60405190151581526020016200027e565b6200024562003722565b62000245620038e3565b6200024562003aa4565b6200024562003c97565b6200026f62003e5d565b6200024562003ebf565b6200024562004085565b601f54620003819060ff1681565b6200024562004244565b6000604051602001620004039062008cd9565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f2b2add3d0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b158015620004ce57600080fd5b505af1158015620004e3573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156200054157600080fd5b505af115801562000556573d6000803e3d6000fd5b50506020546021546024546040517f5af659670000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550635af659679450620005b6938793811692600192911690899060040162008d57565b600060405180830381600087803b158015620005d157600080fd5b505af1158015620005e6573d6000803e3d6000fd5b505050505050565b602580547fffffffffffffffffffffffff0000000000000000000000000000000000000000908116301790915560268054909116611234179055604051620006369062008823565b604051809103906000f08015801562000653573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169182179055604080518082018252600f81527f476174657761795a45564d2e736f6c00000000000000000000000000000000006020820152905160248101929092526200072e9160440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc4d66de80000000000000000000000000000000000000000000000000000000017905262004380565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b039384168102919091179182905560208054919092049092167fffffffffffffffffffffffff000000000000000000000000000000000000000090921682178155604080517f3ce4a5bc0000000000000000000000000000000000000000000000000000000081529051633ce4a5bc926004808401939192918290030181865afa158015620007f1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000817919062008daa565b602780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516200085d9062008831565b604051809103906000f0801580156200087a573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161781556027546040517f06447d5600000000000000000000000000000000000000000000000000000000815292166004830152737109709ecfa91a80626ff3989d68f67f5b1dd12d916306447d569101600060405180830381600087803b1580156200091757600080fd5b505af11580156200092c573d6000803e3d6000fd5b50505050600080600060405162000943906200883f565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801562000980573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155602054604051601293600193849360009391921690620009d8906200884d565b620009e99695949392919062008dd5565b604051809103906000f08015801562000a06573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556023546040517fee2815ba0000000000000000000000000000000000000000000000000000000081526001600482015260248101929092529091169063ee2815ba90604401600060405180830381600087803b15801562000a9e57600080fd5b505af115801562000ab3573d6000803e3d6000fd5b50506023546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b15801562000b1e57600080fd5b505af115801562000b33573d6000803e3d6000fd5b50506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b15801562000bb457600080fd5b505af115801562000bc9573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b15801562000c1f57600080fd5b505af115801562000c34573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af115801562000ca9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ccf919062008ec9565b506021546025546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116906347e7ef24906044016020604051808303816000875af115801562000d41573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d67919062008ec9565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562000dc757600080fd5b505af115801562000ddc573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b15801562000e5357600080fd5b505af115801562000e68573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116925063095ea7b391506044016020604051808303816000875af115801562000edd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f03919062008ec9565b50602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b15801562000f5657600080fd5b505af115801562000f6b573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af115801562000fe0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001006919062008ec9565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200106657600080fd5b505af11580156200107b573d6000803e3d6000fd5b50505050565b604051600190600090620010989060200162008cd9565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156200116357600080fd5b505af115801562001178573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015620011d657600080fd5b505af1158015620011eb573d6000803e3d6000fd5b50506020546027546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a959350620012449286928992911690889060040162008eed565b600060405180830381600087803b1580156200125f57600080fd5b505af115801562001274573d6000803e3d6000fd5b50505050505050565b6021546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015620012e8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200130e919062008f2b565b90506200131d600082620043a3565b60255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200137757600080fd5b505af11580156200138c573d6000803e3d6000fd5b5050604051630618f58760e51b81527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015620013fd57600080fd5b505af115801562001412573d6000803e3d6000fd5b50506020546021546026546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810188905290821660448201529116925063f45346dc9150606401600060405180830381600087803b1580156200148b57600080fd5b505af1158015620014a0573d6000803e3d6000fd5b50506021546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa1580156200150d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001533919062008f2b565b905062001542600082620043a3565b505050565b60606016805480602002602001604051908101604052809291908181526020018280548015620015a157602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162001582575b5050505050905090565b6022546027546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa15801562001616573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200163c919062008f2b565b6022546020546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa158015620016a8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620016ce919062008f2b565b6024546040519192506001600160a01b03163190600090620016f39060200162008cd9565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015620017e257600080fd5b505af1158015620017f7573d6000803e3d6000fd5b5050602080546040517fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e94506200185393506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f198184030181529082905260275460205462001885936001600160a01b03928316928c92169062008f45565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620018e757600080fd5b505af1158015620018fc573d6000803e3d6000fd5b50506020546024546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a959350620019559286928c92911690889060040162008eed565b600060405180830381600087803b1580156200197057600080fd5b505af115801562001985573d6000803e3d6000fd5b50506022546027546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015620019f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a18919062008f2b565b905062001a3162001a2a888862008fe4565b82620043a3565b6022546020546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa15801562001a9c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ac2919062008f2b565b905062001ad08682620043a3565b62001af362001ae0898762008ffa565b6024546001600160a01b031631620043a3565b5050505050505050565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101562001c4257600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101562001c2a57838290600052602060002001805462001b969062009010565b80601f016020809104026020016040519081016040528092919081815260200182805462001bc49062009010565b801562001c155780601f1062001be95761010080835404028352916020019162001c15565b820191906000526020600020905b81548152906001019060200180831162001bf757829003601f168201915b50505050508152602001906001019062001b74565b50505050815250508152602001906001019062001b21565b50505050905090565b600060405160200162001c5e9062008cd9565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f2b2add3d0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801562001d2957600080fd5b505af115801562001d3e573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa791506024015b600060405180830381600087803b15801562001d9d57600080fd5b505af115801562001db2573d6000803e3d6000fd5b50506020546021546024546040517f309f50040000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063309f50049450620005b6938793811692600192911690899060040162008d57565b60405160019060009062001e299060200162008cd9565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f2b2add3d0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801562001ef457600080fd5b505af115801562001f09573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801562001f6757600080fd5b505af115801562001f7c573d6000803e3d6000fd5b50506020546024546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a959350620012449286928992911690889060040162008eed565b60606018805480602002602001604051908101604052809291908181526020018280548015620015a1576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001582575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015620015a1576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001582575050505050905090565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620020f657600080fd5b505af11580156200210b573d6000803e3d6000fd5b5050604051630618f58760e51b81527f82d5d76a000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156200217c57600080fd5b505af115801562002191573d6000803e3d6000fd5b50506020546021546027546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810187905290821660448201529116925063f45346dc91506064015b600060405180830381600087803b1580156200220b57600080fd5b505af115801562002220573d6000803e3d6000fd5b5050505050565b60006040516020016200223a9062008cd9565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f2b2add3d0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156200230557600080fd5b505af11580156200231a573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156200237857600080fd5b505af11580156200238d573d6000803e3d6000fd5b50506020546021546024546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca379450620005b6938793811692600192911690899060040162008d57565b602154602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009391909116916370a082319101602060405180830381865afa15801562002457573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200247d919062008f2b565b90506200248c600082620043a3565b60006040516020016200249f9062008cd9565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156200258e57600080fd5b505af1158015620025a3573d6000803e3d6000fd5b5050602080546040517fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e9450620025ff93506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f198184030181529082905260275460205462002632936001600160a01b0392831692600192169062008f45565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200269457600080fd5b505af1158015620026a9573d6000803e3d6000fd5b50506020546021546024546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca37945062002709938793811692600192911690899060040162008d57565b600060405180830381600087803b1580156200272457600080fd5b505af115801562002739573d6000803e3d6000fd5b5050602154602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009550921692506370a082319101602060405180830381865afa158015620027a5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620027cb919062008f2b565b90506200107b600182620043a3565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101562001c425783829060005260206000209060020201604051806040016040529081600082018054620028349062009010565b80601f0160208091040260200160405190810160405280929190818152602001828054620028629062009010565b8015620028b35780601f106200288757610100808354040283529160200191620028b3565b820191906000526020600020905b8154815290600101906020018083116200289557829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156200294f57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620028fb5790505b50505050508152505081526020019060010190620027fe565b60006040516020016200297b9062008cd9565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801562002a6a57600080fd5b505af115801562002a7f573d6000803e3d6000fd5b5050602080546040517fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e945062002adb93506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f198184030181529082905260275460205462002b0e936001600160a01b0392831692600192169062008f45565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015b600060405180830381600087803b15801562002b7157600080fd5b505af115801562002b86573d6000803e3d6000fd5b50506020546021546024546040517fbcf7f32b0000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063bcf7f32b9450620005b6938793811692600192911690899060040162008d57565b6021546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa15801562002c51573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002c77919062008f2b565b905062002c86600082620043a3565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562002ce057600080fd5b505af115801562002cf5573d6000803e3d6000fd5b50506020546021546026546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810188905290821660448201529116925063f45346dc9150606401600060405180830381600087803b15801562002d6e57600080fd5b505af115801562002d83573d6000803e3d6000fd5b50506021546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa15801562002df0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002e16919062008f2b565b9050620015428382620043a3565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101562001c4257838290600052602060002001805462002e6a9062009010565b80601f016020809104026020016040519081016040528092919081815260200182805462002e989062009010565b801562002ee95780601f1062002ebd5761010080835404028352916020019162002ee9565b820191906000526020600020905b81548152906001019060200180831162002ecb57829003601f168201915b50505050508152602001906001019062002e48565b6060601d805480602002602001604051908101604052809291908181526020016000905b8282101562001c425760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562002fe457602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162002f905790505b5050505050815250508152602001906001019062002f22565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200305a57600080fd5b505af11580156200306f573d6000803e3d6000fd5b5050604051630618f58760e51b81527f82d5d76a000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015620030e057600080fd5b505af1158015620030f5573d6000803e3d6000fd5b50506020546021546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101869052911660448201819052925063f45346dc9150606401620021f0565b602154602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009391909116916370a082319101602060405180830381865afa158015620031bf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620031e5919062008f2b565b9050620031f4600082620043a3565b6000604051602001620032079062008cd9565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015620032f657600080fd5b505af11580156200330b573d6000803e3d6000fd5b5050602080546040517ffdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e9994894506200336793506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f19818403018152908290526027546020546200339a936001600160a01b0392831692600192169062008f45565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620033fc57600080fd5b505af115801562003411573d6000803e3d6000fd5b50506020546021546024546040517f5af659670000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550635af65967945062002709938793811692600192911690899060040162008d57565b6060601c805480602002602001604051908101604052809291908181526020016000905b8282101562001c425760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200355757602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620035035790505b5050505050815250508152602001906001019062003495565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101562001c42578382906000526020600020018054620035b69062009010565b80601f0160208091040260200160405190810160405280929190818152602001828054620035e49062009010565b8015620036355780601f10620036095761010080835404028352916020019162003635565b820191906000526020600020905b8154815290600101906020018083116200361757829003601f168201915b50505050508152602001906001019062003594565b60085460009060ff161562003663575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015620036f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200371b919062008f2b565b1415905090565b6000604051602001620037359062008cd9565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156200380057600080fd5b505af115801562003815573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156200387357600080fd5b505af115801562003888573d6000803e3d6000fd5b50506020546021546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063c39aca379350620005b692869216906001908690899060040162008d57565b6000604051602001620038f69062008cd9565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b158015620039c157600080fd5b505af1158015620039d6573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801562003a3457600080fd5b505af115801562003a49573d6000803e3d6000fd5b50506020546021546040517f5af659670000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635af659679350620005b692869216906001908690899060040162008d57565b600060405160200162003ab79062008cd9565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801562003ba657600080fd5b505af115801562003bbb573d6000803e3d6000fd5b5050602080546040517ffdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e99948945062003c1793506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f198184030181529082905260275460205462003c4a936001600160a01b0392831692600192169062008f45565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa79060240162001d82565b600060405160200162003caa9062008cd9565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801562003d7557600080fd5b505af115801562003d8a573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801562003de857600080fd5b505af115801562003dfd573d6000803e3d6000fd5b50506020546021546027546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca379450620005b6938793811692600192911690899060040162008d57565b60606015805480602002602001604051908101604052809291908181526020018280548015620015a1576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162001582575050505050905090565b600060405160200162003ed29062008cd9565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801562003f9d57600080fd5b505af115801562003fb2573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156200401057600080fd5b505af115801562004025573d6000803e3d6000fd5b50506020546021546027546040517f5af659670000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550635af659679450620005b6938793811692600192911690899060040162008d57565b6040516001906000906200409c9060200162008cd9565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156200416757600080fd5b505af11580156200417c573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015620041da57600080fd5b505af1158015620041ef573d6000803e3d6000fd5b50506020546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0390911692506321501a9591506200124490849087908590889060040162008eed565b6000604051602001620042579062008cd9565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f2b2add3d0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156200432257600080fd5b505af115801562004337573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa7915060240162002b56565b60006200438c6200885b565b6200439984848362004424565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b1580156200440f57600080fd5b505afa158015620005e6573d6000803e3d6000fd5b600080620044338584620044a5565b90506200449a6040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f78790000008152508286604051602001620044849291906200905f565b60405160208183030381529060405285620044b3565b9150505b9392505050565b60006200449e8383620044e7565b60c08101515160009015620044db57620044d384848460c0015162004506565b90506200449e565b620044d38484620046c2565b6000620044f58383620047b9565b6200449e83836020015184620044b3565b60008062004513620047cb565b90506000620045238683620048a3565b905060006200453c826060015183602001518562004d78565b905060006200454e8383898962004fa2565b905060006200455d8262005f02565b602081015181519192509060030b15620045d5578982604001516040516020016200458a92919062009083565b60408051601f19818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252620045cc9160040162009108565b60405180910390fd5b60006200461a6040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001620060e6565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d906200466f90849060040162009108565b602060405180830381865afa1580156200468d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620046b3919062008daa565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc925906200471990879060040162009108565b600060405180830381865afa15801562004737573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262004761919081019062009218565b905060006200479382856040516020016200477e92919062009251565b604051602081830303815290604052620062f4565b90506001600160a01b038116620043995784846040516020016200458a92919062009284565b620047c78282600062006307565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c906200485490849060040162009333565b600060405180830381865afa15801562004872573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200489c91908101906200937c565b9250505090565b620048d66040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050620049226040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6200492d8562006418565b602082015260006200493f866200681d565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa15801562004982573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620049ac91908101906200937c565b86838560200151604051602001620049c89493929190620093ca565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb119062004a2290859060040162009108565b600060405180830381865afa15801562004a40573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262004a6a91908101906200937c565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f69062004ab490849060040162009490565b602060405180830381865afa15801562004ad2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004af8919062008ec9565b62004b1057816040516020016200458a9190620094e4565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac89062004b5790849060040162009578565b600060405180830381865afa15801562004b75573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262004b9f91908101906200937c565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f69062004be8908490600401620095cc565b602060405180830381865afa15801562004c06573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004c2c919062008ec9565b1562004cc7576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac89062004c79908490600401620095cc565b600060405180830381865afa15801562004c97573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262004cc191908101906200937c565b60408501525b846001600160a01b03166349c4fac882866000015160405160200162004cee919062009620565b6040516020818303038152906040526040518363ffffffff1660e01b815260040162004d1c9291906200968e565b600060405180830381865afa15801562004d3a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262004d6491908101906200937c565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b606081526020019060019003908162004d945790505090506040518060400160405280600481526020017f67726570000000000000000000000000000000000000000000000000000000008152508160008151811062004df85762004df8620096b7565b60200260200101819052506040518060400160405280600381526020017f2d726c00000000000000000000000000000000000000000000000000000000008152508160018151811062004e4f5762004e4f620096b7565b60200260200101819052508460405160200162004e6d9190620096e6565b6040516020818303038152906040528160028151811062004e925762004e92620096b7565b60200260200101819052508260405160200162004eb0919062009732565b6040516020818303038152906040528160038151811062004ed55762004ed5620096b7565b6020026020010181905250600062004eed8262005f02565b602080820151604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000818501908152825180840184526000808252908601528251808401909352905182529281019290925291925062004f80906040805180820182526000808252602091820152815180830190925284518252808501908201529062006ab9565b62004f9857856040516020016200458a919062009775565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d901562004ff3565b511590565b6200516c57826020015115620050b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401620045cc565b8260c00151156200516c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401620045cc565b6040805160ff8082526120008201909252600091816020015b60608152602001906001900390816200518557905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280620051e39062009808565b935060ff1681518110620051fb57620051fb620096b7565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e37000000000000000000000000000000000000008152506040516020016200524e91906200982a565b6040516020818303038152906040528282806200526b9062009808565b935060ff1681518110620052835762005283620096b7565b60200260200101819052506040518060400160405280600681526020017f6465706c6f790000000000000000000000000000000000000000000000000000815250828280620052d29062009808565b935060ff1681518110620052ea57620052ea620096b7565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d65000000000000000000000000000000000000815250828280620053399062009808565b935060ff1681518110620053515762005351620096b7565b602002602001018190525087602001518282806200536f9062009808565b935060ff1681518110620053875762005387620096b7565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e747261637450617468000000000000000000000000000000000000815250828280620053d69062009808565b935060ff1681518110620053ee57620053ee620096b7565b602090810291909101015287518282620054088162009808565b935060ff1681518110620054205762005420620096b7565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e496400000000000000000000000000000000000000000000008152508282806200546f9062009808565b935060ff1681518110620054875762005487620096b7565b60200260200101819052506200549d4662006b22565b8282620054aa8162009808565b935060ff1681518110620054c257620054c2620096b7565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c650000000000000000000000000000000000815250828280620055119062009808565b935060ff1681518110620055295762005529620096b7565b602002602001018190525086828280620055439062009808565b935060ff16815181106200555b576200555b620096b7565b6020908102919091010152855115620056925760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f6465000000000000000000000060208201528282620055af8162009808565b935060ff1681518110620055c757620055c7620096b7565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d906200561990899060040162009108565b600060405180830381865afa15801562005637573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200566191908101906200937c565b82826200566e8162009808565b935060ff1681518110620056865762005686620096b7565b60200260200101819052505b8460200151156200576e5760408051808201909152601281527f2d2d766572696679536f75726365436f6465000000000000000000000000000060208201528282620056de8162009808565b935060ff1681518110620056f657620056f6620096b7565b60200260200101819052506040518060400160405280600581526020017f66616c7365000000000000000000000000000000000000000000000000000000815250828280620057459062009808565b935060ff16815181106200575d576200575d620096b7565b602002602001018190525062005952565b620057a862004fee8660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b620058455760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282620057ee8162009808565b935060ff1681518110620058065762005806620096b7565b60200260200101819052508460a00151604051602001620058289190620096e6565b604051602081830303815290604052828280620057459062009808565b8460c001511580156200588a5750604080890151815180830183526000808252602091820152825180840190935281518352908101908201526200588890511590565b155b15620059525760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282620058d18162009808565b935060ff1681518110620058e957620058e9620096b7565b6020026020010181905250620058ff8862006bc9565b604051602001620059119190620096e6565b6040516020818303038152906040528282806200592e9062009808565b935060ff1681518110620059465762005946620096b7565b60200260200101819052505b604080860151815180830183526000808252602091820152825180840190935281518352908101908201526200598790511590565b62005a275760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282620059cd8162009808565b935060ff1681518110620059e557620059e5620096b7565b6020026020010181905250846040015182828062005a039062009808565b935060ff168151811062005a1b5762005a1b620096b7565b60200260200101819052505b60608501511562005b565760408051808201909152600681527f2d2d73616c7400000000000000000000000000000000000000000000000000006020820152828262005a738162009808565b935060ff168151811062005a8b5762005a8b620096b7565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa15801562005afb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262005b2591908101906200937c565b828262005b328162009808565b935060ff168151811062005b4a5762005b4a620096b7565b60200260200101819052505b60e0850151511562005c0a5760408051808201909152600a81527f2d2d6761734c696d6974000000000000000000000000000000000000000000006020820152828262005ba38162009808565b935060ff168151811062005bbb5762005bbb620096b7565b602002602001018190525062005bd98560e001516000015162006b22565b828262005be68162009808565b935060ff168151811062005bfe5762005bfe620096b7565b60200260200101819052505b60e0850151602001511562005cc15760408051808201909152600a81527f2d2d6761735072696365000000000000000000000000000000000000000000006020820152828262005c5a8162009808565b935060ff168151811062005c725762005c72620096b7565b602002602001018190525062005c908560e001516020015162006b22565b828262005c9d8162009808565b935060ff168151811062005cb55762005cb5620096b7565b60200260200101819052505b60e0850151604001511562005d785760408051808201909152600e81527f2d2d6d61784665655065724761730000000000000000000000000000000000006020820152828262005d118162009808565b935060ff168151811062005d295762005d29620096b7565b602002602001018190525062005d478560e001516040015162006b22565b828262005d548162009808565b935060ff168151811062005d6c5762005d6c620096b7565b60200260200101819052505b60e0850151606001511562005e2f5760408051808201909152601681527f2d2d6d61785072696f72697479466565506572476173000000000000000000006020820152828262005dc88162009808565b935060ff168151811062005de05762005de0620096b7565b602002602001018190525062005dfe8560e001516060015162006b22565b828262005e0b8162009808565b935060ff168151811062005e235762005e23620096b7565b60200260200101819052505b60008160ff1667ffffffffffffffff81111562005e505762005e506200911d565b60405190808252806020026020018201604052801562005e8557816020015b606081526020019060019003908162005e6f5790505b50905060005b8260ff168160ff16101562005ef357838160ff168151811062005eb25762005eb2620096b7565b6020026020010151828260ff168151811062005ed25762005ed2620096b7565b6020026020010181905250808062005eea9062009808565b91505062005e8b565b5093505050505b949350505050565b62005f2a6040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c9162005fb29186910162009897565b600060405180830381865afa15801562005fd0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262005ffa91908101906200937c565b905060006200600a8683620076f3565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b81526004016200603c919062008bc4565b6000604051808303816000875af11580156200605c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620060869190810190620098e0565b805190915060030b15801590620060a05750602081015151155b8015620060b05750604081015151155b1562004f985781600081518110620060cc57620060cc620096b7565b60200260200101516040516020016200458a919062009996565b606060006200611c8560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528651825280870190820152909150620061559082905b906200786a565b15620062c1576000620061d982620061d284620061cb6200619d8a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b9062007893565b90620078fb565b604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506200623f9082906200786a565b15620062ac57604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620062a9905b829062007988565b90505b620062b781620079b0565b925050506200449e565b8215620062dd5784846040516020016200458a92919062009b84565b50506040805160208101909152600081526200449e565b6000808251602084016000f09392505050565b8160a00151156200631757505050565b60006200632684848462007a1f565b90506000620063358262005f02565b602081015181519192509060030b158015620063d45750604080518082018252600781527f535543434553530000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620063d4906040805180820182526000808252602091820152815180830190925284518252808501908201526200614e565b15620063e257505050505050565b60408201515115620064055781604001516040516020016200458a919062009c2f565b806040516020016200458a919062009c8f565b606060006200644e8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150620064b5905b829062006ab9565b156200652957604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526200449e906200652390839062008026565b620079b0565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526200658d905b8290620080ba565b6001036200666057604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620065f690620062a1565b50604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526200449e9062006523905b839062007988565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620066c190620064ad565b156200680457604080518082018252600181527f2f000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201819052845180860190955292518452830152906200672c90839062008166565b90506000816001835162006741919062008fe4565b81518110620067545762006754620096b7565b60200260200101519050620067fb62006523620067cd6040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925285518252808601908201529062008026565b95945050505050565b826040516020016200458a919062009cfc565b50919050565b60606000620068538360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150620068b790620064ad565b15620068c8576200449e81620079b0565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620069299062006585565b6001036200699757604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526200449e90620065239062006658565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620069f890620064ad565b156200680457604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529062006a6390839062008166565b905060018151111562006aa557806002825162006a81919062008fe4565b8151811062006a945762006a94620096b7565b602002602001015192505050919050565b50826040516020016200458a919062009cfc565b80518251600091111562006ad0575060006200439d565b8151835160208501516000929162006ae89162008ffa565b62006af4919062008fe4565b90508260200151810362006b0d5760019150506200439d565b82516020840151819020912014905092915050565b6060600062006b318362008231565b600101905060008167ffffffffffffffff81111562006b545762006b546200911d565b6040519080825280601f01601f19166020018201604052801562006b7f576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508462006b8957509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e534544000000000000000000000000000000000000000000008184019081528551808701875283815284019290925284518086019095525184529083015260609162006c57905b82906200831a565b1562006c9857505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015262006cf99062006c4f565b1562006d3a57505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d495400000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015262006d9b9062006c4f565b1562006ddc57505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015262006e3d9062006c4f565b8062006ea55750604080518082018252601081527f47504c2d322e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015262006ea59062006c4f565b1562006ee657505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015262006f479062006c4f565b8062006faf5750604080518082018252601081527f47504c2d332e302d6f722d6c61746572000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015262006faf9062006c4f565b1562006ff057505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620070519062006c4f565b80620070b95750604080518082018252601181527f4c47504c2d322e312d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620070b99062006c4f565b15620070fa57505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526200715b9062006c4f565b80620071c35750604080518082018252601181527f4c47504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620071c39062006c4f565b156200720457505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620072659062006c4f565b15620072a657505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620073079062006c4f565b156200734857505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620073a99062006c4f565b15620073ea57505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526200744b9062006c4f565b156200748c57505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e300000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620074ed9062006c4f565b156200752e57505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526200758f9062006c4f565b80620075f75750604080518082018252601181527f4147504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620075f79062006c4f565b156200763857505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e3100000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620076999062006c4f565b15620076da57505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b604080840151845191516200458a929060200162009ddc565b60608060005b8451811015620077965781858281518110620077195762007719620096b7565b60200260200101516040516020016200773492919062009251565b60405160208183030381529060405291506001855162007755919062008fe4565b81146200778157816040516020016200776f919062009f49565b60405160208183030381529060405291505b806200778d8162009f8c565b915050620076f9565b5060408051600380825260808201909252600091816020015b6060815260200190600190039081620077af5790505090508381600081518110620077de57620077de620096b7565b60200260200101819052506040518060400160405280600281526020017f2d6300000000000000000000000000000000000000000000000000000000000081525081600181518110620078355762007835620096b7565b60200260200101819052508181600281518110620078575762007857620096b7565b6020908102919091010152949350505050565b60208083015183518351928401516000936200788a929184919062008330565b14159392505050565b60408051808201909152600080825260208201526000620078c7846000015185602001518560000151866020015162008465565b9050836020015181620078db919062008fe4565b84518590620078ec90839062008fe4565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015620079225750816200439d565b60208083015190840151600191146200794a5750815160208481015190840151829020919020145b801562007980578251845185906200796490839062008fe4565b90525082516020850180516200797c90839062008ffa565b9052505b509192915050565b6040805180820190915260008082526020820152620079a9838383620085a9565b5092915050565b60606000826000015167ffffffffffffffff811115620079d457620079d46200911d565b6040519080825280601f01601f191660200182016040528015620079ff576020820181803683370190505b5090506000602082019050620079a9818560200151866000015162008662565b6060600062007a2d620047cb565b6040805160ff808252612000820190925291925060009190816020015b606081526020019060019003908162007a4a57905050905060006040518060400160405280600381526020017f6e7078000000000000000000000000000000000000000000000000000000000081525082828062007aa89062009808565b935060ff168151811062007ac05762007ac0620096b7565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e330000000000000000000000000000000000000000000000000081525060405160200162007b13919062009fa9565b60405160208183030381529060405282828062007b309062009808565b935060ff168151811062007b485762007b48620096b7565b60200260200101819052506040518060400160405280600881526020017f76616c696461746500000000000000000000000000000000000000000000000081525082828062007b979062009808565b935060ff168151811062007baf5762007baf620096b7565b60200260200101819052508260405160200162007bcd919062009732565b60405160208183030381529060405282828062007bea9062009808565b935060ff168151811062007c025762007c02620096b7565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e74726163740000000000000000000000000000000000000000000081525082828062007c519062009808565b935060ff168151811062007c695762007c69620096b7565b602002602001018190525062007c808784620086eb565b828262007c8d8162009808565b935060ff168151811062007ca55762007ca5620096b7565b60209081029190910101528551511562007d5e5760408051808201909152600b81527f2d2d7265666572656e63650000000000000000000000000000000000000000006020820152828262007cfa8162009808565b935060ff168151811062007d125762007d12620096b7565b602002602001018190525062007d2d866000015184620086eb565b828262007d3a8162009808565b935060ff168151811062007d525762007d52620096b7565b60200260200101819052505b85608001511562007dd35760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b00000000000000006020820152828262007daa8162009808565b935060ff168151811062007dc25762007dc2620096b7565b602002602001018190525062007e3f565b841562007e3f5760408051808201909152601281527f2d2d726571756972655265666572656e636500000000000000000000000000006020820152828262007e1b8162009808565b935060ff168151811062007e335762007e33620096b7565b60200260200101819052505b6040860151511562007ee65760408051808201909152600d81527f2d2d756e73616665416c6c6f77000000000000000000000000000000000000006020820152828262007e8c8162009808565b935060ff168151811062007ea45762007ea4620096b7565b6020026020010181905250856040015182828062007ec29062009808565b935060ff168151811062007eda5762007eda620096b7565b60200260200101819052505b85606001511562007f565760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d65730000000000000000000000006020820152828262007f328162009808565b935060ff168151811062007f4a5762007f4a620096b7565b60200260200101819052505b60008160ff1667ffffffffffffffff81111562007f775762007f776200911d565b60405190808252806020026020018201604052801562007fac57816020015b606081526020019060019003908162007f965790505b50905060005b8260ff168160ff1610156200801a57838160ff168151811062007fd95762007fd9620096b7565b6020026020010151828260ff168151811062007ff95762007ff9620096b7565b60200260200101819052508080620080119062009808565b91505062007fb2565b50979650505050505050565b60408051808201909152600080825260208201528151835110156200804d5750816200439d565b81518351602085015160009291620080659162008ffa565b62008071919062008fe4565b6020840151909150600190821462008093575082516020840151819020908220145b8015620080b157835185518690620080ad90839062008fe4565b9052505b50929392505050565b6000808260000151620080e0856000015186602001518660000151876020015162008465565b620080ec919062008ffa565b90505b8351602085015162008102919062008ffa565b8111620079a95781620081158162009f8c565b92505082600001516200815285602001518362008133919062008fe4565b865162008141919062008fe4565b838660000151876020015162008465565b6200815e919062008ffa565b9050620080ef565b60606000620081768484620080ba565b6200818390600162008ffa565b67ffffffffffffffff8111156200819e576200819e6200911d565b604051908082528060200260200182016040528015620081d357816020015b6060815260200190600190039081620081bd5790505b50905060005b81518110156200822957620081f362006523868662007988565b828281518110620082085762008208620096b7565b60200260200101819052508080620082209062009f8c565b915050620081d9565b509392505050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106200827b577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310620082a8576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310620082c757662386f26fc10000830492506010015b6305f5e1008310620082e0576305f5e100830492506008015b6127108310620082f557612710830492506004015b6064831062008308576064830492506002015b600a83106200439d5760010192915050565b60006200832883836200872f565b159392505050565b6000808584116200845b5760208411620083fb5760008415620083865760016200835c86602062008fe4565b6200836990600862009ff0565b620083769060026200a107565b62008382919062008fe4565b1990505b835181168562008397898962008ffa565b620083a3919062008fe4565b805190935082165b818114620083e357878411620083c8578794505050505062005efa565b83620083d4816200a115565b945050828451169050620083ab565b620083ef878562008ffa565b94505050505062005efa565b8383206200840a858862008fe4565b62008416908762008ffa565b91505b8582106200845957848220808203620084435762008438868462008ffa565b935050505062005efa565b6200845060018462008fe4565b92505062008419565b505b5092949350505050565b60008381868511620085925760208511620085375760008515620084bc5760016200849287602062008fe4565b6200849f90600862009ff0565b620084ac9060026200a107565b620084b8919062008fe4565b1990505b84518116600087620084cf8b8b62008ffa565b620084db919062008fe4565b855190915083165b82811462008528578186106200850d57620084ff8b8b62008ffa565b965050505050505062005efa565b85620085198162009f8c565b965050838651169050620084e3565b85965050505050505062005efa565b508383206000905b6200854b868962008fe4565b821162008590578583208082036200856a578394505050505062005efa565b6200857760018562008ffa565b9350508180620085879062009f8c565b9250506200853f565b505b6200859e878762008ffa565b979650505050505050565b60408051808201909152600080825260208201526000620085dd856000015186602001518660000151876020015162008465565b602080870180519186019190915251909150620085fb908262008fe4565b83528451602086015162008610919062008ffa565b810362008621576000855262008659565b8351835162008631919062008ffa565b855186906200864290839062008fe4565b905250835162008653908262008ffa565b60208601525b50909392505050565b60208110620086a257815183526200867c60208462008ffa565b92506200868b60208362008ffa565b91506200869a60208262008fe4565b905062008662565b6000198115620086d8576001620086bb83602062008fe4565b620086c9906101006200a107565b620086d5919062008fe4565b90505b9151835183169219169190911790915250565b60606000620086fb8484620048a3565b805160208083015160405193945062008717939091016200a12f565b60405160208183030381529060405291505092915050565b815181516000919081111562008743575081515b6020808501519084015160005b83811015620088125782518251808214620087db576000196020871015620087b8576001846200878289602062008fe4565b6200878e919062008ffa565b6200879b90600862009ff0565b620087a89060026200a107565b620087b4919062008fe4565b1990505b8181168382168181039114620087d85797506200439d9650505050505050565b50505b620087e860208662008ffa565b9450620087f760208562008ffa565b935050506020816200880a919062008ffa565b905062008750565b508451865162004f9891906200a18b565b610b67806200a1af83390190565b6104e4806200ad1683390190565b611069806200b1fa83390190565b6119fe806200c26383390190565b6040518060e00160405280606081526020016060815260200160608152602001600015158152602001600015158152602001600015158152602001620088a0620088a5565b905290565b60405180610100016040528060001515815260200160001515815260200160608152602001600080191681526020016060815260200160608152602001600015158152602001620088a06040518060800160405280600081526020016000815260200160008152602001600081525090565b6020808252825182820181905260009190848201906040850190845b818110156200895a5783516001600160a01b03168352928401929184019160010162008933565b50909695505050505050565b60005b838110156200898357818101518382015260200162008969565b50506000910152565b60008151808452620089a681602086016020860162008966565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b8581101562008aac577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b8181101562008a95577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089850301835262008a828486516200898c565b948e01949350918d019160010162008a45565b505050978a019794505091880191600101620089e1565b50919a9950505050505050505050565b600081518084526020808501945080840160005b8381101562008b105781517fffffffff00000000000000000000000000000000000000000000000000000000168752958201959082019060010162008ad0565b509495945050505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101562008bb6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08984030185528151805187855262008b87888601826200898c565b91890151858303868b015291905062008ba1818362008abc565b96890196945050509086019060010162008b42565b509098975050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562008c3b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088860301845262008c288583516200898c565b9450928501929085019060010162008beb565b5092979650505050505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101562008bb6578883037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0018552815180516001600160a01b0316845287015187840187905262008cc58785018262008abc565b958801959350509086019060010162008c6f565b6020815260006200439d60208301600581527f68656c6c6f000000000000000000000000000000000000000000000000000000602082015260400190565b600081516060845262008d2e60608501826200898c565b90506001600160a01b036020840151166020850152604083015160408501528091505092915050565b60a08152600062008d6c60a083018862008d17565b6001600160a01b0387811660208501526040840187905285166060840152828103608084015262008d9e81856200898c565b98975050505050505050565b60006020828403121562008dbd57600080fd5b81516001600160a01b03811681146200449e57600080fd5b6101008082526005908201527f544f4b454e0000000000000000000000000000000000000000000000000000006101208201526101406020820181905260039082018190527f544b4e000000000000000000000000000000000000000000000000000000000061016083015260ff8816604083015260608201879052610180820190861062008e8d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a083015262008eaf60c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b60006020828403121562008edc57600080fd5b815180151581146200449e57600080fd5b60808152600062008f02608083018762008d17565b8560208401526001600160a01b038516604084015282810360608401526200859e81856200898c565b60006020828403121562008f3e57600080fd5b5051919050565b60a08152600062008f5a60a08301876200898c565b6001600160a01b038681166020850152604084018690528416606084015282810360808401526200859e81600581527f68656c6c6f000000000000000000000000000000000000000000000000000000602082015260400190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156200439d576200439d62008fb5565b808201808211156200439d576200439d62008fb5565b600181811c908216806200902557607f821691505b60208210810362006817577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6001600160a01b038316815260406020820152600062005efa60408301846200898c565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351620090bd81601a85016020880162008966565b7f3a20000000000000000000000000000000000000000000000000000000000000601a918401918201528351620090fc81601c84016020880162008966565b01601c01949350505050565b6020815260006200449e60208301846200898c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156200917257620091726200911d565b60405290565b600067ffffffffffffffff808411156200919657620091966200911d565b604051601f8501601f19908116603f01168101908282118183101715620091c157620091c16200911d565b81604052809350858152868686011115620091db57600080fd5b620091eb86602083018762008966565b5050509392505050565b600082601f8301126200920757600080fd5b6200449e8383516020850162009178565b6000602082840312156200922b57600080fd5b815167ffffffffffffffff8111156200924357600080fd5b6200439984828501620091f5565b600083516200926581846020880162008966565b8351908301906200927b81836020880162008966565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351620092be81601a85016020880162008966565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a918401918201528351620092fd81603384016020880162008966565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f555400000000000000000000000000000000000000000060608201526080602082015260006200449e60808301846200898c565b6000602082840312156200938f57600080fd5b815167ffffffffffffffff811115620093a757600080fd5b8201601f81018413620093b957600080fd5b620043998482516020840162009178565b60008551620093de818460208a0162008966565b80830190507f2f0000000000000000000000000000000000000000000000000000000000000080825286516200941c816001850160208b0162008966565b6001920191820181905285516200943b816002850160208a0162008966565b600292019182015283516200945881600384016020880162008966565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600392909101918201526008019695505050505050565b604081526000620094a560408301846200898c565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e20617274696661637420008152600082516200951e81601f85016020870162008966565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b6040815260006200958d60408301846200898c565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b604081526000620095e160408301846200898c565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b270000000000000000000000008152600082516200965a81601485016020870162008966565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b604081526000620096a360408301856200898c565b82810360208401526200449a81856200898c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007f220000000000000000000000000000000000000000000000000000000000000080835283516200972181600186016020880162008966565b600193019283015250600201919050565b600082516200974681846020870162008966565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e747261637420000000000000000000000000000000000000000000604082015260008251620097fb81604b85016020870162008966565b91909101604b0192915050565b600060ff821660ff810362009821576200982162008fb5565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c694000000000000000000000000000000000000000000000006020820152600082516200988a81602985016020870162008966565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f504154480000000000000000000060608201526080602082015260006200449e60808301846200898c565b600060208284031215620098f357600080fd5b815167ffffffffffffffff808211156200990c57600080fd5b90830190606082860312156200992157600080fd5b6200992b6200914c565b82518060030b81146200993d57600080fd5b81526020830151828111156200995257600080fd5b6200996087828601620091f5565b6020830152506040830151828111156200997957600080fd5b6200998787828601620091f5565b60408301525095945050505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f2200000000000000000000000000000000000000000000000000000000000000602082015260008251620099f681602185016020870162008966565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f270000000000000000000000000000000000000000000000000000000000000060208201526000835162009be481602185016020880162008966565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835162009c2381602e84016020880162008966565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a2000000000000000000000000000000000000000000000006020820152600082516200988a81602985016020870162008966565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a00000000000000000000000000000000000000000000000000000000000060208201526000825162009cef81602285016020870162008966565b9190910160220192915050565b7f436f6e7472616374206e616d652000000000000000000000000000000000000081526000825162009d3681600e85016020870162008966565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e74696669657220000000000000000081526000835162009e1681601885016020880162008966565b7f20696e2000000000000000000000000000000000000000000000000000000000601891840191820152835162009e5581601c84016020880162008966565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825162009f5d81846020870162008966565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b6000600019820362009fa25762009fa262008fb5565b5060010190565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825162009fe381601c85016020870162008966565b91909101601c0192915050565b80820281158282048414176200439d576200439d62008fb5565b600181815b808511156200a04b5781600019048211156200a02f576200a02f62008fb5565b808516156200a03d57918102915b93841c93908002906200a00f565b509250929050565b6000826200a064575060016200439d565b816200a073575060006200439d565b81600181146200a08c57600281146200a097576200a0b7565b60019150506200439d565b60ff8411156200a0ab576200a0ab62008fb5565b50506001821b6200439d565b5060208310610133831016604e8410600b84101617156200a0dc575081810a6200439d565b6200a0e883836200a00a565b80600019048211156200a0ff576200a0ff62008fb5565b029392505050565b60006200449e83836200a053565b6000816200a127576200a12762008fb5565b506000190190565b600083516200a14381846020880162008966565b7f3a0000000000000000000000000000000000000000000000000000000000000090830190815283516200a17f81600184016020880162008966565b01600101949350505050565b8181036000831280158383131683831282161715620079a957620079a962008fb556fe60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d3565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57600081815260208120601f850160051c810160208610156100ec5750805b601f850160051c820191505b8181101561010b578281556001016100f8565b5050505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b602080601f831160018114610176576000841561015e5750858301515b600019600386901b1c1916600185901b17855561010b565b600085815260208120601f198616915b828110156101a557888601518255948401946001909101908401610186565b50858210156101c35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610985806101e26000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610840565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d3366004610859565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610874565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d6565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108e9565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108e9565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093c565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093c565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d6565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093c565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108e9565b600061073e3384846103bd565b9392505050565b600060208083528351808285015260005b8181101561077257858101830151858201604001528201610756565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b9150604084013590509250925092565b60006020828403121561085257600080fd5b5035919050565b60006020828403121561086b57600080fd5b61073e826107b1565b6000806040838503121561088757600080fd5b610890836107b1565b915061089e602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a7565b600181811c908216806108fd57607f821691505b602082108103610936577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a756fea26469706673582212201fc127b73c19f2c1775b48f5275858b6ddd49d93989841a848b1a4ececbdafd664736f6c63430008150033608060405234801561001057600080fd5b506104c4806100206000396000f3fe60806040526004361061002a5760003560e01c806369582bee14610033578063de43156e1461005357005b3661003157005b005b34801561003f57600080fd5b5061003161004e3660046101ba565b610073565b34801561005f57600080fd5b5061003161006e3660046101ba565b6100ee565b6060811561008a576100878284018461026e565b90505b7ffdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e999486100b5878061033d565b6100c560408a0160208b016103a2565b896040013533866040516100de969594939291906103c4565b60405180910390a1505050505050565b60608115610105576101028284018461026e565b90505b7fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e6100b5878061033d565b60006060828403121561014257600080fd5b50919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461016c57600080fd5b919050565b60008083601f84011261018357600080fd5b50813567ffffffffffffffff81111561019b57600080fd5b6020830191508360208285010111156101b357600080fd5b9250929050565b6000806000806000608086880312156101d257600080fd5b853567ffffffffffffffff808211156101ea57600080fd5b6101f689838a01610130565b965061020460208901610148565b955060408801359450606088013591508082111561022157600080fd5b5061022e88828901610171565b969995985093965092949392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561028057600080fd5b813567ffffffffffffffff8082111561029857600080fd5b818401915084601f8301126102ac57600080fd5b8135818111156102be576102be61023f565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156103045761030461023f565b8160405282815287602084870101111561031d57600080fd5b826020860160208301376000928101602001929092525095945050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261037257600080fd5b83018035915067ffffffffffffffff82111561038d57600080fd5b6020019150368190038213156101b357600080fd5b6000602082840312156103b457600080fd5b6103bd82610148565b9392505050565b60a081528560a0820152858760c0830137600060c0878301015260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe080601f8901168301602073ffffffffffffffffffffffffffffffffffffffff808a168287015288604087015280881660608701525060c085830301608086015285518060c084015260005b818110156104685787810183015184820160e00152820161044c565b50600060e0828501015260e084601f83011684010194505050505097965050505050505056fea264697066735822122078d900ecbf3fff2425499bb2eafdc9d45545dc5fea40a7cdc33694659008318c64736f6c6343000815003360c060405234801561001057600080fd5b5060405161106938038061106983398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f1f61014a60003960006101e50152600081816102b9015261045b0152610f1f6000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d4d565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d90565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610dfb565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff80821115610cb457600080fd5b908801906060828b031215610cc857600080fd5b819750610cd760208a01610bea565b965060408901359550610cec60608a01610bea565b94506080890135915080821115610d0257600080fd5b818901915089601f830112610d1657600080fd5b813581811115610d2557600080fd5b8a6020828501011115610d3757600080fd5b6020830194508093505050509295509295509295565b600080600060608486031215610d6257600080fd5b610d6b84610bea565b9250610d7960208501610bea565b9150610d8760408501610bea565b90509250925092565b600060208284031215610da257600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3357600080fd5b870160208101903567ffffffffffffffff811115610e5057600080fd5b803603821315610e5f57600080fd5b60606080850152610e7460e085018284610db2565b91505073ffffffffffffffffffffffffffffffffffffffff610e9860208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610edd818587610db2565b9897505050505050505056fea264697066735822122038e4bf7dcb062e1e18216d9535ed07d4a620437f10b3da9f85a81c208884ef7264736f6c6343000815003360c06040523480156200001157600080fd5b50604051620019fe380380620019fe8339810160408190526200003491620001fa565b3373735b14bb79463307aacbed86daf3322b1e6226ab146200006957604051632b2add3d60e01b815260040160405180910390fd5b600762000077898262000359565b50600862000086888262000359565b506009805460ff191660ff88161790556080859052836002811115620000b057620000b062000425565b60a0816002811115620000c757620000c762000425565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506200043b9350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013057600080fd5b81516001600160401b03808211156200014d576200014d62000108565b604051601f8301601f19908116603f0116810190828211818310171562000178576200017862000108565b816040528381526020925086838588010111156200019557600080fd5b600091505b83821015620001b957858201830151818301840152908201906200019a565b600093810190920192909252949350505050565b805160038110620001dd57600080fd5b919050565b80516001600160a01b0381168114620001dd57600080fd5b600080600080600080600080610100898b0312156200021857600080fd5b88516001600160401b03808211156200023057600080fd5b6200023e8c838d016200011e565b995060208b01519150808211156200025557600080fd5b50620002648b828c016200011e565b975050604089015160ff811681146200027c57600080fd5b60608a015190965094506200029460808a01620001cd565b935060a08901519250620002ab60c08a01620001e2565b9150620002bb60e08a01620001e2565b90509295985092959890939650565b600181811c90821680620002df57607f821691505b6020821081036200030057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200035457600081815260208120601f850160051c810160208610156200032f5750805b601f850160051c820191505b8181101562000350578281556001016200033b565b5050505b505050565b81516001600160401b0381111562000375576200037562000108565b6200038d81620003868454620002ca565b8462000306565b602080601f831160018114620003c55760008415620003ac5750858301515b600019600386901b1c1916600185901b17855562000350565b600085815260208120601f198616915b82811015620003f657888601518255948401946001909101908401620003d5565b5085821015620004155787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161158f6200046f60003960006102f30152600081816102c4015281816109430152610a49015261158f6000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113b8565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c906113f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610478906113f1565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611473565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d4918690611486565b60405180910390a250600192915050565b60606008805461044c906113f1565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114a8565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ca565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce91906114f9565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad09190611516565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f919061152f565b610b299190611546565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611473565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e89908490611546565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611473565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611473565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e9190611546565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d8908490611546565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff8082111561131057600080fd5b818501915085601f83011261132457600080fd5b813581811115611336576113366112b6565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561137c5761137c6112b6565b8160405282815288602084870101111561139557600080fd5b826020860160208301376000602093820184015298969091013596505050505050565b600080604083850312156113cb57600080fd5b82356113d6816111ad565b915060208301356113e6816111ad565b809150509250929050565b600181811c9082168061140557607f821691505b60208210810361143e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611444565b604081526000611499604083018561112f565b90508260208301529392505050565b6000602082840312156114ba57600080fd5b815180151581146111a657600080fd5b6080815260006114dd608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561150b57600080fd5b81516111a6816111ad565b60006020828403121561152857600080fd5b5051919050565b80820281158282048414176104e0576104e0611444565b808201808211156104e0576104e061144456fea26469706673582212207b3cc2ba67a436eb1551f5330365347b3502d42c3eefdd1c782af1c00e42e23b64736f6c63430008150033a26469706673582212200c9dde9374c2a2b0fe257c9f5269ac399441f9a6b744f3dc30740e502b08c8bb64736f6c63430008150033", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061d73a8061003c6000396000f3fe608060405234801561001057600080fd5b506004361061020b5760003560e01c80637f924c4e1161012a578063c2725318116100bd578063e20c9f711161008c578063f5a3573311610071578063f5a357331461035c578063fa7626d414610364578063fc79171b1461037157600080fd5b8063e20c9f711461034c578063eba3c49c1461035457600080fd5b8063c27253181461032c578063c324827214610334578063cced12c71461033c578063df690b9a1461034457600080fd5b8063aed71d97116100f9578063aed71d97146102fc578063b0464fdc14610304578063b5508aa91461030c578063ba414fa61461031457600080fd5b80637f924c4e146102c257806385226c81146102ca578063916a17c6146102df57806396d9d876146102f457600080fd5b80633a25c460116101a2578063461fc5af11610171578063461fc5af14610295578063597cfeb01461029d57806366d9a9a0146102a5578063720b9aa9146102ba57600080fd5b80633a25c460146102755780633e5e3c231461027d5780633f7286f41461028557806344b2a40b1461028d57600080fd5b80631ed7831c116101de5780631ed7831c146102325780631fe68797146102505780632ade38801461025857806331d099561461026d57600080fd5b806309f080da146102105780630a9254e41461021a578063104b352214610222578063198d5ca41461022a575b600080fd5b610218610379565b005b61021861056d565b610218610fcf565b6102186111c1565b61023a61147b565b60405161024791906183b7565b60405180910390f35b6102186114dd565b610260611a0c565b6040516102479190618453565b610218611b4e565b610218611d0d565b61023a611ec8565b61023a611f28565b610218611f88565b610218612110565b6102186122ce565b6102ad6126a4565b60405161024791906185b9565b610218612826565b610218612a99565b6102d2612cc9565b6040516102479190618657565b6102e7612d99565b60405161024791906186ce565b610218612e94565b610218612fe7565b6102e76132f3565b6102d26133ee565b61031c6134be565b6040519015158152602001610247565b610218613592565b61021861374b565b610218613904565b610218613aef565b61023a613cad565b610218613d0d565b610218613ecb565b601f5461031c9060ff1681565b610218614082565b600060405160200161038a90618765565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f2b2add3d0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561045457600080fd5b505af1158015610468573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156104c557600080fd5b505af11580156104d9573d6000803e3d6000fd5b50506020546021546024546040517f5af659670000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550635af65967945061053793879381169260019291169089906004016187e0565b600060405180830381600087803b15801561055157600080fd5b505af1158015610565573d6000803e3d6000fd5b505050505050565b602580547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602680549091166112341790556040516105b3906182ca565b604051809103906000f0801580156105cf573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169182179055604080518082018252600f81527f476174657761795a45564d2e736f6c00000000000000000000000000000000006020820152905160248101929092526106a89160440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc4d66de8000000000000000000000000000000000000000000000000000000001790526141b9565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b039384168102919091179182905560208054919092049092167fffffffffffffffffffffffff000000000000000000000000000000000000000090921682178155604080517f3ce4a5bc0000000000000000000000000000000000000000000000000000000081529051633ce4a5bc926004808401939192918290030181865afa15801561076a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078e9190618835565b602780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516107d2906182d7565b604051809103906000f0801580156107ee573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161781556027546040517f06447d5600000000000000000000000000000000000000000000000000000000815292166004830152737109709ecfa91a80626ff3989d68f67f5b1dd12d916306447d569101600060405180830381600087803b15801561088a57600080fd5b505af115801561089e573d6000803e3d6000fd5b5050505060008060006040516108b3906182e4565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f0801580156108ef573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316908117909155602054604051601293600193849360009391921690610945906182f1565b6109549695949392919061885e565b604051809103906000f080158015610970573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556023546040517fee2815ba0000000000000000000000000000000000000000000000000000000081526001600482015260248101929092529091169063ee2815ba90604401600060405180830381600087803b158015610a0757600080fd5b505af1158015610a1b573d6000803e3d6000fd5b50506023546040517fa7cb050700000000000000000000000000000000000000000000000000000000815260016004820181905260248201526001600160a01b03909116925063a7cb05079150604401600060405180830381600087803b158015610a8557600080fd5b505af1158015610a99573d6000803e3d6000fd5b50506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152633b9aca006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b158015610b1957600080fd5b505af1158015610b2d573d6000803e3d6000fd5b50505050602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b158015610b8257600080fd5b505af1158015610b96573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610c0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2e9190618953565b506021546025546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116906347e7ef24906044016020604051808303816000875af1158015610c9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc39190618953565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610d2257600080fd5b505af1158015610d36573d6000803e3d6000fd5b50506025546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b158015610dac57600080fd5b505af1158015610dc0573d6000803e3d6000fd5b50506021546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620186a060248201529116925063095ea7b391506044016020604051808303816000875af1158015610e34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e589190618953565b50602260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0600a6040518263ffffffff1660e01b81526004016000604051808303818588803b158015610eaa57600080fd5b505af1158015610ebe573d6000803e3d6000fd5b50506022546020546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152600a60248201529116935063095ea7b3925060440190506020604051808303816000875af1158015610f32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f569190618953565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610fb557600080fd5b505af1158015610fc9573d6000803e3d6000fd5b50505050565b604051600190600090610fe490602001618765565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156110ae57600080fd5b505af11580156110c2573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561111f57600080fd5b505af1158015611133573d6000803e3d6000fd5b50506020546027546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a95935061118a92869289929116908890600401618975565b600060405180830381600087803b1580156111a457600080fd5b505af11580156111b8573d6000803e3d6000fd5b50505050505050565b6021546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa15801561122b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061124f91906189af565b905061125c6000826141d8565b60255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156112b557600080fd5b505af11580156112c9573d6000803e3d6000fd5b5050604051630618f58760e51b81527f2b2add3d000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561133957600080fd5b505af115801561134d573d6000803e3d6000fd5b50506020546021546026546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810188905290821660448201529116925063f45346dc9150606401600060405180830381600087803b1580156113c557600080fd5b505af11580156113d9573d6000803e3d6000fd5b50506021546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611445573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146991906189af565b90506114766000826141d8565b505050565b606060168054806020026020016040519081016040528092919081815260200182805480156114d357602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116114b5575b5050505050905090565b6022546027546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015611547573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156b91906189af565b6022546020546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529293506000929116906370a0823190602401602060405180830381865afa1580156115d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115fa91906189af565b6024546040519192506001600160a01b0316319060009061161d90602001618765565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561170b57600080fd5b505af115801561171f573d6000803e3d6000fd5b5050602080546040517fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e945061177a93506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f19818403018152908290526027546020546117aa936001600160a01b03928316928c9216906189c8565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561180b57600080fd5b505af115801561181f573d6000803e3d6000fd5b50506020546024546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a9593506118769286928c929116908890600401618975565b600060405180830381600087803b15801561189057600080fd5b505af11580156118a4573d6000803e3d6000fd5b50506022546027546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015611910573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061193491906189af565b90506119496119438888618a6a565b826141d8565b6022546020546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009291909116906370a0823190602401602060405180830381865afa1580156119b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d791906189af565b90506119e386826141d8565b611a026119f08987618a7d565b6024546001600160a01b0316316141d8565b5050505050505050565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015611b4557600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015611b2e578382906000526020600020018054611aa190618a90565b80601f0160208091040260200160405190810160405280929190818152602001828054611acd90618a90565b8015611b1a5780601f10611aef57610100808354040283529160200191611b1a565b820191906000526020600020905b815481529060010190602001808311611afd57829003601f168201915b505050505081526020019060010190611a82565b505050508152505081526020019060010190611a30565b50505050905090565b6000604051602001611b5f90618765565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f2b2add3d0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b158015611c2957600080fd5b505af1158015611c3d573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa791506024015b600060405180830381600087803b158015611c9b57600080fd5b505af1158015611caf573d6000803e3d6000fd5b50506020546021546024546040517f309f50040000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063309f5004945061053793879381169260019291169089906004016187e0565b604051600190600090611d2290602001618765565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f2b2add3d0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b158015611dec57600080fd5b505af1158015611e00573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015611e5d57600080fd5b505af1158015611e71573d6000803e3d6000fd5b50506020546024546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506321501a95935061118a92869289929116908890600401618975565b606060188054806020026020016040519081016040528092919081815260200182805480156114d3576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116114b5575050505050905090565b606060178054806020026020016040519081016040528092919081815260200182805480156114d3576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116114b5575050505050905090565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611fe457600080fd5b505af1158015611ff8573d6000803e3d6000fd5b5050604051630618f58760e51b81527f82d5d76a000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801561206857600080fd5b505af115801561207c573d6000803e3d6000fd5b50506020546021546027546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810187905290821660448201529116925063f45346dc91506064015b600060405180830381600087803b1580156120f557600080fd5b505af1158015612109573d6000803e3d6000fd5b5050505050565b600060405160200161212190618765565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f2b2add3d0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b1580156121eb57600080fd5b505af11580156121ff573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561225c57600080fd5b505af1158015612270573d6000803e3d6000fd5b50506020546021546024546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca37945061053793879381169260019291169089906004016187e0565b602154602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009391909116916370a082319101602060405180830381865afa158015612337573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061235b91906189af565b90506123686000826141d8565b600060405160200161237990618765565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561246757600080fd5b505af115801561247b573d6000803e3d6000fd5b5050602080546040517fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e94506124d693506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602754602054612507936001600160a01b039283169260019216906189c8565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561256857600080fd5b505af115801561257c573d6000803e3d6000fd5b50506020546021546024546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca3794506125da93879381169260019291169089906004016187e0565b600060405180830381600087803b1580156125f457600080fd5b505af1158015612608573d6000803e3d6000fd5b5050602154602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009550921692506370a082319101602060405180830381865afa158015612673573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061269791906189af565b9050610fc96001826141d8565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015611b4557838290600052602060002090600202016040518060400160405290816000820180546126fb90618a90565b80601f016020809104026020016040519081016040528092919081815260200182805461272790618a90565b80156127745780601f1061274957610100808354040283529160200191612774565b820191906000526020600020905b81548152906001019060200180831161275757829003601f168201915b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561280e57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116127bb5790505b505050505081525050815260200190600101906126c8565b600060405160200161283790618765565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561292557600080fd5b505af1158015612939573d6000803e3d6000fd5b5050602080546040517fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e945061299493506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f19818403018152908290526027546020546129c5936001600160a01b039283169260019216906189c8565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015b600060405180830381600087803b158015612a2757600080fd5b505af1158015612a3b573d6000803e3d6000fd5b50506020546021546024546040517fbcf7f32b0000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063bcf7f32b945061053793879381169260019291169089906004016187e0565b6021546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260019260009216906370a0823190602401602060405180830381865afa158015612b03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b2791906189af565b9050612b346000826141d8565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612b8d57600080fd5b505af1158015612ba1573d6000803e3d6000fd5b50506020546021546026546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810188905290821660448201529116925063f45346dc9150606401600060405180830381600087803b158015612c1957600080fd5b505af1158015612c2d573d6000803e3d6000fd5b50506021546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009450911691506370a0823190602401602060405180830381865afa158015612c99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cbd91906189af565b905061147683826141d8565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015611b45578382906000526020600020018054612d0c90618a90565b80601f0160208091040260200160405190810160405280929190818152602001828054612d3890618a90565b8015612d855780601f10612d5a57610100808354040283529160200191612d85565b820191906000526020600020905b815481529060010190602001808311612d6857829003601f168201915b505050505081526020019060010190612ced565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015611b455760008481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015612e7c57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411612e295790505b50505050508152505081526020019060010190612dbd565b60275460405163ca669fa760e01b81526001600160a01b039091166004820152600190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612ef057600080fd5b505af1158015612f04573d6000803e3d6000fd5b5050604051630618f58760e51b81527f82d5d76a000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015612f7457600080fd5b505af1158015612f88573d6000803e3d6000fd5b50506020546021546040517ff45346dc0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101869052911660448201819052925063f45346dc91506064016120db565b602154602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009391909116916370a082319101602060405180830381865afa158015613050573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061307491906189af565b90506130816000826141d8565b600060405160200161309290618765565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561318057600080fd5b505af1158015613194573d6000803e3d6000fd5b5050602080546040517ffdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e9994894506131ef93506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602754602054613220936001600160a01b039283169260019216906189c8565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561328157600080fd5b505af1158015613295573d6000803e3d6000fd5b50506020546021546024546040517f5af659670000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550635af6596794506125da93879381169260019291169089906004016187e0565b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015611b455760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156133d657602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116133835790505b50505050508152505081526020019060010190613317565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015611b4557838290600052602060002001805461343190618a90565b80601f016020809104026020016040519081016040528092919081815260200182805461345d90618a90565b80156134aa5780601f1061347f576101008083540402835291602001916134aa565b820191906000526020600020905b81548152906001019060200180831161348d57829003601f168201915b505050505081526020019060010190613412565b60085460009060ff16156134d6575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015613567573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061358b91906189af565b1415905090565b60006040516020016135a390618765565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561366d57600080fd5b505af1158015613681573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156136de57600080fd5b505af11580156136f2573d6000803e3d6000fd5b50506020546021546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063c39aca3793506105379286921690600190869089906004016187e0565b600060405160200161375c90618765565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561382657600080fd5b505af115801561383a573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561389757600080fd5b505af11580156138ab573d6000803e3d6000fd5b50506020546021546040517f5af659670000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635af6596793506105379286921690600190869089906004016187e0565b600060405160200161391590618765565b60408051601f19818403018152606080840190925260205490911b6bffffffffffffffffffffffff191660808301529150600090806094810160408051808303601f190181529181529082526027546001600160a01b03908116602084015260019282018390526024805492517f81bad6f300000000000000000000000000000000000000000000000000000000815260048101859052908101849052604481018490526064810193909352166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015613a0357600080fd5b505af1158015613a17573d6000803e3d6000fd5b5050602080546040517ffdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e999489450613a7293506001600160a01b03909116910160609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f1981840301815290829052602754602054613aa3936001600160a01b039283169260019216906189c8565b60405180910390a160275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401611c81565b6000604051602001613b0090618765565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b158015613bca57600080fd5b505af1158015613bde573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015613c3b57600080fd5b505af1158015613c4f573d6000803e3d6000fd5b50506020546021546027546040517fc39aca370000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063c39aca37945061053793879381169260019291169089906004016187e0565b606060158054806020026020016040519081016040528092919081815260200182805480156114d3576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116114b5575050505050905090565b6000604051602001613d1e90618765565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b158015613de857600080fd5b505af1158015613dfc573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015613e5957600080fd5b505af1158015613e6d573d6000803e3d6000fd5b50506020546021546027546040517f5af659670000000000000000000000000000000000000000000000000000000081526001600160a01b039384169550635af65967945061053793879381169260019291169089906004016187e0565b604051600190600090613ee090602001618765565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f82d5d76a0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b158015613faa57600080fd5b505af1158015613fbe573d6000803e3d6000fd5b505060275460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801561401b57600080fd5b505af115801561402f573d6000803e3d6000fd5b50506020546040517f21501a950000000000000000000000000000000000000000000000000000000081526001600160a01b0390911692506321501a95915061118a908490879085908890600401618975565b600060405160200161409390618765565b60408051601f19818403018152606080840183526020805490911b6bffffffffffffffffffffffff191660808501528251808503607401815260948501845284526027546001600160a01b0316908401526001838301528151630618f58760e51b81527f2b2add3d0000000000000000000000000000000000000000000000000000000060048201529151909350737109709ecfa91a80626ff3989d68f67f5b1dd12d9163c31eb0e091602480830192600092919082900301818387803b15801561415d57600080fd5b505af1158015614171573d6000803e3d6000fd5b505060255460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401612a0d565b60006141c36182fe565b6141ce848483614257565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b15801561424357600080fd5b505afa158015610565573d6000803e3d6000fd5b60008061426485846142d2565b90506142c76040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f787900000081525082866040516020016142b2929190618add565b604051602081830303815290604052856142de565b9150505b9392505050565b60006142cb838361430c565b60c08101515160009015614302576142fb84848460c00151614327565b90506142cb565b6142fb84846144cd565b600061431883836145b8565b6142cb838360200151846142de565b6000806143326145c8565b90506000614340868361469b565b905060006143578260600151836020015185614b41565b9050600061436783838989614d53565b9050600061437482615bd0565b602081015181519192509060030b156143e75789826040015160405160200161439e929190618aff565b60408051601f19818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526143de91600401618b80565b60405180910390fd5b600061442a6040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001615d9f565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d9061447d908490600401618b80565b602060405180830381865afa15801561449a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144be9190618835565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590614522908790600401618b80565b600060405180830381865afa15801561453f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526145679190810190618c7b565b905060006145958285604051602001614581929190618cb0565b604051602081830303815290604052615f9f565b90506001600160a01b0381166141ce57848460405160200161439e929190618cdf565b6145c482826000615fb2565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c9061464f908490600401618d8a565b600060405180830381865afa15801561466c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526146949190810190618dd1565b9250505090565b6146cd6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d90506147186040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b614721856160b5565b602082015260006147318661649a565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015614773573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261479b9190810190618dd1565b868385602001516040516020016147b59493929190618e1a565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb119061480d908590600401618b80565b600060405180830381865afa15801561482a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526148529190810190618dd1565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f69061489a908490600401618f1e565b602060405180830381865afa1580156148b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148db9190618953565b6148f0578160405160200161439e9190618f70565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890614935908490600401619002565b600060405180830381865afa158015614952573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261497a9190810190618dd1565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f6906149c1908490600401619054565b602060405180830381865afa1580156149de573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a029190618953565b15614a97576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890614a4c908490600401619054565b600060405180830381865afa158015614a69573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614a919190810190618dd1565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001614abc91906190a6565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401614ae8929190619112565b600060405180830381865afa158015614b05573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614b2d9190810190618dd1565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b6060815260200190600190039081614b5d5790505090506040518060400160405280600481526020017f677265700000000000000000000000000000000000000000000000000000000081525081600081518110614bbd57614bbd619137565b60200260200101819052506040518060400160405280600381526020017f2d726c000000000000000000000000000000000000000000000000000000000081525081600181518110614c1157614c11619137565b602002602001018190525084604051602001614c2d9190619166565b60405160208183030381529060405281600281518110614c4f57614c4f619137565b602002602001018190525082604051602001614c6b91906191d2565b60405160208183030381529060405281600381518110614c8d57614c8d619137565b60200260200101819052506000614ca382615bd0565b602080820151604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000008185019081528251808401845260008082529086015282518084019093529051825292810192909252919250614d34906040805180820182526000808252602091820152815180830190925284518252808501908201529061671d565b614d49578560405160200161439e9190619213565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d9015614da3565b511590565b614f1757826020015115614e5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a4016143de565b8260c0015115614f17576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a4016143de565b6040805160ff8082526120008201909252600091816020015b6060815260200190600190039081614f3057905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280614f8b906192a4565b935060ff1681518110614fa057614fa0619137565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e3700000000000000000000000000000000000000815250604051602001614ff191906192c3565b60405160208183030381529060405282828061500c906192a4565b935060ff168151811061502157615021619137565b60200260200101819052506040518060400160405280600681526020017f6465706c6f79000000000000000000000000000000000000000000000000000081525082828061506e906192a4565b935060ff168151811061508357615083619137565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d650000000000000000000000000000000000008152508282806150d0906192a4565b935060ff16815181106150e5576150e5619137565b60200260200101819052508760200151828280615101906192a4565b935060ff168151811061511657615116619137565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e747261637450617468000000000000000000000000000000000000815250828280615163906192a4565b935060ff168151811061517857615178619137565b602090810291909101015287518282615190816192a4565b935060ff16815181106151a5576151a5619137565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e496400000000000000000000000000000000000000000000008152508282806151f2906192a4565b935060ff168151811061520757615207619137565b602002602001018190525061521b4661677e565b8282615226816192a4565b935060ff168151811061523b5761523b619137565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c650000000000000000000000000000000000815250828280615288906192a4565b935060ff168151811061529d5761529d619137565b6020026020010181905250868282806152b5906192a4565b935060ff16815181106152ca576152ca619137565b60209081029190910101528551156153f15760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f646500000000000000000000006020820152828261531b816192a4565b935060ff168151811061533057615330619137565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d90615380908990600401618b80565b600060405180830381865afa15801561539d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526153c59190810190618dd1565b82826153d0816192a4565b935060ff16815181106153e5576153e5619137565b60200260200101819052505b8460200151156154c15760408051808201909152601281527f2d2d766572696679536f75726365436f646500000000000000000000000000006020820152828261543a816192a4565b935060ff168151811061544f5761544f619137565b60200260200101819052506040518060400160405280600581526020017f66616c736500000000000000000000000000000000000000000000000000000081525082828061549c906192a4565b935060ff16815181106154b1576154b1619137565b6020026020010181905250615688565b6154f9614d9e8660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b61558c5760408051808201909152600d81527f2d2d6c6963656e736554797065000000000000000000000000000000000000006020820152828261553c816192a4565b935060ff168151811061555157615551619137565b60200260200101819052508460a001516040516020016155719190619166565b60405160208183030381529060405282828061549c906192a4565b8460c001511580156155cf5750604080890151815180830183526000808252602091820152825180840190935281518352908101908201526155cd90511590565b155b156156885760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282615613816192a4565b935060ff168151811061562857615628619137565b602002602001018190525061563c8861681e565b60405160200161564c9190619166565b604051602081830303815290604052828280615667906192a4565b935060ff168151811061567c5761567c619137565b60200260200101819052505b604080860151815180830183526000808252602091820152825180840190935281518352908101908201526156bc90511590565b6157515760408051808201909152600b81527f2d2d72656c617965724964000000000000000000000000000000000000000000602082015282826156ff816192a4565b935060ff168151811061571457615714619137565b60200260200101819052508460400151828280615730906192a4565b935060ff168151811061574557615745619137565b60200260200101819052505b6060850151156158725760408051808201909152600681527f2d2d73616c7400000000000000000000000000000000000000000000000000006020820152828261579a816192a4565b935060ff16815181106157af576157af619137565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa15801561581e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526158469190810190618dd1565b8282615851816192a4565b935060ff168151811061586657615866619137565b60200260200101819052505b60e085015151156159195760408051808201909152600a81527f2d2d6761734c696d697400000000000000000000000000000000000000000000602082015282826158bc816192a4565b935060ff16815181106158d1576158d1619137565b60200260200101819052506158ed8560e001516000015161677e565b82826158f8816192a4565b935060ff168151811061590d5761590d619137565b60200260200101819052505b60e085015160200151156159c35760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282615966816192a4565b935060ff168151811061597b5761597b619137565b60200260200101819052506159978560e001516020015161677e565b82826159a2816192a4565b935060ff16815181106159b7576159b7619137565b60200260200101819052505b60e08501516040015115615a6d5760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282615a10816192a4565b935060ff1681518110615a2557615a25619137565b6020026020010181905250615a418560e001516040015161677e565b8282615a4c816192a4565b935060ff1681518110615a6157615a61619137565b60200260200101819052505b60e08501516060015115615b175760408051808201909152601681527f2d2d6d61785072696f726974794665655065724761730000000000000000000060208201528282615aba816192a4565b935060ff1681518110615acf57615acf619137565b6020026020010181905250615aeb8560e001516060015161677e565b8282615af6816192a4565b935060ff1681518110615b0b57615b0b619137565b60200260200101819052505b60008160ff1667ffffffffffffffff811115615b3557615b35618b93565b604051908082528060200260200182016040528015615b6857816020015b6060815260200190600190039081615b535790505b50905060005b8260ff168160ff161015615bc157838160ff1681518110615b9157615b91619137565b6020026020010151828260ff1681518110615bae57615bae619137565b6020908102919091010152600101615b6e565b5093505050505b949350505050565b615bf76040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c91615c7d9186910161932e565b600060405180830381865afa158015615c9a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615cc29190810190618dd1565b90506000615cd0868361730d565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b8152600401615d009190618657565b6000604051808303816000875af1158015615d1f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615d479190810190619375565b805190915060030b15801590615d605750602081015151155b8015615d6f5750604081015151155b15614d495781600081518110615d8757615d87619137565b602002602001015160405160200161439e919061942b565b60606000615dd48560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528651825280870190820152909150615e0b9082905b90617462565b15615f68576000615e8882615e8284615e7c615e4e8a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90617489565b906174eb565b604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615eec908290617462565b15615f5657604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615f53905b8290617570565b90505b615f5f81617596565b925050506142cb565b8215615f8157848460405160200161439e929190619617565b50506040805160208101909152600081526142cb565b509392505050565b6000808251602084016000f09392505050565b8160a0015115615fc157505050565b6000615fce8484846175ff565b90506000615fdb82615bd0565b602081015181519192509060030b1580156160775750604080518082018252600781527f53554343455353000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261607790604080518082018252600080825260209182015281518083019092528451825280850190820152615e05565b1561608457505050505050565b604082015151156160a457816040015160405160200161439e91906196be565b8060405160200161439e919061971c565b606060006160ea8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061614f905b829061671d565b156161be57604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526142cb906161b9908390617b9a565b617596565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616220905b8290617c24565b6001036162ed57604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261628690615f4c565b50604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526142cb906161b9905b8390617570565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261634c90616148565b1561648357604080518082018252600181527f2f000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201819052845180860190955292518452830152906163b4908390617cbe565b9050600081600183516163c79190618a6a565b815181106163d7576163d7619137565b6020026020010151905061647a6161b961644d6040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252855182528086019082015290617b9a565b95945050505050565b8260405160200161439e9190619787565b50919050565b606060006164cf8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915061653190616148565b1561653f576142cb81617596565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261659e90616219565b60010361660857604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526142cb906161b9906162e6565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261666790616148565b1561648357604080518082018252600181527f2f000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201819052845180860190955292518452830152906166cf908390617cbe565b905060018151111561670b5780600282516166ea9190618a6a565b815181106166fa576166fa619137565b602002602001015192505050919050565b508260405160200161439e9190619787565b805182516000911115616732575060006141d2565b8151835160208501516000929161674891618a7d565b6167529190618a6a565b9050826020015181036167695760019150506141d2565b82516020840151819020912014905092915050565b6060600061678b83617d63565b600101905060008167ffffffffffffffff8111156167ab576167ab618b93565b6040519080825280601f01601f1916602001820160405280156167d5576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85049450846167df57509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e53454400000000000000000000000000000000000000000000818401908152855180870187528381528401929092528451808601909552518452908301526060916168aa905b8290617e45565b156168ea57505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616949906168a3565b1561698957505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d49540000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526169e8906168a3565b15616a2857505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616a87906168a3565b80616aec5750604080518082018252601081527f47504c2d322e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616aec906168a3565b15616b2c57505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616b8b906168a3565b80616bf05750604080518082018252601081527f47504c2d332e302d6f722d6c617465720000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616bf0906168a3565b15616c3057505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616c8f906168a3565b80616cf45750604080518082018252601181527f4c47504c2d322e312d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616cf4906168a3565b15616d3457505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616d93906168a3565b80616df85750604080518082018252601181527f4c47504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616df8906168a3565b15616e3857505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616e97906168a3565b15616ed757505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616f36906168a3565b15616f7657505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152616fd5906168a3565b1561701557505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617074906168a3565b156170b457505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e300000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617113906168a3565b1561715357505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c7900000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526171b2906168a3565b806172175750604080518082018252601181527f4147504c2d332e302d6f722d6c6174657200000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152617217906168a3565b1561725757505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e31000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526172b6906168a3565b156172f657505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b6040808401518451915161439e9290602001619865565b60608060005b8451811015617398578185828151811061732f5761732f619137565b6020026020010151604051602001617348929190618cb0565b6040516020818303038152906040529150600185516173679190618a6a565b8114617390578160405160200161737e91906199ce565b60405160208183030381529060405291505b600101617313565b5060408051600380825260808201909252600091816020015b60608152602001906001900390816173b157905050905083816000815181106173dc576173dc619137565b60200260200101819052506040518060400160405280600281526020017f2d630000000000000000000000000000000000000000000000000000000000008152508160018151811061743057617430619137565b6020026020010181905250818160028151811061744f5761744f619137565b6020908102919091010152949350505050565b60208083015183518351928401516000936174809291849190617e59565b14159392505050565b604080518082019091526000808252602082015260006174bb8460000151856020015185600001518660200151617f6a565b90508360200151816174cd9190618a6a565b845185906174dc908390618a6a565b90525060208401525090919050565b60408051808201909152600080825260208201528151835110156175105750816141d2565b60208083015190840151600191146175375750815160208481015190840151829020919020145b80156175685782518451859061754e908390618a6a565b9052508251602085018051617564908390618a7d565b9052505b509192915050565b604080518082019091526000808252602082015261758f83838361808a565b5092915050565b60606000826000015167ffffffffffffffff8111156175b7576175b7618b93565b6040519080825280601f01601f1916602001820160405280156175e1576020820181803683370190505b509050600060208201905061758f8185602001518660000151618135565b6060600061760b6145c8565b6040805160ff808252612000820190925291925060009190816020015b606081526020019060019003908161762857905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280617683906192a4565b935060ff168151811061769857617698619137565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e33000000000000000000000000000000000000000000000000008152506040516020016176e99190619a0f565b604051602081830303815290604052828280617704906192a4565b935060ff168151811061771957617719619137565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280617766906192a4565b935060ff168151811061777b5761777b619137565b60200260200101819052508260405160200161779791906191d2565b6040516020818303038152906040528282806177b2906192a4565b935060ff16815181106177c7576177c7619137565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280617814906192a4565b935060ff168151811061782957617829619137565b602002602001018190525061783e87846181af565b8282617849816192a4565b935060ff168151811061785e5761785e619137565b60209081029190910101528551511561790a5760408051808201909152600b81527f2d2d7265666572656e6365000000000000000000000000000000000000000000602082015282826178b0816192a4565b935060ff16815181106178c5576178c5619137565b60200260200101819052506178de8660000151846181af565b82826178e9816192a4565b935060ff16815181106178fe576178fe619137565b60200260200101819052505b8560800151156179785760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282617953816192a4565b935060ff168151811061796857617968619137565b60200260200101819052506179de565b84156179de5760408051808201909152601281527f2d2d726571756972655265666572656e63650000000000000000000000000000602082015282826179bd816192a4565b935060ff16815181106179d2576179d2619137565b60200260200101819052505b60408601515115617a7a5760408051808201909152600d81527f2d2d756e73616665416c6c6f770000000000000000000000000000000000000060208201528282617a28816192a4565b935060ff1681518110617a3d57617a3d619137565b60200260200101819052508560400151828280617a59906192a4565b935060ff1681518110617a6e57617a6e619137565b60200260200101819052505b856060015115617ae45760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282617ac3816192a4565b935060ff1681518110617ad857617ad8619137565b60200260200101819052505b60008160ff1667ffffffffffffffff811115617b0257617b02618b93565b604051908082528060200260200182016040528015617b3557816020015b6060815260200190600190039081617b205790505b50905060005b8260ff168160ff161015617b8e57838160ff1681518110617b5e57617b5e619137565b6020026020010151828260ff1681518110617b7b57617b7b619137565b6020908102919091010152600101617b3b565b50979650505050505050565b6040805180820190915260008082526020820152815183511015617bbf5750816141d2565b81518351602085015160009291617bd591618a7d565b617bdf9190618a6a565b60208401519091506001908214617c00575082516020840151819020908220145b8015617c1b57835185518690617c17908390618a6a565b9052505b50929392505050565b6000808260000151617c488560000151866020015186600001518760200151617f6a565b617c529190618a7d565b90505b83516020850151617c669190618a7d565b811161758f5781617c7681619a54565b9250508260000151617cad856020015183617c919190618a6a565b8651617c9d9190618a6a565b8386600001518760200151617f6a565b617cb79190618a7d565b9050617c55565b60606000617ccc8484617c24565b617cd7906001618a7d565b67ffffffffffffffff811115617cef57617cef618b93565b604051908082528060200260200182016040528015617d2257816020015b6060815260200190600190039081617d0d5790505b50905060005b8151811015615f9757617d3e6161b98686617570565b828281518110617d5057617d50619137565b6020908102919091010152600101617d28565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310617dac577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310617dd8576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310617df657662386f26fc10000830492506010015b6305f5e1008310617e0e576305f5e100830492506008015b6127108310617e2257612710830492506004015b60648310617e34576064830492506002015b600a83106141d25760010192915050565b6000617e5183836181ef565b159392505050565b600080858411617f605760208411617f0c5760008415617ea4576001617e80866020618a6a565b617e8b906008619a6e565b617e96906002619b6c565b617ea09190618a6a565b1990505b8351811685617eb38989618a7d565b617ebd9190618a6a565b805190935082165b818114617ef757878411617edf5787945050505050615bc8565b83617ee981619b78565b945050828451169050617ec5565b617f018785618a7d565b945050505050615bc8565b838320617f198588618a6a565b617f239087618a7d565b91505b858210617f5e57848220808203617f4b57617f418684618a7d565b9350505050615bc8565b617f56600184618a6a565b925050617f26565b505b5092949350505050565b6000838186851161807557602085116180245760008515617fb6576001617f92876020618a6a565b617f9d906008619a6e565b617fa8906002619b6c565b617fb29190618a6a565b1990505b84518116600087617fc78b8b618a7d565b617fd19190618a6a565b855190915083165b82811461801657818610617ffe57617ff18b8b618a7d565b9650505050505050615bc8565b8561800881619a54565b965050838651169050617fd9565b859650505050505050615bc8565b508383206000905b6180368689618a6a565b8211618073578583208082036180525783945050505050615bc8565b61805d600185618a7d565b935050818061806b90619a54565b92505061802c565b505b61807f8787618a7d565b979650505050505050565b604080518082019091526000808252602082015260006180bc8560000151866020015186600001518760200151617f6a565b6020808701805191860191909152519091506180d89082618a6a565b8352845160208601516180eb9190618a7d565b81036180fa576000855261812c565b835183516181089190618a7d565b85518690618117908390618a6a565b90525083516181269082618a7d565b60208601525b50909392505050565b6020811061816d578151835261814c602084618a7d565b9250618159602083618a7d565b9150618166602082618a6a565b9050618135565b600019811561819c576001618183836020618a6a565b61818f90610100619b6c565b6181999190618a6a565b90505b9151835183169219169190911790915250565b606060006181bd848461469b565b80516020808301516040519394506181d793909101619b8f565b60405160208183030381529060405291505092915050565b8151815160009190811115618202575081515b6020808501519084015160005b838110156182bb578251825180821461828b57600019602087101561826a5760018461823c896020618a6a565b6182469190618a7d565b618251906008619a6e565b61825c906002619b6c565b6182669190618a6a565b1990505b81811683821681810391146182885797506141d29650505050505050565b50505b618296602086618a7d565b94506182a3602085618a7d565b935050506020816182b49190618a7d565b905061820f565b5084518651614d499190619be7565b610b6780619c0883390190565b61053f8061a76f83390190565b61106f8061acae83390190565b6119e88061bd1d83390190565b6040518060e00160405280606081526020016060815260200160608152602001600015158152602001600015158152602001600015158152602001618341618346565b905290565b604051806101000160405280600015158152602001600015158152602001606081526020016000801916815260200160608152602001606081526020016000151581526020016183416040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b818110156183f85783516001600160a01b03168352602093840193909201916001016183d1565b509095945050505050565b60005b8381101561841e578181015183820152602001618406565b50506000910152565b6000815180845261843f816020860160208601618403565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561854f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015618535577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a850301835261851f848651618427565b60209586019590945092909201916001016184e5565b50919750505060209485019492909201915060010161847b565b50929695505050505050565b600081518084526020840193506020830160005b828110156185af5781517fffffffff000000000000000000000000000000000000000000000000000000001686526020958601959091019060010161856f565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561854f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281518051604087526186256040880182618427565b9050602082015191508681036020880152618640818361855b565b9650505060209384019391909101906001016185e1565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561854f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184526186b9858351618427565b9450602093840193919091019060010161867f565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561854f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b038151168652602081015190506040602087015261874f604087018261855b565b95505060209384019391909101906001016186f6565b6020815260006141d260208301600581527f68656c6c6f000000000000000000000000000000000000000000000000000000602082015260400190565b60008151606084526187b76060850182618427565b90506001600160a01b036020840151166020850152604083015160408501528091505092915050565b60a0815260006187f360a08301886187a2565b6001600160a01b03871660208401528560408401526001600160a01b038516606084015282810360808401526188298185618427565b98975050505050505050565b60006020828403121561884757600080fd5b81516001600160a01b03811681146142cb57600080fd5b610100815260056101008201527f544f4b454e000000000000000000000000000000000000000000000000000000610120820152610140602082015260036101408201527f544b4e000000000000000000000000000000000000000000000000000000000061016082015260006101808201905060ff8816604083015286606083015260038610618918577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8560808301528460a083015261893960c08301856001600160a01b03169052565b6001600160a01b03831660e0830152979650505050505050565b60006020828403121561896557600080fd5b815180151581146142cb57600080fd5b60808152600061898860808301876187a2565b8560208401526001600160a01b0385166040840152828103606084015261807f8185618427565b6000602082840312156189c157600080fd5b5051919050565b60a0815260006189db60a0830187618427565b6001600160a01b03861660208401528460408401526001600160a01b0384166060840152828103608084015261807f81600581527f68656c6c6f000000000000000000000000000000000000000000000000000000602082015260400190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156141d2576141d2618a3b565b808201808211156141d2576141d2618a3b565b600181811c90821680618aa457607f821691505b602082108103616494577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6001600160a01b0383168152604060208201526000615bc86040830184618427565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351618b3781601a850160208801618403565b7f3a20000000000000000000000000000000000000000000000000000000000000601a918401918201528351618b7481601c840160208801618403565b01601c01949350505050565b6020815260006142cb6020830184618427565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715618be557618be5618b93565b60405290565b60008067ffffffffffffffff841115618c0657618c06618b93565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff82111715618c3557618c35618b93565b604052838152905080828401851015618c4d57600080fd5b615f97846020830185618403565b600082601f830112618c6c57600080fd5b6142cb83835160208501618beb565b600060208284031215618c8d57600080fd5b815167ffffffffffffffff811115618ca457600080fd5b6141ce84828501618c5b565b60008351618cc2818460208801618403565b835190830190618cd6818360208801618403565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351618d1781601a850160208801618403565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a918401918201528351618d54816033840160208801618403565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f555400000000000000000000000000000000000000000060608201526080602082015260006142cb6080830184618427565b600060208284031215618de357600080fd5b815167ffffffffffffffff811115618dfa57600080fd5b8201601f81018413618e0b57600080fd5b6141ce84825160208401618beb565b60008551618e2c818460208a01618403565b7f2f000000000000000000000000000000000000000000000000000000000000009083019081528551618e66816001840160208a01618403565b7f2f00000000000000000000000000000000000000000000000000000000000000600192909101918201528451618ea4816002840160208901618403565b6001818301019150507f2f0000000000000000000000000000000000000000000000000000000000000060018201528351618ee6816002840160208801618403565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b604081526000618f316040830184618427565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b7f436f756c64206e6f742066696e642041535420696e2061727469666163742000815260008251618fa881601f850160208701618403565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b6040815260006190156040830184618427565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b6040815260006190676040830184618427565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b270000000000000000000000008152600082516190de816014850160208701618403565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b6040815260006191256040830185618427565b82810360208401526142c78185618427565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f220000000000000000000000000000000000000000000000000000000000000081526000825161919e816001850160208701618403565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b600082516191e4818460208701618403565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825161929781604b850160208701618403565b91909101604b0192915050565b600060ff821660ff81036192ba576192ba618a3b565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c69400000000000000000000000000000000000000000000000602082015260008251619321816029850160208701618403565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f504154480000000000000000000060608201526080602082015260006142cb6080830184618427565b60006020828403121561938757600080fd5b815167ffffffffffffffff81111561939e57600080fd5b8201606081850312156193b057600080fd5b6193b8618bc2565b81518060030b81146193c957600080fd5b8152602082015167ffffffffffffffff8111156193e557600080fd5b6193f186828501618c5b565b602083015250604082015167ffffffffffffffff81111561941157600080fd5b61941d86828501618c5b565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f2200000000000000000000000000000000000000000000000000000000000000602082015260008251619489816021850160208701618403565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f2700000000000000000000000000000000000000000000000000000000000000602082015260008351619675816021850160208801618403565b7f2720696e206f75747075743a200000000000000000000000000000000000000060219184019182015283516196b281602e840160208801618403565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a200000000000000000000000000000000000000000000000602082015260008251619321816029850160208701618403565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a00000000000000000000000000000000000000000000000000000000000060208201526000825161977a816022850160208701618403565b9190910160220192915050565b7f436f6e7472616374206e616d65200000000000000000000000000000000000008152600082516197bf81600e850160208701618403565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b7f53504458206c6963656e7365206964656e74696669657220000000000000000081526000835161989d816018850160208801618403565b7f20696e200000000000000000000000000000000000000000000000000000000060189184019182015283516198da81601c840160208801618403565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b600082516199e0818460208701618403565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f72654000000000815260008251619a4781601c850160208701618403565b91909101601c0192915050565b60006000198203619a6757619a67618a3b565b5060010190565b80820281158282048414176141d2576141d2618a3b565b6001815b6001841115619ac057808504811115619aa457619aa4618a3b565b6001841615619ab257908102905b60019390931c928002619a89565b935093915050565b600082619ad7575060016141d2565b81619ae4575060006141d2565b8160018114619afa5760028114619b0457619b20565b60019150506141d2565b60ff841115619b1557619b15618a3b565b50506001821b6141d2565b5060208310610133831016604e8410600b8410161715619b43575081810a6141d2565b619b506000198484619a85565b8060001904821115619b6457619b64618a3b565b029392505050565b60006142cb8383619ac8565b600081619b8757619b87618a3b565b506000190190565b60008351619ba1818460208801618403565b7f3a000000000000000000000000000000000000000000000000000000000000009083019081528351619bdb816001840160208801618403565b01600101949350505050565b818103600083128015838313168383128216171561758f5761758f618a3b56fe60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57806000526020600020601f840160051c810160208510156100ec5750805b601f840160051c820191505b8181101561010c57600081556001016100f8565b50505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b6020601f821160018114610175576000831561015d5750848201515b600019600385901b1c1916600184901b17845561010c565b600084815260208120601f198516915b828110156101a55787850151825560209485019460019092019101610185565b50848210156101c35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610986806101e16000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610841565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d336600461085a565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610875565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d7565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108ea565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093d565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093d565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093d565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108ea565b600061073e3384846103bd565b9392505050565b602081526000825180602084015260005b818110156107735760208186018101516040868401015201610756565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b929592945050506040919091013590565b60006020828403121561085357600080fd5b5035919050565b60006020828403121561086c57600080fd5b61073e826107b1565b6000806040838503121561088857600080fd5b610891836107b1565b915061089f602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a8565b600181811c908216806108fe57607f821691505b602082108103610937577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a856fea264697066735822122008d7fc4e09519c5dd9f356b03596f6829a151d0bc7682533f9ceab4e459f5ee264736f6c634300081a00336080604052348015600f57600080fd5b506105208061001f6000396000f3fe60806040526004361061002a5760003560e01c806369582bee14610033578063de43156e1461005357005b3661003157005b005b34801561003f57600080fd5b5061003161004e3660046101ba565b610073565b34801561005f57600080fd5b5061003161006e3660046101ba565b6100ee565b6060811561008a5761008782840184610273565b90505b7ffdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e999486100b58780610369565b6100c560408a0160208b016103ce565b896040013533866040516100de969594939291906103f0565b60405180910390a1505050505050565b606081156101055761010282840184610273565b90505b7fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e6100b58780610369565b60006060828403121561014257600080fd5b50919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461016c57600080fd5b919050565b60008083601f84011261018357600080fd5b50813567ffffffffffffffff81111561019b57600080fd5b6020830191508360208285010111156101b357600080fd5b9250929050565b6000806000806000608086880312156101d257600080fd5b853567ffffffffffffffff8111156101e957600080fd5b6101f588828901610130565b95505061020460208701610148565b935060408601359250606086013567ffffffffffffffff81111561022757600080fd5b61023388828901610171565b969995985093965092949392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561028557600080fd5b813567ffffffffffffffff81111561029c57600080fd5b8201601f810184136102ad57600080fd5b803567ffffffffffffffff8111156102c7576102c7610244565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561033357610333610244565b60405281815282820160200186101561034b57600080fd5b81602084016020830137600091810160200191909152949350505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261039e57600080fd5b83018035915067ffffffffffffffff8211156103b957600080fd5b6020019150368190038213156101b357600080fd5b6000602082840312156103e057600080fd5b6103e982610148565b9392505050565b60a081528560a0820152858760c0830137600060c0878301015260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f880116820173ffffffffffffffffffffffffffffffffffffffff8716602084015285604084015273ffffffffffffffffffffffffffffffffffffffff8516606084015260c083820301608084015283518060c083015260005b818110156104a557602081870181015184830160e0015201610488565b50600060e0838301810191909152601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016909101019897505050505050505056fea2646970667358221220f4d1ccb9c8450e782e1c77412473fd37637a5c83a2a3272307d8c8bc8e8c7a3364736f6c634300081a003360c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea264697066735822122017543d2c8189b581ace78b1ea401266087d4800c1923634417b929e7efd8a9b764736f6c634300081a003360c060405234801561001057600080fd5b506040516119e83803806119e883398101604081905261002f916101db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600761006f898261032d565b50600861007c888261032d565b506009805460ff191660ff881617905560808590528360028111156100a3576100a36103eb565b60a08160028111156100b7576100b76103eb565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104019350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261011e57600080fd5b81516001600160401b03811115610137576101376100f7565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610165576101656100f7565b60405281815283820160200185101561017d57600080fd5b60005b8281101561019c57602081860181015183830182015201610180565b506000918101602001919091529392505050565b8051600381106101bf57600080fd5b919050565b80516001600160a01b03811681146101bf57600080fd5b600080600080600080600080610100898b0312156101f857600080fd5b88516001600160401b0381111561020e57600080fd5b61021a8b828c0161010d565b60208b015190995090506001600160401b0381111561023857600080fd5b6102448b828c0161010d565b975050604089015160ff8116811461025b57600080fd5b60608a0151909650945061027160808a016101b0565b60a08a0151909450925061028760c08a016101c4565b915061029560e08a016101c4565b90509295985092959890939650565b600181811c908216806102b857607f821691505b6020821081036102d857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561032857806000526020600020601f840160051c810160208510156103055750805b601f840160051c820191505b818110156103255760008155600101610311565b50505b505050565b81516001600160401b03811115610346576103466100f7565b61035a8161035484546102a4565b846102de565b6020601f82116001811461038e57600083156103765750848201515b600019600385901b1c1916600184901b178455610325565b600084815260208120601f198516915b828110156103be578785015182556020948501946001909201910161039e565b50848210156103dc5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a0516115b461043460003960006102f30152600081816102c4015281816109430152610a4901526115b46000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c90611416565b80601f016020809104026020016040519081016040528092919081815260200182805461047890611416565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611498565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d49186906114ab565b60405180910390a250600192915050565b60606008805461044c90611416565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114cd565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ef565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce919061151e565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad0919061153b565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f9190611554565b610b29919061156b565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611498565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e8990849061156b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611498565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611498565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e919061156b565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d890849061156b565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff81111561130f57600080fd5b8301601f8101851361132057600080fd5b803567ffffffffffffffff81111561133a5761133a6112b6565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156113a6576113a66112b6565b6040528181528282016020018710156113be57600080fd5b8160208401602083013760006020928201830152969401359450505050565b600080604083850312156113f057600080fd5b82356113fb816111ad565b9150602083013561140b816111ad565b809150509250929050565b600181811c9082168061142a57607f821691505b602082108103611463577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611469565b6040815260006114be604083018561112f565b90508260208301529392505050565b6000602082840312156114df57600080fd5b815180151581146111a657600080fd5b608081526000611502608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561153057600080fd5b81516111a6816111ad565b60006020828403121561154d57600080fd5b5051919050565b80820281158282048414176104e0576104e0611469565b808201808211156104e0576104e061146956fea26469706673582212207bc62dfdede7c005315010b4244c5d1661fb65fbf23259603e26342f3a5148c464736f6c634300081a0033a26469706673582212201f318efc07065bafb88449047967a7fed5949a025e75f877444d77805cbd1f3964736f6c634300081a0033", } // GatewayZEVMOutboundTestABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/math.sol/math.go b/v2/pkg/math.sol/math.go index 6ea0b8cb..024b7c04 100644 --- a/v2/pkg/math.sol/math.go +++ b/v2/pkg/math.sol/math.go @@ -32,7 +32,7 @@ var ( // MathMetaData contains all meta data concerning the Math contract. var MathMetaData = &bind.MetaData{ ABI: "[{\"type\":\"error\",\"name\":\"MathOverflowedMulDiv\",\"inputs\":[]}]", - Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203c4f2836b31fe7e54eb8bf5e5e1f07ead4bdb2465c1768b5ef03739d4539c0f264736f6c63430008150033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c0b270b0be59fe690f25903756d3c17b6ea12af9948ddfe45caafa979d407cf964736f6c634300081a0033", } // MathABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/mockerc20.sol/mockerc20.go b/v2/pkg/mockerc20.sol/mockerc20.go index 1425ab24..1f23395f 100644 --- a/v2/pkg/mockerc20.sol/mockerc20.go +++ b/v2/pkg/mockerc20.sol/mockerc20.go @@ -32,7 +32,7 @@ var ( // MockERC20MetaData contains all meta data concerning the MockERC20 contract. var MockERC20MetaData = &bind.MetaData{ ABI: "[{\"type\":\"function\",\"name\":\"DOMAIN_SEPARATOR\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"allowance\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approve\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"balanceOf\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"decimals\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"name_\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"symbol_\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"decimals_\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"name\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"nonces\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"permit\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"v\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"r\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"s\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"symbol\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"totalSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transfer\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferFrom\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Approval\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Transfer\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false}]", - Bin: "0x608060405234801561001057600080fd5b506111cc806100206000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80633644e5151161008c57806395d89b411161006657806395d89b41146101d2578063a9059cbb146101da578063d505accf146101ed578063dd62ed3e1461020057600080fd5b80633644e5151461017457806370a082311461017c5780637ecebe00146101b257600080fd5b806318160ddd116100bd57806318160ddd1461013a57806323b872dd1461014c578063313ce5671461015f57600080fd5b806306fdde03146100e4578063095ea7b3146101025780631624f6c614610125575b600080fd5b6100ec610246565b6040516100f99190610ba7565b60405180910390f35b610115610110366004610c3c565b6102d8565b60405190151581526020016100f9565b610138610133366004610d51565b610352565b005b6003545b6040519081526020016100f9565b61011561015a366004610dc5565b610451565b60025460405160ff90911681526020016100f9565b61013e6105c5565b61013e61018a366004610e01565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b61013e6101c0366004610e01565b60086020526000908152604090205481565b6100ec6105eb565b6101156101e8366004610c3c565b6105fa565b6101386101fb366004610e1c565b6106ab565b61013e61020e366004610e86565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b60606000805461025590610eb9565b80601f016020809104026020016040519081016040528092919081815260200182805461028190610eb9565b80156102ce5780601f106102a3576101008083540402835291602001916102ce565b820191906000526020600020905b8154815290600101906020018083116102b157829003601f168201915b5050505050905090565b33600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103409086815260200190565b60405180910390a35060015b92915050565b60095460ff16156103c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f414c52454144595f494e495449414c495a45440000000000000000000000000060448201526064015b60405180910390fd5b60006103d08482610f5b565b5060016103dd8382610f5b565b50600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff83161790556104136109f1565b60065561041e610a0a565b6007555050600980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905550565b73ffffffffffffffffffffffffffffffffffffffff831660009081526005602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146104e5576104b38184610aad565b73ffffffffffffffffffffffffffffffffffffffff861660009081526005602090815260408083203384529091529020555b73ffffffffffffffffffffffffffffffffffffffff85166000908152600460205260409020546105159084610aad565b73ffffffffffffffffffffffffffffffffffffffff80871660009081526004602052604080822093909355908616815220546105519084610b2a565b73ffffffffffffffffffffffffffffffffffffffff80861660008181526004602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906105b29087815260200190565b60405180910390a3506001949350505050565b60006006546105d26109f1565b146105e4576105df610a0a565b905090565b5060075490565b60606001805461025590610eb9565b336000908152600460205260408120546106149083610aad565b336000908152600460205260408082209290925573ffffffffffffffffffffffffffffffffffffffff85168152205461064d9083610b2a565b73ffffffffffffffffffffffffffffffffffffffff84166000818152600460205260409081902092909255905133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906103409086815260200190565b42841015610715576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064016103bb565b600060016107216105c5565b73ffffffffffffffffffffffffffffffffffffffff8a16600090815260086020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9928d928d928d9290919061077c836110a4565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810188905260e0016040516020818303038152906040528051906020012060405160200161081d9291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015610899573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061091457508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b61097a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f494e56414c49445f5349474e455200000000000000000000000000000000000060448201526064016103bb565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526005602090815260408083208b8516808552908352928190208a90555189815291928b16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35050505050505050565b6000610ba380610a0363ffffffff8216565b9250505090565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6000604051610a3c91906110dc565b60405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6610a6d6109f1565b604080516020810195909552840192909252606083015260808201523060a082015260c00160405160208183030381529060405280519060200120905090565b600081831015610b19576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f45524332303a207375627472616374696f6e20756e646572666c6f770000000060448201526064016103bb565b610b238284611170565b9392505050565b600080610b378385611183565b905083811015610b23576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45524332303a206164646974696f6e206f766572666c6f77000000000000000060448201526064016103bb565b4690565b600060208083528351808285015260005b81811015610bd457858101830151858201604001528201610bb8565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c3757600080fd5b919050565b60008060408385031215610c4f57600080fd5b610c5883610c13565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112610ca657600080fd5b813567ffffffffffffffff80821115610cc157610cc1610c66565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715610d0757610d07610c66565b81604052838152866020858801011115610d2057600080fd5b836020870160208301376000602085830101528094505050505092915050565b803560ff81168114610c3757600080fd5b600080600060608486031215610d6657600080fd5b833567ffffffffffffffff80821115610d7e57600080fd5b610d8a87838801610c95565b94506020860135915080821115610da057600080fd5b50610dad86828701610c95565b925050610dbc60408501610d40565b90509250925092565b600080600060608486031215610dda57600080fd5b610de384610c13565b9250610df160208501610c13565b9150604084013590509250925092565b600060208284031215610e1357600080fd5b610b2382610c13565b600080600080600080600060e0888a031215610e3757600080fd5b610e4088610c13565b9650610e4e60208901610c13565b95506040880135945060608801359350610e6a60808901610d40565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215610e9957600080fd5b610ea283610c13565b9150610eb060208401610c13565b90509250929050565b600181811c90821680610ecd57607f821691505b602082108103610f06577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f821115610f5657600081815260208120601f850160051c81016020861015610f335750805b601f850160051c820191505b81811015610f5257828155600101610f3f565b5050505b505050565b815167ffffffffffffffff811115610f7557610f75610c66565b610f8981610f838454610eb9565b84610f0c565b602080601f831160018114610fdc5760008415610fa65750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555610f52565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b828110156110295788860151825594840194600190910190840161100a565b508582101561106557878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036110d5576110d5611075565b5060010190565b60008083546110ea81610eb9565b60018281168015611102576001811461113557611164565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084168752821515830287019450611164565b8760005260208060002060005b8581101561115b5781548a820152908401908201611142565b50505082870194505b50929695505050505050565b8181038181111561034c5761034c611075565b8082018082111561034c5761034c61107556fea2646970667358221220e8122d9d65fd41722ae8694f08bfc13b22d510d8903be511c80fcee8c0e8368c64736f6c63430008150033", + Bin: "0x6080604052348015600f57600080fd5b5061113e8061001f6000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80633644e5151161008c57806395d89b411161006657806395d89b41146101d2578063a9059cbb146101da578063d505accf146101ed578063dd62ed3e1461020057600080fd5b80633644e5151461017457806370a082311461017c5780637ecebe00146101b257600080fd5b806318160ddd116100bd57806318160ddd1461013a57806323b872dd1461014c578063313ce5671461015f57600080fd5b806306fdde03146100e4578063095ea7b3146101025780631624f6c614610125575b600080fd5b6100ec610246565b6040516100f99190610b6b565b60405180910390f35b610115610110366004610be2565b6102d8565b60405190151581526020016100f9565b610138610133366004610cdc565b610352565b005b6003545b6040519081526020016100f9565b61011561015a366004610d55565b610451565b60025460405160ff90911681526020016100f9565b61013e6105c5565b61013e61018a366004610d92565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b61013e6101c0366004610d92565b60086020526000908152604090205481565b6100ec6105eb565b6101156101e8366004610be2565b6105fa565b6101386101fb366004610dad565b6106ab565b61013e61020e366004610e18565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b60606000805461025590610e4b565b80601f016020809104026020016040519081016040528092919081815260200182805461028190610e4b565b80156102ce5780601f106102a3576101008083540402835291602001916102ce565b820191906000526020600020905b8154815290600101906020018083116102b157829003601f168201915b5050505050905090565b33600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103409086815260200190565b60405180910390a35060015b92915050565b60095460ff16156103c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f414c52454144595f494e495449414c495a45440000000000000000000000000060448201526064015b60405180910390fd5b60006103d08482610eed565b5060016103dd8382610eed565b50600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff83161790556104136109b5565b60065561041e6109ce565b6007555050600980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905550565b73ffffffffffffffffffffffffffffffffffffffff831660009081526005602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146104e5576104b38184610a71565b73ffffffffffffffffffffffffffffffffffffffff861660009081526005602090815260408083203384529091529020555b73ffffffffffffffffffffffffffffffffffffffff85166000908152600460205260409020546105159084610a71565b73ffffffffffffffffffffffffffffffffffffffff80871660009081526004602052604080822093909355908616815220546105519084610aee565b73ffffffffffffffffffffffffffffffffffffffff80861660008181526004602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906105b29087815260200190565b60405180910390a3506001949350505050565b60006006546105d26109b5565b146105e4576105df6109ce565b905090565b5060075490565b60606001805461025590610e4b565b336000908152600460205260408120546106149083610a71565b336000908152600460205260408082209290925573ffffffffffffffffffffffffffffffffffffffff85168152205461064d9083610aee565b73ffffffffffffffffffffffffffffffffffffffff84166000818152600460205260409081902092909255905133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906103409086815260200190565b42841015610715576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064016103bb565b600060016107216105c5565b73ffffffffffffffffffffffffffffffffffffffff8a16600090815260086020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9928d928d928d9290919061077c83611017565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810188905260e0016040516020818303038152906040528051906020012060405160200161081d9291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa15801561087b573d6000803e3d6000fd5b5050604051601f19015191505073ffffffffffffffffffffffffffffffffffffffff8116158015906108d857508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b61093e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f494e56414c49445f5349474e455200000000000000000000000000000000000060448201526064016103bb565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526005602090815260408083208b8516808552908352928190208a90555189815291928b16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35050505050505050565b6000610b67806109c763ffffffff8216565b9250505090565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6000604051610a00919061104f565b60405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6610a316109b5565b604080516020810195909552840192909252606083015260808201523060a082015260c00160405160208183030381529060405280519060200120905090565b600081831015610add576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f45524332303a207375627472616374696f6e20756e646572666c6f770000000060448201526064016103bb565b610ae782846110e2565b9392505050565b600080610afb83856110f5565b905083811015610ae7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45524332303a206164646974696f6e206f766572666c6f77000000000000000060448201526064016103bb565b4690565b602081526000825180602084015260005b81811015610b995760208186018101516040868401015201610b7c565b506000604082850101526040601f19601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610bdd57600080fd5b919050565b60008060408385031215610bf557600080fd5b610bfe83610bb9565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112610c4c57600080fd5b813567ffffffffffffffff811115610c6657610c66610c0c565b604051601f19603f601f19601f8501160116810181811067ffffffffffffffff82111715610c9657610c96610c0c565b604052818152838201602001851015610cae57600080fd5b816020850160208301376000918101602001919091529392505050565b803560ff81168114610bdd57600080fd5b600080600060608486031215610cf157600080fd5b833567ffffffffffffffff811115610d0857600080fd5b610d1486828701610c3b565b935050602084013567ffffffffffffffff811115610d3157600080fd5b610d3d86828701610c3b565b925050610d4c60408501610ccb565b90509250925092565b600080600060608486031215610d6a57600080fd5b610d7384610bb9565b9250610d8160208501610bb9565b929592945050506040919091013590565b600060208284031215610da457600080fd5b610ae782610bb9565b600080600080600080600060e0888a031215610dc857600080fd5b610dd188610bb9565b9650610ddf60208901610bb9565b95506040880135945060608801359350610dfb60808901610ccb565b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610e2b57600080fd5b610e3483610bb9565b9150610e4260208401610bb9565b90509250929050565b600181811c90821680610e5f57607f821691505b602082108103610e98577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f821115610ee857806000526020600020601f840160051c81016020851015610ec55750805b601f840160051c820191505b81811015610ee55760008155600101610ed1565b50505b505050565b815167ffffffffffffffff811115610f0757610f07610c0c565b610f1b81610f158454610e4b565b84610e9e565b6020601f821160018114610f6d5760008315610f375750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455610ee5565b600084815260208120601f198516915b82811015610f9d5787850151825560209485019460019092019101610f7d565b5084821015610fd957868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361104857611048610fe8565b5060010190565b600080835461105d81610e4b565b60018216801561107457600181146110a7576110d7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00831686528115158202860193506110d7565b86600052602060002060005b838110156110cf578154888201526001909101906020016110b3565b505081860193505b509195945050505050565b8181038181111561034c5761034c610fe8565b8082018082111561034c5761034c610fe856fea2646970667358221220851d97dae90e79fa61b9e1ffe627628587a83f0e58ff9e31aa3727a08c88fd7d64736f6c634300081a0033", } // MockERC20ABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/mockerc721.sol/mockerc721.go b/v2/pkg/mockerc721.sol/mockerc721.go index cc89f22b..93595ac0 100644 --- a/v2/pkg/mockerc721.sol/mockerc721.go +++ b/v2/pkg/mockerc721.sol/mockerc721.go @@ -32,7 +32,7 @@ var ( // MockERC721MetaData contains all meta data concerning the MockERC721 contract. var MockERC721MetaData = &bind.MetaData{ ABI: "[{\"type\":\"function\",\"name\":\"approve\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"balanceOf\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getApproved\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"name_\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"symbol_\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isApprovedForAll\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"name\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"ownerOf\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"safeTransferFrom\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"safeTransferFrom\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"setApprovalForAll\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"approved\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"supportsInterface\",\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"symbol\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"tokenURI\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferFrom\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"event\",\"name\":\"Approval\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"_approved\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ApprovalForAll\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"_operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"_approved\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Transfer\",\"inputs\":[{\"name\":\"_from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"_to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"}],\"anonymous\":false}]", - Bin: "0x608060405234801561001057600080fd5b5061149d806100206000396000f3fe6080604052600436106100dd5760003560e01c80636352211e1161007f578063a22cb46511610059578063a22cb4651461025f578063b88d4fde1461027f578063c87b56dd14610292578063e985e9c5146102b357600080fd5b80636352211e146101fc57806370a082311461021c57806395d89b411461024a57600080fd5b8063095ea7b3116100bb578063095ea7b3146101a157806323b872dd146101b657806342842e0e146101c95780634cd88b76146101dc57600080fd5b806301ffc9a7146100e257806306fdde0314610117578063081812fc14610139575b600080fd5b3480156100ee57600080fd5b506101026100fd366004610e1f565b610309565b60405190151581526020015b60405180910390f35b34801561012357600080fd5b5061012c6103ee565b60405161010e9190610ea7565b34801561014557600080fd5b5061017c610154366004610eba565b60009081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161010e565b6101b46101af366004610ef7565b610480565b005b6101b46101c4366004610f21565b6105cf565b6101b46101d7366004610f21565b6108c4565b3480156101e857600080fd5b506101b46101f7366004611040565b610a18565b34801561020857600080fd5b5061017c610217366004610eba565b610ace565b34801561022857600080fd5b5061023c6102373660046110a4565b610b5f565b60405190815260200161010e565b34801561025657600080fd5b5061012c610c07565b34801561026b57600080fd5b506101b461027a3660046110bf565b610c16565b6101b461028d3660046110fb565b610cad565b34801561029e57600080fd5b5061012c6102ad366004610eba565b50606090565b3480156102bf57600080fd5b506101026102ce366004611177565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061039c57507f80ac58cd000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b806103e857507f5b5e139f000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6060600080546103fd906111aa565b80601f0160208091040260200160405190810160405280929190818152602001828054610429906111aa565b80156104765780601f1061044b57610100808354040283529160200191610476565b820191906000526020600020905b81548152906001019060200180831161045957829003601f168201915b5050505050905090565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16338114806104e3575073ffffffffffffffffffffffffffffffffffffffff8116600090815260056020908152604080832033845290915290205460ff165b61054e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a454400000000000000000000000000000000000060448201526064015b60405180910390fd5b60008281526004602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff84811691161461065f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f57524f4e475f46524f4d000000000000000000000000000000000000000000006044820152606401610545565b73ffffffffffffffffffffffffffffffffffffffff82166106dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e540000000000000000000000000000006044820152606401610545565b3373ffffffffffffffffffffffffffffffffffffffff84161480610730575073ffffffffffffffffffffffffffffffffffffffff8316600090815260056020908152604080832033845290915290205460ff165b8061075e575060008181526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1633145b6107c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610545565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081208054916107f58361122c565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260036020526040812080549161082b83611261565b90915550506000818152600260209081526040808320805473ffffffffffffffffffffffffffffffffffffffff8088167fffffffffffffffffffffffff000000000000000000000000000000000000000092831681179093556004909452828520805490911690559051849391928716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6108cf8383836105cf565b813b15806109ad57506040517f150b7a020000000000000000000000000000000000000000000000000000000080825233600483015273ffffffffffffffffffffffffffffffffffffffff858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a4016020604051808303816000875af1158015610965573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109899190611299565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b610a13576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610545565b505050565b60065460ff1615610a85576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f414c52454144595f494e495449414c495a4544000000000000000000000000006044820152606401610545565b6000610a918382611304565b506001610a9e8282611304565b5050600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905550565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1680610b5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4d494e544544000000000000000000000000000000000000000000006044820152606401610545565b919050565b600073ffffffffffffffffffffffffffffffffffffffff8216610bde576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4144445245535300000000000000000000000000000000000000006044820152606401610545565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6060600180546103fd906111aa565b33600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610cb88484846105cf565b823b1580610d8257506040517f150b7a02000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff85169063150b7a0290610d1b90339089908890889060040161141e565b6020604051808303816000875af1158015610d3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5e9190611299565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b610de8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610545565b50505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610e1c57600080fd5b50565b600060208284031215610e3157600080fd5b8135610e3c81610dee565b9392505050565b6000815180845260005b81811015610e6957602081850181015186830182015201610e4d565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081526000610e3c6020830184610e43565b600060208284031215610ecc57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610b5a57600080fd5b60008060408385031215610f0a57600080fd5b610f1383610ed3565b946020939093013593505050565b600080600060608486031215610f3657600080fd5b610f3f84610ed3565b9250610f4d60208501610ed3565b9150604084013590509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600067ffffffffffffffff80841115610fa757610fa7610f5d565b604051601f85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715610fed57610fed610f5d565b8160405280935085815286868601111561100657600080fd5b858560208301376000602087830101525050509392505050565b600082601f83011261103157600080fd5b610e3c83833560208501610f8c565b6000806040838503121561105357600080fd5b823567ffffffffffffffff8082111561106b57600080fd5b61107786838701611020565b9350602085013591508082111561108d57600080fd5b5061109a85828601611020565b9150509250929050565b6000602082840312156110b657600080fd5b610e3c82610ed3565b600080604083850312156110d257600080fd5b6110db83610ed3565b9150602083013580151581146110f057600080fd5b809150509250929050565b6000806000806080858703121561111157600080fd5b61111a85610ed3565b935061112860208601610ed3565b925060408501359150606085013567ffffffffffffffff81111561114b57600080fd5b8501601f8101871361115c57600080fd5b61116b87823560208401610f8c565b91505092959194509250565b6000806040838503121561118a57600080fd5b61119383610ed3565b91506111a160208401610ed3565b90509250929050565b600181811c908216806111be57607f821691505b6020821081036111f7577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008161123b5761123b6111fd565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611292576112926111fd565b5060010190565b6000602082840312156112ab57600080fd5b8151610e3c81610dee565b601f821115610a1357600081815260208120601f850160051c810160208610156112dd5750805b601f850160051c820191505b818110156112fc578281556001016112e9565b505050505050565b815167ffffffffffffffff81111561131e5761131e610f5d565b6113328161132c84546111aa565b846112b6565b602080601f831160018114611385576000841561134f5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b1785556112fc565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b828110156113d2578886015182559484019460019091019084016113b3565b508582101561140e57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b600073ffffffffffffffffffffffffffffffffffffffff80871683528086166020840152508360408301526080606083015261145d6080830184610e43565b969550505050505056fea26469706673582212201102f53c6ed66d541915b39d172490bf4f0b0ee78ce9c28c7754a608c4935d8864736f6c63430008150033", + Bin: "0x6080604052348015600f57600080fd5b506114b88061001f6000396000f3fe6080604052600436106100dd5760003560e01c80636352211e1161007f578063a22cb46511610059578063a22cb4651461025f578063b88d4fde1461027f578063c87b56dd14610292578063e985e9c5146102b357600080fd5b80636352211e146101fc57806370a082311461021c57806395d89b411461024a57600080fd5b8063095ea7b3116100bb578063095ea7b3146101a157806323b872dd146101b657806342842e0e146101c95780634cd88b76146101dc57600080fd5b806301ffc9a7146100e257806306fdde0314610117578063081812fc14610139575b600080fd5b3480156100ee57600080fd5b506101026100fd366004610e1f565b610309565b60405190151581526020015b60405180910390f35b34801561012357600080fd5b5061012c6103ee565b60405161010e9190610ea7565b34801561014557600080fd5b5061017c610154366004610eba565b60009081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161010e565b6101b46101af366004610ef7565b610480565b005b6101b46101c4366004610f21565b6105cf565b6101b46101d7366004610f21565b6108c4565b3480156101e857600080fd5b506101b46101f7366004611045565b610a18565b34801561020857600080fd5b5061017c610217366004610eba565b610ace565b34801561022857600080fd5b5061023c6102373660046110ae565b610b5f565b60405190815260200161010e565b34801561025657600080fd5b5061012c610c07565b34801561026b57600080fd5b506101b461027a3660046110c9565b610c16565b6101b461028d366004611105565b610cad565b34801561029e57600080fd5b5061012c6102ad366004610eba565b50606090565b3480156102bf57600080fd5b506101026102ce366004611181565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061039c57507f80ac58cd000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b806103e857507f5b5e139f000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6060600080546103fd906111b4565b80601f0160208091040260200160405190810160405280929190818152602001828054610429906111b4565b80156104765780601f1061044b57610100808354040283529160200191610476565b820191906000526020600020905b81548152906001019060200180831161045957829003601f168201915b5050505050905090565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16338114806104e3575073ffffffffffffffffffffffffffffffffffffffff8116600090815260056020908152604080832033845290915290205460ff165b61054e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a454400000000000000000000000000000000000060448201526064015b60405180910390fd5b60008281526004602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff84811691161461065f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f57524f4e475f46524f4d000000000000000000000000000000000000000000006044820152606401610545565b73ffffffffffffffffffffffffffffffffffffffff82166106dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e540000000000000000000000000000006044820152606401610545565b3373ffffffffffffffffffffffffffffffffffffffff84161480610730575073ffffffffffffffffffffffffffffffffffffffff8316600090815260056020908152604080832033845290915290205460ff165b8061075e575060008181526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1633145b6107c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610545565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081208054916107f583611236565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260036020526040812080549161082b8361126b565b90915550506000818152600260209081526040808320805473ffffffffffffffffffffffffffffffffffffffff8088167fffffffffffffffffffffffff000000000000000000000000000000000000000092831681179093556004909452828520805490911690559051849391928716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6108cf8383836105cf565b813b15806109ad57506040517f150b7a020000000000000000000000000000000000000000000000000000000080825233600483015273ffffffffffffffffffffffffffffffffffffffff858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a4016020604051808303816000875af1158015610965573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098991906112a3565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b610a13576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610545565b505050565b60065460ff1615610a85576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f414c52454144595f494e495449414c495a4544000000000000000000000000006044820152606401610545565b6000610a91838261130e565b506001610a9e828261130e565b5050600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905550565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1680610b5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4d494e544544000000000000000000000000000000000000000000006044820152606401610545565b919050565b600073ffffffffffffffffffffffffffffffffffffffff8216610bde576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4144445245535300000000000000000000000000000000000000006044820152606401610545565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6060600180546103fd906111b4565b33600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610cb88484846105cf565b823b1580610d8257506040517f150b7a02000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff85169063150b7a0290610d1b903390899088908890600401611427565b6020604051808303816000875af1158015610d3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5e91906112a3565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b610de8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610545565b50505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610e1c57600080fd5b50565b600060208284031215610e3157600080fd5b8135610e3c81610dee565b9392505050565b6000815180845260005b81811015610e6957602081850181015186830182015201610e4d565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081526000610e3c6020830184610e43565b600060208284031215610ecc57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610b5a57600080fd5b60008060408385031215610f0a57600080fd5b610f1383610ed3565b946020939093013593505050565b600080600060608486031215610f3657600080fd5b610f3f84610ed3565b9250610f4d60208501610ed3565b929592945050506040919091013590565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008067ffffffffffffffff841115610fa857610fa8610f5e565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff82111715610ff557610ff5610f5e565b60405283815290508082840185101561100d57600080fd5b83836020830137600060208583010152509392505050565b600082601f83011261103657600080fd5b610e3c83833560208501610f8d565b6000806040838503121561105857600080fd5b823567ffffffffffffffff81111561106f57600080fd5b61107b85828601611025565b925050602083013567ffffffffffffffff81111561109857600080fd5b6110a485828601611025565b9150509250929050565b6000602082840312156110c057600080fd5b610e3c82610ed3565b600080604083850312156110dc57600080fd5b6110e583610ed3565b9150602083013580151581146110fa57600080fd5b809150509250929050565b6000806000806080858703121561111b57600080fd5b61112485610ed3565b935061113260208601610ed3565b925060408501359150606085013567ffffffffffffffff81111561115557600080fd5b8501601f8101871361116657600080fd5b61117587823560208401610f8d565b91505092959194509250565b6000806040838503121561119457600080fd5b61119d83610ed3565b91506111ab60208401610ed3565b90509250929050565b600181811c908216806111c857607f821691505b602082108103611201577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008161124557611245611207565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361129c5761129c611207565b5060010190565b6000602082840312156112b557600080fd5b8151610e3c81610dee565b601f821115610a1357806000526020600020601f840160051c810160208510156112e75750805b601f840160051c820191505b8181101561130757600081556001016112f3565b5050505050565b815167ffffffffffffffff81111561132857611328610f5e565b61133c8161133684546111b4565b846112c0565b6020601f82116001811461138e57600083156113585750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611307565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156113dc57878501518255602094850194600190920191016113bc565b508482101561141857868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b73ffffffffffffffffffffffffffffffffffffffff8516815273ffffffffffffffffffffffffffffffffffffffff841660208201528260408201526080606082015260006114786080830184610e43565b969550505050505056fea26469706673582212202332803a16bf7eaf4a68e83df79b845e756649c92da3b94bb9b4061f246da5be64736f6c634300081a0033", } // MockERC721ABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/proxyadmin.sol/proxyadmin.go b/v2/pkg/proxyadmin.sol/proxyadmin.go index 0948e014..d1cd783e 100644 --- a/v2/pkg/proxyadmin.sol/proxyadmin.go +++ b/v2/pkg/proxyadmin.sol/proxyadmin.go @@ -32,7 +32,7 @@ var ( // ProxyAdminMetaData contains all meta data concerning the ProxyAdmin contract. var ProxyAdminMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"UPGRADE_INTERFACE_VERSION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeAndCall\",\"inputs\":[{\"name\":\"proxy\",\"type\":\"address\",\"internalType\":\"contractITransparentUpgradeableProxy\"},{\"name\":\"implementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"OwnableInvalidOwner\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]}]", - Bin: "0x608060405234801561001057600080fd5b5060405161065d38038061065d83398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b610560806100fd6000396000f3fe60806040526004361061005a5760003560e01c80639623609d116100435780639623609d146100b0578063ad3cb1cc146100c3578063f2fde38b1461011957600080fd5b8063715018a61461005f5780638da5cb5b14610076575b600080fd5b34801561006b57600080fd5b50610074610139565b005b34801561008257600080fd5b5060005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100746100be366004610364565b61014d565b3480156100cf57600080fd5b5061010c6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100a791906104bc565b34801561012557600080fd5b506100746101343660046104d6565b6101e2565b61014161024b565b61014b600061029e565b565b61015561024b565b6040517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690634f1ef2869034906101ab90869086906004016104f3565b6000604051808303818588803b1580156101c457600080fd5b505af11580156101d8573d6000803e3d6000fd5b5050505050505050565b6101ea61024b565b73ffffffffffffffffffffffffffffffffffffffff811661023f576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6102488161029e565b50565b60005473ffffffffffffffffffffffffffffffffffffffff16331461014b576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610236565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff8116811461024857600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060006060848603121561037957600080fd5b833561038481610313565b9250602084013561039481610313565b9150604084013567ffffffffffffffff808211156103b157600080fd5b818601915086601f8301126103c557600080fd5b8135818111156103d7576103d7610335565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561041d5761041d610335565b8160405282815289602084870101111561043657600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000815180845260005b8181101561047e57602081850181015186830182015201610462565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006104cf6020830184610458565b9392505050565b6000602082840312156104e857600080fd5b81356104cf81610313565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006105226040830184610458565b94935050505056fea264697066735822122044608d1d803528cefebfe1257cad5290b32192fb478f6905d50044aec0ab2ef664736f6c63430008150033", + Bin: "0x608060405234801561001057600080fd5b5060405161068438038061068483398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b610587806100fd6000396000f3fe60806040526004361061005a5760003560e01c80639623609d116100435780639623609d146100b0578063ad3cb1cc146100c3578063f2fde38b1461011957600080fd5b8063715018a61461005f5780638da5cb5b14610076575b600080fd5b34801561006b57600080fd5b50610074610139565b005b34801561008257600080fd5b5060005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100746100be366004610364565b61014d565b3480156100cf57600080fd5b5061010c6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100a791906104e3565b34801561012557600080fd5b506100746101343660046104fd565b6101e2565b61014161024b565b61014b600061029e565b565b61015561024b565b6040517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690634f1ef2869034906101ab908690869060040161051a565b6000604051808303818588803b1580156101c457600080fd5b505af11580156101d8573d6000803e3d6000fd5b5050505050505050565b6101ea61024b565b73ffffffffffffffffffffffffffffffffffffffff811661023f576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6102488161029e565b50565b60005473ffffffffffffffffffffffffffffffffffffffff16331461014b576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610236565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff8116811461024857600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060006060848603121561037957600080fd5b833561038481610313565b9250602084013561039481610313565b9150604084013567ffffffffffffffff8111156103b057600080fd5b8401601f810186136103c157600080fd5b803567ffffffffffffffff8111156103db576103db610335565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561044757610447610335565b60405281815282820160200188101561045f57600080fd5b816020840160208301376000602083830101528093505050509250925092565b6000815180845260005b818110156104a557602081850181015186830182015201610489565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006104f6602083018461047f565b9392505050565b60006020828403121561050f57600080fd5b81356104f681610313565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000610549604083018461047f565b94935050505056fea2646970667358221220b68ea0eca96d97adca0a037e1efb26b5d3e690e9fbc1913bb4a08e597cfc70f164736f6c634300081a0033", } // ProxyAdminABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/receiverevm.sol/receiverevm.go b/v2/pkg/receiverevm.sol/receiverevm.go index 4eb8ad23..02ded950 100644 --- a/v2/pkg/receiverevm.sol/receiverevm.go +++ b/v2/pkg/receiverevm.sol/receiverevm.go @@ -32,7 +32,7 @@ var ( // ReceiverEVMMetaData contains all meta data concerning the ReceiverEVM contract. var ReceiverEVMMetaData = &bind.MetaData{ ABI: "[{\"type\":\"fallback\",\"stateMutability\":\"payable\"},{\"type\":\"receive\",\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"onRevert\",\"inputs\":[{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"receiveERC20\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destination\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"receiveERC20Partial\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destination\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"receiveNoParams\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"receiveNonPayable\",\"inputs\":[{\"name\":\"strs\",\"type\":\"string[]\",\"internalType\":\"string[]\"},{\"name\":\"nums\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"flag\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"receivePayable\",\"inputs\":[{\"name\":\"str\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"num\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"flag\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"event\",\"name\":\"ReceivedERC20\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"destination\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNoParams\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNonPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strs\",\"type\":\"string[]\",\"indexed\":false,\"internalType\":\"string[]\"},{\"name\":\"nums\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"str\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"num\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedRevert\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ZeroAmount\",\"inputs\":[]}]", - Bin: "0x608060405234801561001057600080fd5b506001600055610d0c806100256000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610893565b6102f9565b34801561010057600080fd5b5061006a61010f36600461097d565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a58565b60405180910390a15050565b610226610372565b6000610233600285610ac2565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b6b565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610bb9565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610c9d565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610cba565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff8082111561072757600080fd5b818501915085601f83011261073b57600080fd5b81358181111561074a57600080fd5b86602082850101111561075c57600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e4576107e461076e565b604052919050565b600082601f8301126107fd57600080fd5b813567ffffffffffffffff8111156108175761081761076e565b61084860207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079d565b81815284602083860101111561085d57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087a565b6000806000606084860312156108a857600080fd5b833567ffffffffffffffff8111156108bf57600080fd5b6108cb868287016107ec565b9350506020840135915060408401356108e38161087a565b809150509250925092565b600067ffffffffffffffff8211156109085761090861076e565b5060051b60200190565b600082601f83011261092357600080fd5b81356020610938610933836108ee565b61079d565b82815260059290921b8401810191818101908684111561095757600080fd5b8286015b84811015610972578035835291830191830161095b565b509695505050505050565b60008060006060848603121561099257600080fd5b833567ffffffffffffffff808211156109aa57600080fd5b818601915086601f8301126109be57600080fd5b813560206109ce610933836108ee565b82815260059290921b8401810191818101908a8411156109ed57600080fd5b8286015b84811015610a2557803586811115610a095760008081fd5b610a178d86838b01016107ec565b8452509183019183016109f1565b5097505087013592505080821115610a3c57600080fd5b50610a4986828701610912565b9250506106f360408501610888565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610af8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b18578181015183820152602001610b00565b50506000910152565b60008151808452610b39816020860160208601610afd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610ba060a0830186610b21565b6060830194909452509015156080909101529392505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff87168352602060808185015281875180845260a08601915060a08160051b870101935082890160005b82811015610c49577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60888703018452610c37868351610b21565b95509284019290840190600101610bfd565b50505050838203604085015285518083528187019282019060005b81811015610c8057845183529383019391830191600101610c64565b505085151560608601529250610c94915050565b95945050505050565b600060208284031215610caf57600080fd5b81516104f98161087a565b60008251610ccc818460208701610afd565b919091019291505056fea26469706673582212203c78a9c62b9e8060d1fadf61a8e6e054c88d36bdb3ea73702c26bf13f718fad664736f6c63430008150033", + Bin: "0x6080604052348015600f57600080fd5b506001600055610d3a806100246000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610895565b6102f9565b34801561010057600080fd5b5061006a61010f366004610981565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a6b565b60405180910390a15050565b610226610372565b6000610233600285610ad5565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b7e565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610c08565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610ccb565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610ce8565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff81111561072657600080fd5b8301601f8101851361073757600080fd5b803567ffffffffffffffff81111561074e57600080fd5b85602082840101111561076057600080fd5b6020919091019590945092505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e6576107e6610770565b604052919050565b600082601f8301126107ff57600080fd5b813567ffffffffffffffff81111561081957610819610770565b61084a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079f565b81815284602083860101111561085f57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087c565b6000806000606084860312156108aa57600080fd5b833567ffffffffffffffff8111156108c157600080fd5b6108cd868287016107ee565b9350506020840135915060408401356108e58161087c565b809150509250925092565b600067ffffffffffffffff82111561090a5761090a610770565b5060051b60200190565b600082601f83011261092557600080fd5b8135610938610933826108f0565b61079f565b8082825260208201915060208360051b86010192508583111561095a57600080fd5b602085015b8381101561097757803583526020928301920161095f565b5095945050505050565b60008060006060848603121561099657600080fd5b833567ffffffffffffffff8111156109ad57600080fd5b8401601f810186136109be57600080fd5b80356109cc610933826108f0565b8082825260208201915060208360051b8501019250888311156109ee57600080fd5b602084015b83811015610a3057803567ffffffffffffffff811115610a1257600080fd5b610a218b6020838901016107ee565b845250602092830192016109f3565b509550505050602084013567ffffffffffffffff811115610a5057600080fd5b610a5c86828701610914565b9250506106f36040850161088a565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610b0b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b2b578181015183820152602001610b13565b50506000910152565b60008151808452610b4c816020860160208601610b10565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610bb360a0830186610b34565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610bfe578151865260209586019590910190600101610be0565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610c86858351610b34565b94506020938401939190910190600101610c4c565b505050508281036040840152610cb18186610bcc565b915050610cc2606083018415159052565b95945050505050565b600060208284031215610cdd57600080fd5b81516104f98161087c565b60008251610cfa818460208701610b10565b919091019291505056fea2646970667358221220556072e1abafc3c4063b8cce832228b4f309b93726aaa6a6dfab20cb880c6d1864736f6c634300081a0033", } // ReceiverEVMABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/safeconsole.sol/safeconsole.go b/v2/pkg/safeconsole.sol/safeconsole.go index 9c42698e..75f5113d 100644 --- a/v2/pkg/safeconsole.sol/safeconsole.go +++ b/v2/pkg/safeconsole.sol/safeconsole.go @@ -32,7 +32,7 @@ var ( // SafeconsoleMetaData contains all meta data concerning the Safeconsole contract. var SafeconsoleMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f78b5ac6fd8ac683a268b6334e99d3c9a983071e30536a7360d4568a92f2de4064736f6c63430008150033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122010d0f421153ad6b408823b000b8d6405eb3a4715d0aed8860bdb9898d2215f2264736f6c634300081a0033", } // SafeconsoleABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/safeerc20.sol/safeerc20.go b/v2/pkg/safeerc20.sol/safeerc20.go index 00f4c57c..819e7619 100644 --- a/v2/pkg/safeerc20.sol/safeerc20.go +++ b/v2/pkg/safeerc20.sol/safeerc20.go @@ -32,7 +32,7 @@ var ( // SafeERC20MetaData contains all meta data concerning the SafeERC20 contract. var SafeERC20MetaData = &bind.MetaData{ ABI: "[{\"type\":\"error\",\"name\":\"SafeERC20FailedDecreaseAllowance\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"currentAllowance\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"requestedDecrease\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]}]", - Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122046102441a3eeb6e5a462b03c9c7513d93efc3227355025e84529f195fef9a90f64736f6c63430008150033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b149ed6660f3fbf5a50e73e0348cd9d9861a3fa7d998ed32eee66773e3cb05b864736f6c634300081a0033", } // SafeERC20ABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/senderzevm.sol/senderzevm.go b/v2/pkg/senderzevm.sol/senderzevm.go index 9f503019..90617bb0 100644 --- a/v2/pkg/senderzevm.sol/senderzevm.go +++ b/v2/pkg/senderzevm.sol/senderzevm.go @@ -32,7 +32,7 @@ var ( // SenderZEVMMetaData contains all meta data concerning the SenderZEVM contract. var SenderZEVMMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_gateway\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"callReceiver\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"str\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"num\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"flag\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"gateway\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"withdrawAndCallReceiver\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"str\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"num\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"flag\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]}]", - Bin: "0x608060405234801561001057600080fd5b506040516107eb3803806107eb83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b610758806100936000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063a0a1730b146100a4575b600080fd5b6100596100543660046104b8565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b2366004610570565b6102af565b60008383836040516024016100ce93929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061067e565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106a2565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f0ac7c44c00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690630ac7c44c9061039490889085906004016106f4565b600060405180830381600087803b1580156103ae57600080fd5b505af11580156103c2573d6000803e3d6000fd5b505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261040d57600080fd5b813567ffffffffffffffff80821115610428576104286103cd565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561046e5761046e6103cd565b8160405283815286602085880101111561048757600080fd5b836020870160208301376000602085830101528094505050505092915050565b80151581146104b557600080fd5b50565b60008060008060008060c087890312156104d157600080fd5b863567ffffffffffffffff808211156104e957600080fd5b6104f58a838b016103fc565b9750602089013596506040890135915073ffffffffffffffffffffffffffffffffffffffff8216821461052757600080fd5b9094506060880135908082111561053d57600080fd5b5061054a89828a016103fc565b9350506080870135915060a0870135610562816104a7565b809150509295509295509295565b6000806000806080858703121561058657600080fd5b843567ffffffffffffffff8082111561059e57600080fd5b6105aa888389016103fc565b955060208701359150808211156105c057600080fd5b506105cd878288016103fc565b9350506040850135915060608501356105e5816104a7565b939692955090935050565b6000815180845260005b81811015610616576020818501810151868301820152016105fa565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60608152600061066760608301866105f0565b602083019490945250901515604090910152919050565b60006020828403121561069057600080fd5b815161069b816104a7565b9392505050565b6080815260006106b560808301876105f0565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526106e981856105f0565b979650505050505050565b60408152600061070760408301856105f0565b828103602084015261071981856105f0565b9594505050505056fea2646970667358221220e92044c2cf71fdca139b2b32bfecac087bbcce9922fcdb35a853eeb2131c909c64736f6c63430008150033", + Bin: "0x6080604052348015600f57600080fd5b506040516107f63803806107f6833981016040819052602c916050565b600080546001600160a01b0319166001600160a01b0392909216919091179055607e565b600060208284031215606157600080fd5b81516001600160a01b0381168114607757600080fd5b9392505050565b6107698061008d6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063a0a1730b146100a4575b600080fd5b6100596100543660046104c1565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b236600461057c565b6102af565b60008383836040516024016100ce93929190610665565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061068f565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106b3565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610665565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f0ac7c44c00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690630ac7c44c906103949088908590600401610705565b600060405180830381600087803b1580156103ae57600080fd5b505af11580156103c2573d6000803e3d6000fd5b505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261040d57600080fd5b81356020830160008067ffffffffffffffff84111561042e5761042e6103cd565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff8211171561047b5761047b6103cd565b60405283815290508082840187101561049357600080fd5b838360208301376000602085830101528094505050505092915050565b80151581146104be57600080fd5b50565b60008060008060008060c087890312156104da57600080fd5b863567ffffffffffffffff8111156104f157600080fd5b6104fd89828a016103fc565b96505060208701359450604087013573ffffffffffffffffffffffffffffffffffffffff8116811461052e57600080fd5b9350606087013567ffffffffffffffff81111561054a57600080fd5b61055689828a016103fc565b9350506080870135915060a087013561056e816104b0565b809150509295509295509295565b6000806000806080858703121561059257600080fd5b843567ffffffffffffffff8111156105a957600080fd5b6105b5878288016103fc565b945050602085013567ffffffffffffffff8111156105d257600080fd5b6105de878288016103fc565b9350506040850135915060608501356105f6816104b0565b939692955090935050565b6000815180845260005b818110156106275760208185018101518683018201520161060b565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6060815260006106786060830186610601565b602083019490945250901515604090910152919050565b6000602082840312156106a157600080fd5b81516106ac816104b0565b9392505050565b6080815260006106c66080830187610601565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526106fa8185610601565b979650505050505050565b6040815260006107186040830185610601565b828103602084015261072a8185610601565b9594505050505056fea26469706673582212204babda0c6b9bc7b1d80b616dce92ddfbe79ae0bb96aad4f2c77ffb6a8c63da7f64736f6c634300081a0033", } // SenderZEVMABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/signedmath.sol/signedmath.go b/v2/pkg/signedmath.sol/signedmath.go index c0d34e30..34f4b0da 100644 --- a/v2/pkg/signedmath.sol/signedmath.go +++ b/v2/pkg/signedmath.sol/signedmath.go @@ -32,7 +32,7 @@ var ( // SignedMathMetaData contains all meta data concerning the SignedMath contract. var SignedMathMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201ca0171b2127aeeb464373ad18feba64d92929f755a106eaa3742c11e5094c4c64736f6c63430008150033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202dd523a6f2a20254e80b39b9af949f0e1516726eac5401215b97c102c776da6c64736f6c634300081a0033", } // SignedMathABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/stderror.sol/stderror.go b/v2/pkg/stderror.sol/stderror.go index 27826c4f..ffcffad0 100644 --- a/v2/pkg/stderror.sol/stderror.go +++ b/v2/pkg/stderror.sol/stderror.go @@ -32,7 +32,7 @@ var ( // StdErrorMetaData contains all meta data concerning the StdError contract. var StdErrorMetaData = &bind.MetaData{ ABI: "[{\"type\":\"function\",\"name\":\"arithmeticError\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"assertionError\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"divisionError\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"encodeStorageError\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"enumConversionError\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"indexOOBError\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"memOverflowError\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"popError\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"zeroVarError\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"}]", - Bin: "0x6102c961003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100ad5760003560e01c8063986c5f6811610080578063b67689da11610065578063b67689da146100f8578063d160e4de14610100578063fa784a441461010857600080fd5b8063986c5f68146100e8578063b22dc54d146100f057600080fd5b806305ee8612146100b257806310332977146100d05780631de45560146100d85780638995290f146100e0575b600080fd5b6100ba610110565b6040516100c79190610227565b60405180910390f35b6100ba610197565b6100ba6101a9565b6100ba6101bb565b6100ba6101cd565b6100ba6101df565b6100ba6101f1565b6100ba610203565b6100ba610215565b604051603260248201526044015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f4e487b710000000000000000000000000000000000000000000000000000000017905281565b6040516001602482015260440161011e565b6040516021602482015260440161011e565b6040516011602482015260440161011e565b6040516041602482015260440161011e565b6040516031602482015260440161011e565b6040516051602482015260440161011e565b6040516022602482015260440161011e565b6040516012602482015260440161011e565b600060208083528351808285015260005b8181101561025457858101830151858201604001528201610238565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116850101925050509291505056fea2646970667358221220c10828917d53d50bb057fd7c67f4feba9c543cb1535000dcf35cb200adfbf44d64736f6c63430008150033", + Bin: "0x6102c9610039600b82828239805160001a607314602c57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100ad5760003560e01c8063986c5f6811610080578063b67689da11610065578063b67689da146100f8578063d160e4de14610100578063fa784a441461010857600080fd5b8063986c5f68146100e8578063b22dc54d146100f057600080fd5b806305ee8612146100b257806310332977146100d05780631de45560146100d85780638995290f146100e0575b600080fd5b6100ba610110565b6040516100c79190610227565b60405180910390f35b6100ba610197565b6100ba6101a9565b6100ba6101bb565b6100ba6101cd565b6100ba6101df565b6100ba6101f1565b6100ba610203565b6100ba610215565b604051603260248201526044015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f4e487b710000000000000000000000000000000000000000000000000000000017905281565b6040516001602482015260440161011e565b6040516021602482015260440161011e565b6040516011602482015260440161011e565b6040516041602482015260440161011e565b6040516031602482015260440161011e565b6040516051602482015260440161011e565b6040516022602482015260440161011e565b6040516012602482015260440161011e565b602081526000825180602084015260005b818110156102555760208186018101516040868401015201610238565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168401019150509291505056fea26469706673582212209d55015f4a99eb82983bead015f4946ac9e7ee7d323094e4fb909dc07bb134c164736f6c634300081a0033", } // StdErrorABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/stdjson.sol/stdjson.go b/v2/pkg/stdjson.sol/stdjson.go index 94316e09..05cd807c 100644 --- a/v2/pkg/stdjson.sol/stdjson.go +++ b/v2/pkg/stdjson.sol/stdjson.go @@ -32,7 +32,7 @@ var ( // StdJsonMetaData contains all meta data concerning the StdJson contract. var StdJsonMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220aef7109ba7ff4cacc76d76403bf2505b21d0aba3929e3887bb81886f8151e2c164736f6c63430008150033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220cd59f5048ae05ef3befcf86df42d1ad7dc359fe84a517a91f58b04f8a9c4c15164736f6c634300081a0033", } // StdJsonABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/stdmath.sol/stdmath.go b/v2/pkg/stdmath.sol/stdmath.go index 05087c4b..c3614770 100644 --- a/v2/pkg/stdmath.sol/stdmath.go +++ b/v2/pkg/stdmath.sol/stdmath.go @@ -32,7 +32,7 @@ var ( // StdMathMetaData contains all meta data concerning the StdMath contract. var StdMathMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122005713e855c51638efc1a20da98ab8a27f0176540701ea44cb7797ebea165c41b64736f6c63430008150033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206d48e26ea2524bb2f6ed36895c260c48987e2db7126d399a1b3bb7fd9552db8164736f6c634300081a0033", } // StdMathABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/stdstorage.sol/stdstorage.go b/v2/pkg/stdstorage.sol/stdstorage.go index b36b9b70..b360a69e 100644 --- a/v2/pkg/stdstorage.sol/stdstorage.go +++ b/v2/pkg/stdstorage.sol/stdstorage.go @@ -32,7 +32,7 @@ var ( // StdStorageMetaData contains all meta data concerning the StdStorage contract. var StdStorageMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202be19b59d117a3cbeaa5bf970a6c5e9302c365a454bda0dc2e66a96b09a5009e64736f6c63430008150033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b08d0f905a716163daa7050311fa70db0bb92cc06d29f656b76779bf69a0f90164736f6c634300081a0033", } // StdStorageABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/stdstorage.sol/stdstoragesafe.go b/v2/pkg/stdstorage.sol/stdstoragesafe.go index 8c4847d7..978bfe61 100644 --- a/v2/pkg/stdstorage.sol/stdstoragesafe.go +++ b/v2/pkg/stdstorage.sol/stdstoragesafe.go @@ -32,7 +32,7 @@ var ( // StdStorageSafeMetaData contains all meta data concerning the StdStorageSafe contract. var StdStorageSafeMetaData = &bind.MetaData{ ABI: "[{\"type\":\"event\",\"name\":\"SlotFound\",\"inputs\":[{\"name\":\"who\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"fsig\",\"type\":\"bytes4\",\"indexed\":false,\"internalType\":\"bytes4\"},{\"name\":\"keysHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"slot\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WARNING_UninitedSlot\",\"inputs\":[{\"name\":\"who\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"slot\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false}]", - Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122048cda6f547459a7291cf126c8fb7ff6e29cb721daae12eb3a09f05535af8044364736f6c63430008150033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d6473a3e455f11b00943e19d62d02cf957dec4d27a7a7ddb023bf40264d580b064736f6c634300081a0033", } // StdStorageSafeABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/stdstyle.sol/stdstyle.go b/v2/pkg/stdstyle.sol/stdstyle.go index 80a387cd..eb95e3b4 100644 --- a/v2/pkg/stdstyle.sol/stdstyle.go +++ b/v2/pkg/stdstyle.sol/stdstyle.go @@ -32,7 +32,7 @@ var ( // StdStyleMetaData contains all meta data concerning the StdStyle contract. var StdStyleMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200065cba4c3c1f420276120f6ca40e660b79a6e68efcf0fcce90a934405f63cf264736f6c63430008150033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ff3fd92fb4330d8d19bf3565d826668fa619fe94dea7a426c09740b32ee4ad4064736f6c634300081a0033", } // StdStyleABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/stdtoml.sol/stdtoml.go b/v2/pkg/stdtoml.sol/stdtoml.go index f83a8f4d..c7070f77 100644 --- a/v2/pkg/stdtoml.sol/stdtoml.go +++ b/v2/pkg/stdtoml.sol/stdtoml.go @@ -32,7 +32,7 @@ var ( // StdTomlMetaData contains all meta data concerning the StdToml contract. var StdTomlMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208810c61eedad925abe9d413f0ca55ba0a8f217299e002f75a1f03219a31d1a7e64736f6c63430008150033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200e6fd7bb4f16b85832d27bbaf8945cb753ed6020be4e37073412dfad300f7ee364736f6c634300081a0033", } // StdTomlABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/storageslot.sol/storageslot.go b/v2/pkg/storageslot.sol/storageslot.go index 5218dd64..ffda8eee 100644 --- a/v2/pkg/storageslot.sol/storageslot.go +++ b/v2/pkg/storageslot.sol/storageslot.go @@ -32,7 +32,7 @@ var ( // StorageSlotMetaData contains all meta data concerning the StorageSlot contract. var StorageSlotMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208c9f904f8ddf0db4e113727d6881c151285aabff57ba790669d78c624ad843b264736f6c63430008150033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f8376f88baaa046b0f89f3d37bf1f097ead0f7d4c8342299a4b9e6559b34d1f264736f6c634300081a0033", } // StorageSlotABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/strings.sol/strings.go b/v2/pkg/strings.sol/strings.go index adf30b51..521fc2ad 100644 --- a/v2/pkg/strings.sol/strings.go +++ b/v2/pkg/strings.sol/strings.go @@ -32,7 +32,7 @@ var ( // StringsMetaData contains all meta data concerning the Strings contract. var StringsMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205addb6563be18cab087d9fbb33e8a93b22036e4b9d3bff1d63d970e519a9c2e564736f6c63430008150033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202c3a0534d126407a2aa867545b37fdc259ccf2da7dbce92eea53d690507d9d5d64736f6c634300081a0033", } // StringsABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/systemcontract.sol/systemcontract.go b/v2/pkg/systemcontract.sol/systemcontract.go index 69da9886..1a9415b5 100644 --- a/v2/pkg/systemcontract.sol/systemcontract.go +++ b/v2/pkg/systemcontract.sol/systemcontract.go @@ -39,7 +39,7 @@ type ZContext struct { // SystemContractMetaData contains all meta data concerning the SystemContract contract. var SystemContractMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"wzeta_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"uniswapv2Factory_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"uniswapv2Router02_\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"FUNGIBLE_MODULE_ADDRESS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"depositAndCall\",\"inputs\":[{\"name\":\"context\",\"type\":\"tuple\",\"internalType\":\"structzContext\",\"components\":[{\"name\":\"origin\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"gasCoinZRC20ByChainId\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"gasPriceByChainId\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"gasZetaPoolByChainId\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setConnectorZEVMAddress\",\"inputs\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setGasCoinZRC20\",\"inputs\":[{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setGasPrice\",\"inputs\":[{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"price\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setGasZetaPool\",\"inputs\":[{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"erc20\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setWZETAContractAddress\",\"inputs\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"uniswapv2FactoryAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"uniswapv2PairFor\",\"inputs\":[{\"name\":\"factory\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"tokenA\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"tokenB\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"pair\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"uniswapv2Router02Address\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"wZetaContractAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"zetaConnectorZEVMAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"SetConnectorZEVM\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SetGasCoin\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SetGasPrice\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SetGasZetaPool\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SetWZeta\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SystemContractDeployed\",\"inputs\":[],\"anonymous\":false},{\"type\":\"error\",\"name\":\"CallerIsNotFungibleModule\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CantBeIdenticalAddresses\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CantBeZeroAddress\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTarget\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x60c060405234801561001057600080fd5b5060405161106938038061106983398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f1f61014a60003960006101e50152600081816102b9015261045b0152610f1f6000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d4d565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d90565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610dfb565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff80821115610cb457600080fd5b908801906060828b031215610cc857600080fd5b819750610cd760208a01610bea565b965060408901359550610cec60608a01610bea565b94506080890135915080821115610d0257600080fd5b818901915089601f830112610d1657600080fd5b813581811115610d2557600080fd5b8a6020828501011115610d3757600080fd5b6020830194508093505050509295509295509295565b600080600060608486031215610d6257600080fd5b610d6b84610bea565b9250610d7960208501610bea565b9150610d8760408501610bea565b90509250925092565b600060208284031215610da257600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3357600080fd5b870160208101903567ffffffffffffffff811115610e5057600080fd5b803603821315610e5f57600080fd5b60606080850152610e7460e085018284610db2565b91505073ffffffffffffffffffffffffffffffffffffffff610e9860208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610edd818587610db2565b9897505050505050505056fea264697066735822122038e4bf7dcb062e1e18216d9535ed07d4a620437f10b3da9f85a81c208884ef7264736f6c63430008150033", + Bin: "0x60c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea264697066735822122017543d2c8189b581ace78b1ea401266087d4800c1923634417b929e7efd8a9b764736f6c634300081a0033", } // SystemContractABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/systemcontractmock.sol/systemcontractmock.go b/v2/pkg/systemcontractmock.sol/systemcontractmock.go index 8a90d9ed..4efd47d9 100644 --- a/v2/pkg/systemcontractmock.sol/systemcontractmock.go +++ b/v2/pkg/systemcontractmock.sol/systemcontractmock.go @@ -32,7 +32,7 @@ var ( // SystemContractMockMetaData contains all meta data concerning the SystemContractMock contract. var SystemContractMockMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"wzeta_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"uniswapv2Factory_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"uniswapv2Router02_\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"gasCoinZRC20ByChainId\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"gasPriceByChainId\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"gasZetaPoolByChainId\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"onCrossChainCall\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setGasCoinZRC20\",\"inputs\":[{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setGasPrice\",\"inputs\":[{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"price\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setWZETAContractAddress\",\"inputs\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"uniswapv2FactoryAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"uniswapv2PairFor\",\"inputs\":[{\"name\":\"factory\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"tokenA\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"tokenB\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"pair\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"uniswapv2Router02Address\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"wZetaContractAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"SetGasCoin\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SetGasPrice\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SetGasZetaPool\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SetWZeta\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SystemContractDeployed\",\"inputs\":[],\"anonymous\":false},{\"type\":\"error\",\"name\":\"CallerIsNotFungibleModule\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CantBeIdenticalAddresses\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CantBeZeroAddress\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTarget\",\"inputs\":[]}]", - Bin: "0x608060405234801561001057600080fd5b50604051610b42380380610b4283398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a378061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fb565b6103a0565b6101416101da36600461081d565b610419565b6101046101ed36600461083f565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610882565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108ae565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e906103669084908990899089908990600401610919565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff808211156107b357600080fd5b818801915088601f8301126107c757600080fd5b8135818111156107d657600080fd5b8960208285010111156107e857600080fd5b9699959850939650602001949392505050565b60006020828403121561080d57600080fd5b61081682610737565b9392505050565b6000806040838503121561083057600080fd5b50508035926020909101359150565b60008060006060848603121561085457600080fd5b61085d84610737565b925061086b60208501610737565b915061087960408501610737565b90509250925092565b6000806040838503121561089557600080fd5b823591506108a560208401610737565b90509250929050565b6000602082840312156108c057600080fd5b8151801515811461081657600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610951576020818401810151610100878401015201610933565b50610100915060008282860101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8201168401905060208901516109b060a086018273ffffffffffffffffffffffffffffffffffffffff169052565b50604089015160c085015273ffffffffffffffffffffffffffffffffffffffff88166020850152866040850152818482030160608501526109f482820186886108d0565b999850505050505050505056fea2646970667358221220d405fb7f3635781dc44a764c4ab0ab7a8b6dd42a7c2e19946b702fe5f711c84e64736f6c63430008150033", + Bin: "0x608060405234801561001057600080fd5b50604051610b3f380380610b3f83398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a348061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fd565b6103a0565b6101416101da36600461081f565b610419565b6101046101ed366004610841565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610884565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108b0565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e90610366908490899089908990899060040161091b565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff8111156107b257600080fd5b8601601f810188136107c357600080fd5b803567ffffffffffffffff8111156107da57600080fd5b8860208284010111156107ec57600080fd5b959894975092955050506020019190565b60006020828403121561080f57600080fd5b61081882610737565b9392505050565b6000806040838503121561083257600080fd5b50508035926020909101359150565b60008060006060848603121561085657600080fd5b61085f84610737565b925061086d60208501610737565b915061087b60408501610737565b90509250925092565b6000806040838503121561089757600080fd5b823591506108a760208401610737565b90509250929050565b6000602082840312156108c257600080fd5b8151801515811461081857600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610953576020818401810151610100878401015201610935565b5060008482016101000152602089015173ffffffffffffffffffffffffffffffffffffffff811660a0860152601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168401915050604088015160c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401526101008382030160608401526109f2610100820185876108d2565b9897505050505050505056fea2646970667358221220fbd69f8a6a30bdc247946500ad2bb4f7e9f585a260ef649595b89d427fb12f2064736f6c634300081a0033", } // SystemContractMockABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/testerc20.sol/testerc20.go b/v2/pkg/testerc20.sol/testerc20.go index 61a0265b..aa9751ba 100644 --- a/v2/pkg/testerc20.sol/testerc20.go +++ b/v2/pkg/testerc20.sol/testerc20.go @@ -32,7 +32,7 @@ var ( // TestERC20MetaData contains all meta data concerning the TestERC20 contract. var TestERC20MetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"symbol\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"allowance\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approve\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"balanceOf\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"decimals\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"mint\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"name\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"symbol\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"totalSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transfer\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferFrom\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Approval\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Transfer\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ERC20InsufficientAllowance\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"allowance\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"needed\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"ERC20InsufficientBalance\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"balance\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"needed\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"ERC20InvalidApprover\",\"inputs\":[{\"name\":\"approver\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC20InvalidReceiver\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC20InvalidSender\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC20InvalidSpender\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"}]}]", - Bin: "0x60806040523480156200001157600080fd5b5060405162000cca38038062000cca833981016040819052620000349162000123565b818160036200004483826200021c565b5060046200005382826200021c565b5050505050620002e8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008657600080fd5b81516001600160401b0380821115620000a357620000a36200005e565b604051601f8301601f19908116603f01168101908282118183101715620000ce57620000ce6200005e565b81604052838152602092508683858801011115620000eb57600080fd5b600091505b838210156200010f5785820183015181830184015290820190620000f0565b600093810190920192909252949350505050565b600080604083850312156200013757600080fd5b82516001600160401b03808211156200014f57600080fd5b6200015d8683870162000074565b935060208501519150808211156200017457600080fd5b50620001838582860162000074565b9150509250929050565b600181811c90821680620001a257607f821691505b602082108103620001c357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021757600081815260208120601f850160051c81016020861015620001f25750805b601f850160051c820191505b818110156200021357828155600101620001fe565b5050505b505050565b81516001600160401b038111156200023857620002386200005e565b62000250816200024984546200018d565b84620001c9565b602080601f8311600181146200028857600084156200026f5750858301515b600019600386901b1c1916600185901b17855562000213565b600085815260208120601f198616915b82811015620002b95788860151825594840194600190910190840162000298565b5085821015620002d85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6109d280620002f86000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108ba565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dc565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f39061090f565b80601f016020809104026020016040519081016040528092919081815260200182805461021f9061090f565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f39061090f565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610962565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b600060208083528351808285015260005b818110156107ec578581018301518582016040015282016107d0565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b9150604084013590509250925092565b6000602082840312156108cc57600080fd5b6108d58261082b565b9392505050565b600080604083850312156108ef57600080fd5b6108f88361082b565b91506109066020840161082b565b90509250929050565b600181811c9082168061092357607f821691505b60208210810361095c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220556869bd33d6741656e444b7d99e56e0c3a9495b8426ba227d4f4af169660e8264736f6c63430008150033", + Bin: "0x608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a0033", } // TestERC20ABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/testzcontract.sol/testzcontract.go b/v2/pkg/testzcontract.sol/testzcontract.go index f1d6a8cb..81bfb866 100644 --- a/v2/pkg/testzcontract.sol/testzcontract.go +++ b/v2/pkg/testzcontract.sol/testzcontract.go @@ -46,7 +46,7 @@ type ZContext struct { // TestZContractMetaData contains all meta data concerning the TestZContract contract. var TestZContractMetaData = &bind.MetaData{ ABI: "[{\"type\":\"fallback\",\"stateMutability\":\"payable\"},{\"type\":\"receive\",\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"onCrossChainCall\",\"inputs\":[{\"name\":\"context\",\"type\":\"tuple\",\"internalType\":\"structzContext\",\"components\":[{\"name\":\"origin\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"onRevert\",\"inputs\":[{\"name\":\"context\",\"type\":\"tuple\",\"internalType\":\"structrevertContext\",\"components\":[{\"name\":\"origin\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"zrc20\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"message\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"ContextData\",\"inputs\":[{\"name\":\"origin\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"msgSender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ContextDataRevert\",\"inputs\":[{\"name\":\"origin\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"chainID\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"msgSender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"message\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false}]", - Bin: "0x608060405234801561001057600080fd5b506104c4806100206000396000f3fe60806040526004361061002a5760003560e01c806369582bee14610033578063de43156e1461005357005b3661003157005b005b34801561003f57600080fd5b5061003161004e3660046101ba565b610073565b34801561005f57600080fd5b5061003161006e3660046101ba565b6100ee565b6060811561008a576100878284018461026e565b90505b7ffdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e999486100b5878061033d565b6100c560408a0160208b016103a2565b896040013533866040516100de969594939291906103c4565b60405180910390a1505050505050565b60608115610105576101028284018461026e565b90505b7fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e6100b5878061033d565b60006060828403121561014257600080fd5b50919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461016c57600080fd5b919050565b60008083601f84011261018357600080fd5b50813567ffffffffffffffff81111561019b57600080fd5b6020830191508360208285010111156101b357600080fd5b9250929050565b6000806000806000608086880312156101d257600080fd5b853567ffffffffffffffff808211156101ea57600080fd5b6101f689838a01610130565b965061020460208901610148565b955060408801359450606088013591508082111561022157600080fd5b5061022e88828901610171565b969995985093965092949392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561028057600080fd5b813567ffffffffffffffff8082111561029857600080fd5b818401915084601f8301126102ac57600080fd5b8135818111156102be576102be61023f565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156103045761030461023f565b8160405282815287602084870101111561031d57600080fd5b826020860160208301376000928101602001929092525095945050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261037257600080fd5b83018035915067ffffffffffffffff82111561038d57600080fd5b6020019150368190038213156101b357600080fd5b6000602082840312156103b457600080fd5b6103bd82610148565b9392505050565b60a081528560a0820152858760c0830137600060c0878301015260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe080601f8901168301602073ffffffffffffffffffffffffffffffffffffffff808a168287015288604087015280881660608701525060c085830301608086015285518060c084015260005b818110156104685787810183015184820160e00152820161044c565b50600060e0828501015260e084601f83011684010194505050505097965050505050505056fea264697066735822122078d900ecbf3fff2425499bb2eafdc9d45545dc5fea40a7cdc33694659008318c64736f6c63430008150033", + Bin: "0x6080604052348015600f57600080fd5b506105208061001f6000396000f3fe60806040526004361061002a5760003560e01c806369582bee14610033578063de43156e1461005357005b3661003157005b005b34801561003f57600080fd5b5061003161004e3660046101ba565b610073565b34801561005f57600080fd5b5061003161006e3660046101ba565b6100ee565b6060811561008a5761008782840184610273565b90505b7ffdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e999486100b58780610369565b6100c560408a0160208b016103ce565b896040013533866040516100de969594939291906103f0565b60405180910390a1505050505050565b606081156101055761010282840184610273565b90505b7fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e6100b58780610369565b60006060828403121561014257600080fd5b50919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461016c57600080fd5b919050565b60008083601f84011261018357600080fd5b50813567ffffffffffffffff81111561019b57600080fd5b6020830191508360208285010111156101b357600080fd5b9250929050565b6000806000806000608086880312156101d257600080fd5b853567ffffffffffffffff8111156101e957600080fd5b6101f588828901610130565b95505061020460208701610148565b935060408601359250606086013567ffffffffffffffff81111561022757600080fd5b61023388828901610171565b969995985093965092949392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561028557600080fd5b813567ffffffffffffffff81111561029c57600080fd5b8201601f810184136102ad57600080fd5b803567ffffffffffffffff8111156102c7576102c7610244565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561033357610333610244565b60405281815282820160200186101561034b57600080fd5b81602084016020830137600091810160200191909152949350505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261039e57600080fd5b83018035915067ffffffffffffffff8211156103b957600080fd5b6020019150368190038213156101b357600080fd5b6000602082840312156103e057600080fd5b6103e982610148565b9392505050565b60a081528560a0820152858760c0830137600060c0878301015260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f880116820173ffffffffffffffffffffffffffffffffffffffff8716602084015285604084015273ffffffffffffffffffffffffffffffffffffffff8516606084015260c083820301608084015283518060c083015260005b818110156104a557602081870181015184830160e0015201610488565b50600060e0838301810191909152601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016909101019897505050505050505056fea2646970667358221220f4d1ccb9c8450e782e1c77412473fd37637a5c83a2a3272307d8c8bc8e8c7a3364736f6c634300081a0033", } // TestZContractABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/transparentupgradeableproxy.sol/transparentupgradeableproxy.go b/v2/pkg/transparentupgradeableproxy.sol/transparentupgradeableproxy.go index 3e7c628f..8daf55df 100644 --- a/v2/pkg/transparentupgradeableproxy.sol/transparentupgradeableproxy.go +++ b/v2/pkg/transparentupgradeableproxy.sol/transparentupgradeableproxy.go @@ -32,7 +32,7 @@ var ( // TransparentUpgradeableProxyMetaData contains all meta data concerning the TransparentUpgradeableProxy contract. var TransparentUpgradeableProxyMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_logic\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"payable\"},{\"type\":\"fallback\",\"stateMutability\":\"payable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC1967InvalidAdmin\",\"inputs\":[{\"name\":\"admin\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC1967InvalidImplementation\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC1967NonPayable\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ProxyDeniedAdminAccess\",\"inputs\":[]}]", - Bin: "0x60a060405260405162001169380380620011698339810160408190526200002691620003cd565b82816200003482826200009c565b505081604051620000459062000366565b6001600160a01b039091168152602001604051809103906000f08015801562000072573d6000803e3d6000fd5b506001600160a01b0316608052620000936200008d60805190565b62000102565b505050620004cb565b620000a78262000174565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115620000f457620000ef8282620001f4565b505050565b620000fe62000271565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6200014460008051602062001149833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a1620001718162000293565b50565b806001600160a01b03163b600003620001b057604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080846001600160a01b031684604051620002139190620004ad565b600060405180830381855af49150503d806000811462000250576040519150601f19603f3d011682016040523d82523d6000602084013e62000255565b606091505b50909250905062000268858383620002d6565b95945050505050565b3415620002915760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b038116620002bf57604051633173bdd160e11b815260006004820152602401620001a7565b8060008051602062001149833981519152620001d3565b606082620002ef57620002e9826200033c565b62000335565b81511580156200030757506001600160a01b0384163b155b156200033257604051639996b31560e01b81526001600160a01b0385166004820152602401620001a7565b50805b9392505050565b8051156200034d5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b61065d8062000aec83390190565b80516001600160a01b03811681146200038c57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620003c4578181015183820152602001620003aa565b50506000910152565b600080600060608486031215620003e357600080fd5b620003ee8462000374565b9250620003fe6020850162000374565b60408501519092506001600160401b03808211156200041c57600080fd5b818601915086601f8301126200043157600080fd5b81518181111562000446576200044662000391565b604051601f8201601f19908116603f0116810190838211818310171562000471576200047162000391565b816040528281528960208487010111156200048b57600080fd5b6200049e836020830160208801620003a7565b80955050505050509250925092565b60008251620004c1818460208701620003a7565b9190910192915050565b608051610606620004e66000396000601001526106066000f3fe608060405261000c61000e565b005b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1633036100d2576000357fffffffff00000000000000000000000000000000000000000000000000000000167f4f1ef28600000000000000000000000000000000000000000000000000000000146100c8576040517fd2b576ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6100d06100da565b565b6100d0610109565b6000806100ea366004818461044d565b8101906100f791906104a6565b915091506101058282610119565b5050565b6100d0610114610181565b6101c6565b610122826101ea565b60405173ffffffffffffffffffffffffffffffffffffffff8316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156101795761017482826102be565b505050565b610105610341565b60006101c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e8080156101e5573d6000f35b3d6000fd5b8073ffffffffffffffffffffffffffffffffffffffff163b600003610258576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60606000808473ffffffffffffffffffffffffffffffffffffffff16846040516102e891906105a1565b600060405180830381855af49150503d8060008114610323576040519150601f19603f3d011682016040523d82523d6000602084013e610328565b606091505b5091509150610338858383610379565b95945050505050565b34156100d0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608261038e576103898261040b565b610404565b81511580156103b2575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610401576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161024f565b50805b9392505050565b80511561041b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808585111561045d57600080fd5b8386111561046a57600080fd5b5050820193919092039150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156104b957600080fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146104dd57600080fd5b9150602083013567ffffffffffffffff808211156104fa57600080fd5b818501915085601f83011261050e57600080fd5b81358181111561052057610520610477565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561056657610566610477565b8160405282815288602084870101111561057f57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000825160005b818110156105c257602081860181015185830152016105a8565b50600092019182525091905056fea264697066735822122016f5b54cbe5775f62588e7505acdf25ef7ce05980e702f4e619c20d431a6e0d164736f6c63430008150033608060405234801561001057600080fd5b5060405161065d38038061065d83398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b610560806100fd6000396000f3fe60806040526004361061005a5760003560e01c80639623609d116100435780639623609d146100b0578063ad3cb1cc146100c3578063f2fde38b1461011957600080fd5b8063715018a61461005f5780638da5cb5b14610076575b600080fd5b34801561006b57600080fd5b50610074610139565b005b34801561008257600080fd5b5060005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100746100be366004610364565b61014d565b3480156100cf57600080fd5b5061010c6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100a791906104bc565b34801561012557600080fd5b506100746101343660046104d6565b6101e2565b61014161024b565b61014b600061029e565b565b61015561024b565b6040517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690634f1ef2869034906101ab90869086906004016104f3565b6000604051808303818588803b1580156101c457600080fd5b505af11580156101d8573d6000803e3d6000fd5b5050505050505050565b6101ea61024b565b73ffffffffffffffffffffffffffffffffffffffff811661023f576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6102488161029e565b50565b60005473ffffffffffffffffffffffffffffffffffffffff16331461014b576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610236565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff8116811461024857600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060006060848603121561037957600080fd5b833561038481610313565b9250602084013561039481610313565b9150604084013567ffffffffffffffff808211156103b157600080fd5b818601915086601f8301126103c557600080fd5b8135818111156103d7576103d7610335565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561041d5761041d610335565b8160405282815289602084870101111561043657600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000815180845260005b8181101561047e57602081850181015186830182015201610462565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006104cf6020830184610458565b9392505050565b6000602082840312156104e857600080fd5b81356104cf81610313565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006105226040830184610458565b94935050505056fea264697066735822122044608d1d803528cefebfe1257cad5290b32192fb478f6905d50044aec0ab2ef664736f6c63430008150033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103", + Bin: "0x60a060405260405161117a38038061117a8339810160408190526100229161039d565b828161002e828261008f565b50508160405161003d9061033a565b6001600160a01b039091168152602001604051809103906000f080158015610069573d6000803e3d6000fd5b506001600160a01b031660805261008761008260805190565b6100ee565b50505061048f565b6100988261015c565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156100e2576100dd82826101db565b505050565b6100ea610252565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61012e60008051602061115a833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a161015981610273565b50565b806001600160a01b03163b60000361019757604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080846001600160a01b0316846040516101f89190610473565b600060405180830381855af49150503d8060008114610233576040519150601f19603f3d011682016040523d82523d6000602084013e610238565b606091505b5090925090506102498583836102b2565b95945050505050565b34156102715760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b03811661029d57604051633173bdd160e11b81526000600482015260240161018e565b8060008051602061115a8339815191526101ba565b6060826102c7576102c282610311565b61030a565b81511580156102de57506001600160a01b0384163b155b1561030757604051639996b31560e01b81526001600160a01b038516600482015260240161018e565b50805b9392505050565b8051156103215780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b61068480610ad683390190565b80516001600160a01b038116811461035e57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561039457818101518382015260200161037c565b50506000910152565b6000806000606084860312156103b257600080fd5b6103bb84610347565b92506103c960208501610347565b60408501519092506001600160401b038111156103e557600080fd5b8401601f810186136103f657600080fd5b80516001600160401b0381111561040f5761040f610363565b604051601f8201601f19908116603f011681016001600160401b038111828210171561043d5761043d610363565b60405281815282820160200188101561045557600080fd5b610466826020830160208601610379565b8093505050509250925092565b60008251610485818460208701610379565b9190910192915050565b60805161062d6104a960003960006010015261062d6000f3fe608060405261000c61000e565b005b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1633036100d2576000357fffffffff00000000000000000000000000000000000000000000000000000000167f4f1ef28600000000000000000000000000000000000000000000000000000000146100c8576040517fd2b576ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6100d06100da565b565b6100d0610109565b6000806100ea366004818461044d565b8101906100f791906104a6565b915091506101058282610119565b5050565b6100d0610114610181565b6101c6565b610122826101ea565b60405173ffffffffffffffffffffffffffffffffffffffff8316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156101795761017482826102be565b505050565b610105610341565b60006101c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e8080156101e5573d6000f35b3d6000fd5b8073ffffffffffffffffffffffffffffffffffffffff163b600003610258576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60606000808473ffffffffffffffffffffffffffffffffffffffff16846040516102e891906105c8565b600060405180830381855af49150503d8060008114610323576040519150601f19603f3d011682016040523d82523d6000602084013e610328565b606091505b5091509150610338858383610379565b95945050505050565b34156100d0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608261038e576103898261040b565b610404565b81511580156103b2575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610401576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161024f565b50805b9392505050565b80511561041b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808585111561045d57600080fd5b8386111561046a57600080fd5b5050820193919092039150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156104b957600080fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146104dd57600080fd5b9150602083013567ffffffffffffffff8111156104f957600080fd5b8301601f8101851361050a57600080fd5b803567ffffffffffffffff81111561052457610524610477565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561059057610590610477565b6040528181528282016020018710156105a857600080fd5b816020840160208301376000602083830101528093505050509250929050565b6000825160005b818110156105e957602081860181015185830152016105cf565b50600092019182525091905056fea2646970667358221220fd77e8da75db1db8869da9f85c4ad64fb3db9f30cb52edf1c23c9afbda1e8dc664736f6c634300081a0033608060405234801561001057600080fd5b5060405161068438038061068483398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b610587806100fd6000396000f3fe60806040526004361061005a5760003560e01c80639623609d116100435780639623609d146100b0578063ad3cb1cc146100c3578063f2fde38b1461011957600080fd5b8063715018a61461005f5780638da5cb5b14610076575b600080fd5b34801561006b57600080fd5b50610074610139565b005b34801561008257600080fd5b5060005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100746100be366004610364565b61014d565b3480156100cf57600080fd5b5061010c6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100a791906104e3565b34801561012557600080fd5b506100746101343660046104fd565b6101e2565b61014161024b565b61014b600061029e565b565b61015561024b565b6040517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690634f1ef2869034906101ab908690869060040161051a565b6000604051808303818588803b1580156101c457600080fd5b505af11580156101d8573d6000803e3d6000fd5b5050505050505050565b6101ea61024b565b73ffffffffffffffffffffffffffffffffffffffff811661023f576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6102488161029e565b50565b60005473ffffffffffffffffffffffffffffffffffffffff16331461014b576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610236565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff8116811461024857600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060006060848603121561037957600080fd5b833561038481610313565b9250602084013561039481610313565b9150604084013567ffffffffffffffff8111156103b057600080fd5b8401601f810186136103c157600080fd5b803567ffffffffffffffff8111156103db576103db610335565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561044757610447610335565b60405281815282820160200188101561045f57600080fd5b816020840160208301376000602083830101528093505050509250925092565b6000815180845260005b818110156104a557602081850181015186830182015201610489565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006104f6602083018461047f565b9392505050565b60006020828403121561050f57600080fd5b81356104f681610313565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000610549604083018461047f565b94935050505056fea2646970667358221220b68ea0eca96d97adca0a037e1efb26b5d3e690e9fbc1913bb4a08e597cfc70f164736f6c634300081a0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103", } // TransparentUpgradeableProxyABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/upgradeablebeacon.sol/upgradeablebeacon.go b/v2/pkg/upgradeablebeacon.sol/upgradeablebeacon.go index 3dcf3435..84321070 100644 --- a/v2/pkg/upgradeablebeacon.sol/upgradeablebeacon.go +++ b/v2/pkg/upgradeablebeacon.sol/upgradeablebeacon.go @@ -32,7 +32,7 @@ var ( // UpgradeableBeaconMetaData contains all meta data concerning the UpgradeableBeacon contract. var UpgradeableBeaconMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"implementation_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"implementation\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"BeaconInvalidImplementation\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"OwnableInvalidOwner\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]}]", - Bin: "0x608060405234801561001057600080fd5b5060405161054538038061054583398101604081905261002f91610165565b806001600160a01b03811661005f57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61006881610079565b50610072826100c9565b5050610198565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b806001600160a01b03163b6000036100ff5760405163211eb15960e21b81526001600160a01b0382166004820152602401610056565b600180546001600160a01b0319166001600160a01b0383169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b80516001600160a01b038116811461016057600080fd5b919050565b6000806040838503121561017857600080fd5b61018183610149565b915061018f60208401610149565b90509250929050565b61039e806101a76000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c8063715018a611610050578063715018a6146100c45780638da5cb5b146100cc578063f2fde38b146100ea57600080fd5b80633659cfe61461006c5780635c60da1b14610081575b600080fd5b61007f61007a36600461032b565b6100fd565b005b60015473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61007f610111565b60005473ffffffffffffffffffffffffffffffffffffffff1661009b565b61007f6100f836600461032b565b610125565b61010561018b565b61010e816101de565b50565b61011961018b565b61012360006102b6565b565b61012d61018b565b73ffffffffffffffffffffffffffffffffffffffff8116610182576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61010e816102b6565b60005473ffffffffffffffffffffffffffffffffffffffff163314610123576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610179565b8073ffffffffffffffffffffffffffffffffffffffff163b600003610247576040517f847ac56400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610179565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561033d57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461036157600080fd5b939250505056fea2646970667358221220a6dab1f973ded27d617fc64697eb33779ed8eb868eda626c5d5422a06fd4881564736f6c63430008150033", + Bin: "0x608060405234801561001057600080fd5b5060405161054538038061054583398101604081905261002f91610165565b806001600160a01b03811661005f57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61006881610079565b50610072826100c9565b5050610198565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b806001600160a01b03163b6000036100ff5760405163211eb15960e21b81526001600160a01b0382166004820152602401610056565b600180546001600160a01b0319166001600160a01b0383169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b80516001600160a01b038116811461016057600080fd5b919050565b6000806040838503121561017857600080fd5b61018183610149565b915061018f60208401610149565b90509250929050565b61039e806101a76000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c8063715018a611610050578063715018a6146100c45780638da5cb5b146100cc578063f2fde38b146100ea57600080fd5b80633659cfe61461006c5780635c60da1b14610081575b600080fd5b61007f61007a36600461032b565b6100fd565b005b60015473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61007f610111565b60005473ffffffffffffffffffffffffffffffffffffffff1661009b565b61007f6100f836600461032b565b610125565b61010561018b565b61010e816101de565b50565b61011961018b565b61012360006102b6565b565b61012d61018b565b73ffffffffffffffffffffffffffffffffffffffff8116610182576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61010e816102b6565b60005473ffffffffffffffffffffffffffffffffffffffff163314610123576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610179565b8073ffffffffffffffffffffffffffffffffffffffff163b600003610247576040517f847ac56400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610179565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561033d57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461036157600080fd5b939250505056fea264697066735822122063e6ac8c10cb14b9254b2b497f04ed7c7aa519086cae45504282764c66a749f364736f6c634300081a0033", } // UpgradeableBeaconABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/upgrades.sol/unsafeupgrades.go b/v2/pkg/upgrades.sol/unsafeupgrades.go index a9bff72e..77ba4cef 100644 --- a/v2/pkg/upgrades.sol/unsafeupgrades.go +++ b/v2/pkg/upgrades.sol/unsafeupgrades.go @@ -32,7 +32,7 @@ var ( // UnsafeUpgradesMetaData contains all meta data concerning the UnsafeUpgrades contract. var UnsafeUpgradesMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b280c02123bd1c5eae89439ff3f47b3283bafa18209f0960be016d37839b2ec764736f6c63430008150033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a8c6579bef17eaa32858dad8f0a978dbaffc961c79df88bb0e4527ab3c4a8abf64736f6c634300081a0033", } // UnsafeUpgradesABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/upgrades.sol/upgrades.go b/v2/pkg/upgrades.sol/upgrades.go index e155c88a..b70dc9d1 100644 --- a/v2/pkg/upgrades.sol/upgrades.go +++ b/v2/pkg/upgrades.sol/upgrades.go @@ -32,7 +32,7 @@ var ( // UpgradesMetaData contains all meta data concerning the Upgrades contract. var UpgradesMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a6b12b969ae9fb6cb56c854a5bdc30532c9fdd81820a44e1b82c6d49ea0d06e864736f6c63430008150033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122042a8949f763d346efc4ef702a00fdf6609161775b1912f6f50023d3ad26a011c64736f6c634300081a0033", } // UpgradesABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/utils.sol/utils.go b/v2/pkg/utils.sol/utils.go index 5e7f3e98..7996ef18 100644 --- a/v2/pkg/utils.sol/utils.go +++ b/v2/pkg/utils.sol/utils.go @@ -32,7 +32,7 @@ var ( // UtilsMetaData contains all meta data concerning the Utils contract. var UtilsMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204d64ac80898f36caaf84bc8e473d12b5d97f2862e86fd82fb3271eb21e7ca77864736f6c63430008150033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206afe1c95da41d35f78d2d391c1bd30d43de62ada64479615bc7636778f554acd64736f6c634300081a0033", } // UtilsABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/utils/strings.sol/strings.go b/v2/pkg/utils/strings.sol/strings.go index 3def02bc..5c5a03ac 100644 --- a/v2/pkg/utils/strings.sol/strings.go +++ b/v2/pkg/utils/strings.sol/strings.go @@ -32,7 +32,7 @@ var ( // StringsMetaData contains all meta data concerning the Strings contract. var StringsMetaData = &bind.MetaData{ ABI: "[{\"type\":\"error\",\"name\":\"StringsInsufficientHexLength\",\"inputs\":[{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"length\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}]", - Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204639ae316351c4708db317d88379ed3d2763ed254aaa5d3f2bbf651899945ef164736f6c63430008150033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220dcce55e68788eb53af38b2c11af076a07cd1e8f2cba23bcb93cbc6cafe3918ef64736f6c634300081a0033", } // StringsABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/versions.sol/versions.go b/v2/pkg/versions.sol/versions.go index b338742a..c8964778 100644 --- a/v2/pkg/versions.sol/versions.go +++ b/v2/pkg/versions.sol/versions.go @@ -32,7 +32,7 @@ var ( // VersionsMetaData contains all meta data concerning the Versions contract. var VersionsMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122077ce145395d623d5759d1202c36f470eed4870772f1830be70f2060ff23e2b7f64736f6c63430008150033", + Bin: "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122090ff21952ff1b506f8e4635b0cb2c5eeb7fc0f5af845cdf577eb795be255d68d64736f6c634300081a0033", } // VersionsABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/wzeta.sol/weth9.go b/v2/pkg/wzeta.sol/weth9.go index acfc94c5..94a2af08 100644 --- a/v2/pkg/wzeta.sol/weth9.go +++ b/v2/pkg/wzeta.sol/weth9.go @@ -32,7 +32,7 @@ var ( // WETH9MetaData contains all meta data concerning the WETH9 contract. var WETH9MetaData = &bind.MetaData{ ABI: "[{\"type\":\"receive\",\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"allowance\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approve\",\"inputs\":[{\"name\":\"guy\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"wad\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"balanceOf\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"decimals\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"name\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"symbol\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"totalSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transfer\",\"inputs\":[{\"name\":\"dst\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"wad\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferFrom\",\"inputs\":[{\"name\":\"src\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"dst\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"wad\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"wad\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Approval\",\"inputs\":[{\"name\":\"src\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"guy\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"wad\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"dst\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"wad\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Transfer\",\"inputs\":[{\"name\":\"src\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"dst\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"wad\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawal\",\"inputs\":[{\"name\":\"src\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"wad\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false}]", - Bin: "0x60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d3565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57600081815260208120601f850160051c810160208610156100ec5750805b601f850160051c820191505b8181101561010b578281556001016100f8565b5050505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b602080601f831160018114610176576000841561015e5750858301515b600019600386901b1c1916600185901b17855561010b565b600085815260208120601f198616915b828110156101a557888601518255948401946001909101908401610186565b50858210156101c35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610985806101e26000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610840565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d3366004610859565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610874565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d6565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108e9565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108e9565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093c565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093c565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d6565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093c565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108e9565b600061073e3384846103bd565b9392505050565b600060208083528351808285015260005b8181101561077257858101830151858201604001528201610756565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b9150604084013590509250925092565b60006020828403121561085257600080fd5b5035919050565b60006020828403121561086b57600080fd5b61073e826107b1565b6000806040838503121561088757600080fd5b610890836107b1565b915061089e602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a7565b600181811c908216806108fd57607f821691505b602082108103610936577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a756fea26469706673582212201fc127b73c19f2c1775b48f5275858b6ddd49d93989841a848b1a4ececbdafd664736f6c63430008150033", + Bin: "0x60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57806000526020600020601f840160051c810160208510156100ec5750805b601f840160051c820191505b8181101561010c57600081556001016100f8565b50505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b6020601f821160018114610175576000831561015d5750848201515b600019600385901b1c1916600184901b17845561010c565b600084815260208120601f198516915b828110156101a55787850151825560209485019460019092019101610185565b50848210156101c35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610986806101e16000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610841565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d336600461085a565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610875565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d7565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108ea565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093d565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093d565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093d565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108ea565b600061073e3384846103bd565b9392505050565b602081526000825180602084015260005b818110156107735760208186018101516040868401015201610756565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b929592945050506040919091013590565b60006020828403121561085357600080fd5b5035919050565b60006020828403121561086c57600080fd5b61073e826107b1565b6000806040838503121561088857600080fd5b610891836107b1565b915061089f602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a8565b600181811c908216806108fe57607f821691505b602082108103610937577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a856fea264697066735822122008d7fc4e09519c5dd9f356b03596f6829a151d0bc7682533f9ceab4e459f5ee264736f6c634300081a0033", } // WETH9ABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/zeta.non-eth.sol/zetanoneth.go b/v2/pkg/zeta.non-eth.sol/zetanoneth.go index 505a1dd0..67787ca9 100644 --- a/v2/pkg/zeta.non-eth.sol/zetanoneth.go +++ b/v2/pkg/zeta.non-eth.sol/zetanoneth.go @@ -32,7 +32,7 @@ var ( // ZetaNonEthMetaData contains all meta data concerning the ZetaNonEth contract. var ZetaNonEthMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"tssAddress_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"tssAddressUpdater_\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"allowance\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approve\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"balanceOf\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"burn\",\"inputs\":[{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"burnFrom\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"connectorAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"decimals\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"mint\",\"inputs\":[{\"name\":\"mintee\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"name\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceTssAddressUpdater\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"symbol\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"totalSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transfer\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferFrom\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"tssAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"tssAddressUpdater\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"updateTssAndConnectorAddresses\",\"inputs\":[{\"name\":\"tssAddress_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"connectorAddress_\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Approval\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Burnt\",\"inputs\":[{\"name\":\"burnee\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ConnectorAddressUpdated\",\"inputs\":[{\"name\":\"callerAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newConnectorAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Minted\",\"inputs\":[{\"name\":\"mintee\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TSSAddressUpdated\",\"inputs\":[{\"name\":\"callerAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newTssAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TSSAddressUpdaterUpdated\",\"inputs\":[{\"name\":\"callerAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newTssUpdaterAddress\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Transfer\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"CallerIsNotConnector\",\"inputs\":[{\"name\":\"caller\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"CallerIsNotTss\",\"inputs\":[{\"name\":\"caller\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"CallerIsNotTssOrUpdater\",\"inputs\":[{\"name\":\"caller\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"CallerIsNotTssUpdater\",\"inputs\":[{\"name\":\"caller\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC20InsufficientAllowance\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"allowance\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"needed\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"ERC20InsufficientBalance\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"balance\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"needed\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"ERC20InvalidApprover\",\"inputs\":[{\"name\":\"approver\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC20InvalidReceiver\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC20InvalidSender\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ERC20InvalidSpender\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"InvalidAddress\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZetaTransferError\",\"inputs\":[]}]", - Bin: "0x60806040523480156200001157600080fd5b50604051620012cc380380620012cc83398101604081905262000034916200011d565b604051806040016040528060048152602001635a65746160e01b815250604051806040016040528060048152602001635a45544160e01b81525081600390816200007f9190620001fa565b5060046200008e8282620001fa565b5050506001600160a01b0382161580620000af57506001600160a01b038116155b15620000ce5760405163e6c4247b60e01b815260040160405180910390fd5b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055620002c6565b80516001600160a01b03811681146200011857600080fd5b919050565b600080604083850312156200013157600080fd5b6200013c8362000100565b91506200014c6020840162000100565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200018057607f821691505b602082108103620001a157634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001f557600081815260208120601f850160051c81016020861015620001d05750805b601f850160051c820191505b81811015620001f157828155600101620001dc565b5050505b505050565b81516001600160401b0381111562000216576200021662000155565b6200022e816200022784546200016b565b84620001a7565b602080601f8311600181146200026657600084156200024d5750858301515b600019600386901b1c1916600185901b178555620001f1565b600085815260208120601f198616915b82811015620002975788860151825594840194600190910190840162000276565b5085821015620002b65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610ff680620002d66000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806342966c68116100b257806379cc679011610081578063a9059cbb11610066578063a9059cbb1461028e578063bff9662a146102a1578063dd62ed3e146102c157600080fd5b806379cc67901461027357806395d89b411461028657600080fd5b806342966c68146102025780635b1125911461021557806370a0823114610235578063779e3b631461026b57600080fd5b80631e458bee116100ee5780631e458bee1461018857806323b872dd1461019b578063313ce567146101ae578063328a01d0146101bd57600080fd5b806306fdde0314610120578063095ea7b31461013e57806315d57fd41461016157806318160ddd14610176575b600080fd5b610128610307565b6040516101359190610d97565b60405180910390f35b61015161014c366004610e2c565b610399565b6040519015158152602001610135565b61017461016f366004610e56565b6103b3565b005b6002545b604051908152602001610135565b610174610196366004610e89565b61057e565b6101516101a9366004610ebc565b610631565b60405160128152602001610135565b6007546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610135565b610174610210366004610ef8565b610655565b6006546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b61017a610243366004610f11565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b610174610662565b610174610281366004610e2c565b610786565b610128610837565b61015161029c366004610e2c565b610846565b6005546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b61017a6102cf366004610e56565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461031690610f33565b80601f016020809104026020016040519081016040528092919081815260200182805461034290610f33565b801561038f5780601f106103645761010080835404028352916020019161038f565b820191906000526020600020905b81548152906001019060200180831161037257829003601f168201915b5050505050905090565b6000336103a7818585610854565b60019150505b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff1633148015906103f3575060065473ffffffffffffffffffffffffffffffffffffffff163314155b15610431576040517fcdfcef970000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82161580610468575073ffffffffffffffffffffffffffffffffffffffff8116155b1561049f576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006805473ffffffffffffffffffffffffffffffffffffffff8481167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316811790935560058054918516919092161790556040805133815260208101929092527fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff910160405180910390a16040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201527f1b9352454524a57a51f24f67dc66d898f616922cd1f7a12d73570ece12b1975c910160405180910390a15050565b60055473ffffffffffffffffffffffffffffffffffffffff1633146105d1576040517f3fe32fba000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b6105db8383610866565b808373ffffffffffffffffffffffffffffffffffffffff167fc263b302aec62d29105026245f19e16f8e0137066ccd4a8bd941f716bd4096bb8460405161062491815260200190565b60405180910390a3505050565b60003361063f8582856108c6565b61064a858585610995565b506001949350505050565b61065f3382610a40565b50565b60075473ffffffffffffffffffffffffffffffffffffffff1633146106b5576040517fe700765e000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b60065473ffffffffffffffffffffffffffffffffffffffff16610704576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600654600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691821790556040805133815260208101929092527f5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0910160405180910390a1565b60055473ffffffffffffffffffffffffffffffffffffffff1633146107d9576040517f3fe32fba000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b6107e38282610a9c565b8173ffffffffffffffffffffffffffffffffffffffff167f919f7e2092ffcc9d09f599be18d8152860b0c054df788a33bc549cdd9d0f15b18260405161082b91815260200190565b60405180910390a25050565b60606004805461031690610f33565b6000336103a7818585610995565b6108618383836001610ab1565b505050565b73ffffffffffffffffffffffffffffffffffffffff82166108b6576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b6108c260008383610bf9565b5050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461098f5781811015610980576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024810182905260448101839052606401610428565b61098f84848484036000610ab1565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166109e5576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8216610a35576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b610861838383610bf9565b73ffffffffffffffffffffffffffffffffffffffff8216610a90576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b6108c282600083610bf9565b610aa78233836108c6565b6108c28282610a40565b73ffffffffffffffffffffffffffffffffffffffff8416610b01576040517fe602df0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8316610b51576040517f94280d6200000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600160209081526040808320938716835292905220829055801561098f578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610beb91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8316610c31578060026000828254610c269190610f86565b90915550610ce39050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610cb7576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024810182905260448101839052606401610428565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff8216610d0c57600280548290039055610d38565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161062491815260200190565b600060208083528351808285015260005b81811015610dc457858101830151858201604001528201610da8565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610e2757600080fd5b919050565b60008060408385031215610e3f57600080fd5b610e4883610e03565b946020939093013593505050565b60008060408385031215610e6957600080fd5b610e7283610e03565b9150610e8060208401610e03565b90509250929050565b600080600060608486031215610e9e57600080fd5b610ea784610e03565b95602085013595506040909401359392505050565b600080600060608486031215610ed157600080fd5b610eda84610e03565b9250610ee860208501610e03565b9150604084013590509250925092565b600060208284031215610f0a57600080fd5b5035919050565b600060208284031215610f2357600080fd5b610f2c82610e03565b9392505050565b600181811c90821680610f4757607f821691505b602082108103610f80577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b808201808211156103ad577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea264697066735822122075757da53dfd0cfcf807dd1a1795d15d86db28578b9d55e9f90cb316a3ceb72764736f6c63430008150033", + Bin: "0x608060405234801561001057600080fd5b506040516112a63803806112a683398101604081905261002f91610110565b604051806040016040528060048152602001635a65746160e01b815250604051806040016040528060048152602001635a45544160e01b815250816003908161007891906101e2565b50600461008582826101e2565b5050506001600160a01b03821615806100a557506001600160a01b038116155b156100c35760405163e6c4247b60e01b815260040160405180910390fd5b600680546001600160a01b039384166001600160a01b031991821617909155600780549290931691161790556102a0565b80516001600160a01b038116811461010b57600080fd5b919050565b6000806040838503121561012357600080fd5b61012c836100f4565b915061013a602084016100f4565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061016d57607f821691505b60208210810361018d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101dd57806000526020600020601f840160051c810160208510156101ba5750805b601f840160051c820191505b818110156101da57600081556001016101c6565b50505b505050565b81516001600160401b038111156101fb576101fb610143565b61020f816102098454610159565b84610193565b6020601f821160018114610243576000831561022b5750848201515b600019600385901b1c1916600184901b1784556101da565b600084815260208120601f198516915b828110156102735787850151825560209485019460019092019101610253565b50848210156102915786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610ff7806102af6000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806342966c68116100b257806379cc679011610081578063a9059cbb11610066578063a9059cbb1461028e578063bff9662a146102a1578063dd62ed3e146102c157600080fd5b806379cc67901461027357806395d89b411461028657600080fd5b806342966c68146102025780635b1125911461021557806370a0823114610235578063779e3b631461026b57600080fd5b80631e458bee116100ee5780631e458bee1461018857806323b872dd1461019b578063313ce567146101ae578063328a01d0146101bd57600080fd5b806306fdde0314610120578063095ea7b31461013e57806315d57fd41461016157806318160ddd14610176575b600080fd5b610128610307565b6040516101359190610d97565b60405180910390f35b61015161014c366004610e2c565b610399565b6040519015158152602001610135565b61017461016f366004610e56565b6103b3565b005b6002545b604051908152602001610135565b610174610196366004610e89565b61057e565b6101516101a9366004610ebc565b610631565b60405160128152602001610135565b6007546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610135565b610174610210366004610ef9565b610655565b6006546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b61017a610243366004610f12565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b610174610662565b610174610281366004610e2c565b610786565b610128610837565b61015161029c366004610e2c565b610846565b6005546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b61017a6102cf366004610e56565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461031690610f34565b80601f016020809104026020016040519081016040528092919081815260200182805461034290610f34565b801561038f5780601f106103645761010080835404028352916020019161038f565b820191906000526020600020905b81548152906001019060200180831161037257829003601f168201915b5050505050905090565b6000336103a7818585610854565b60019150505b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff1633148015906103f3575060065473ffffffffffffffffffffffffffffffffffffffff163314155b15610431576040517fcdfcef970000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82161580610468575073ffffffffffffffffffffffffffffffffffffffff8116155b1561049f576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006805473ffffffffffffffffffffffffffffffffffffffff8481167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316811790935560058054918516919092161790556040805133815260208101929092527fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff910160405180910390a16040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201527f1b9352454524a57a51f24f67dc66d898f616922cd1f7a12d73570ece12b1975c910160405180910390a15050565b60055473ffffffffffffffffffffffffffffffffffffffff1633146105d1576040517f3fe32fba000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b6105db8383610866565b808373ffffffffffffffffffffffffffffffffffffffff167fc263b302aec62d29105026245f19e16f8e0137066ccd4a8bd941f716bd4096bb8460405161062491815260200190565b60405180910390a3505050565b60003361063f8582856108c6565b61064a858585610995565b506001949350505050565b61065f3382610a40565b50565b60075473ffffffffffffffffffffffffffffffffffffffff1633146106b5576040517fe700765e000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b60065473ffffffffffffffffffffffffffffffffffffffff16610704576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600654600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691821790556040805133815260208101929092527f5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0910160405180910390a1565b60055473ffffffffffffffffffffffffffffffffffffffff1633146107d9576040517f3fe32fba000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b6107e38282610a9c565b8173ffffffffffffffffffffffffffffffffffffffff167f919f7e2092ffcc9d09f599be18d8152860b0c054df788a33bc549cdd9d0f15b18260405161082b91815260200190565b60405180910390a25050565b60606004805461031690610f34565b6000336103a7818585610995565b6108618383836001610ab1565b505050565b73ffffffffffffffffffffffffffffffffffffffff82166108b6576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b6108c260008383610bf9565b5050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461098f5781811015610980576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024810182905260448101839052606401610428565b61098f84848484036000610ab1565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166109e5576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8216610a35576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b610861838383610bf9565b73ffffffffffffffffffffffffffffffffffffffff8216610a90576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b6108c282600083610bf9565b610aa78233836108c6565b6108c28282610a40565b73ffffffffffffffffffffffffffffffffffffffff8416610b01576040517fe602df0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8316610b51576040517f94280d6200000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600160209081526040808320938716835292905220829055801561098f578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610beb91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8316610c31578060026000828254610c269190610f87565b90915550610ce39050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610cb7576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024810182905260448101839052606401610428565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff8216610d0c57600280548290039055610d38565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161062491815260200190565b602081526000825180602084015260005b81811015610dc55760208186018101516040868401015201610da8565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610e2757600080fd5b919050565b60008060408385031215610e3f57600080fd5b610e4883610e03565b946020939093013593505050565b60008060408385031215610e6957600080fd5b610e7283610e03565b9150610e8060208401610e03565b90509250929050565b600080600060608486031215610e9e57600080fd5b610ea784610e03565b95602085013595506040909401359392505050565b600080600060608486031215610ed157600080fd5b610eda84610e03565b9250610ee860208501610e03565b929592945050506040919091013590565b600060208284031215610f0b57600080fd5b5035919050565b600060208284031215610f2457600080fd5b610f2d82610e03565b9392505050565b600181811c90821680610f4857607f821691505b602082108103610f81577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b808201808211156103ad577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220085f01204b33dc17013c78c74fbca32a3da2c0b384ce7c8878c889551af28c6164736f6c634300081a0033", } // ZetaNonEthABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/zetaconnectornative.sol/zetaconnectornative.go b/v2/pkg/zetaconnectornative.sol/zetaconnectornative.go index a794a071..ac4fff8e 100644 --- a/v2/pkg/zetaconnectornative.sol/zetaconnectornative.go +++ b/v2/pkg/zetaconnectornative.sol/zetaconnectornative.go @@ -32,7 +32,7 @@ var ( // ZetaConnectorNativeMetaData contains all meta data concerning the ZetaConnectorNative contract. var ZetaConnectorNativeMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_gateway\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_zetaToken\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_tssAddress\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"gateway\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIGatewayEVM\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"receiveTokens\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"tssAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndRevert\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"zetaToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndRevert\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x60c060405234801561001057600080fd5b50604051610d72380380610d7283398101604081905261002f916100d2565b60016000558282826001600160a01b038316158061005457506001600160a01b038216155b8061006657506001600160a01b038116155b156100845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b0319169190921617905550610115915050565b80516001600160a01b03811681146100cd57600080fd5b919050565b6000806000606084860312156100e757600080fd5b6100f0846100b6565b92506100fe602085016100b6565b915061010c604085016100b6565b90509250925092565b60805160a051610bf461017e6000396000818160ff015281816101da0152818161028b015281816103c3015281816104bc0152818161056d015261063301526000818160af015281816101fc0152818161025e015281816104de01526105400152610bf46000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100fa5780635b112591146101215780635e3e9fef14610141578063743e0c9b1461015457600080fd5b806302d5c89914610082578063106e629014610097578063116191b6146100aa575b600080fd5b6100956100903660046109db565b610167565b005b6100956100a5366004610a6a565b610350565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6001546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b61009561014f3660046109db565b610449565b610095610162366004610a9d565b610619565b61016f61065e565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101c0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61022173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000866106a1565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd4906102bb907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610aff565b600060405180830381600087803b1580156102d557600080fd5b505af11580156102e9573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe85858560405161033793929190610b4a565b60405180910390a26103496001600055565b5050505050565b61035861065e565b60015473ffffffffffffffffffffffffffffffffffffffff1633146103a9576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103ea73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001684846106a1565b8273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161043291815260200190565b60405180910390a26104446001600055565b505050565b61045161065e565b60015473ffffffffffffffffffffffffffffffffffffffff1633146104a2576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61050373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000866106a1565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab599061059d907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610aff565b600060405180830381600087803b1580156105b757600080fd5b505af11580156105cb573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced85858560405161033793929190610b4a565b61065b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016333084610722565b50565b60026000540361069a576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b60405173ffffffffffffffffffffffffffffffffffffffff83811660248301526044820183905261044491859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061076e565b60405173ffffffffffffffffffffffffffffffffffffffff84811660248301528381166044830152606482018390526107689186918216906323b872dd906084016106db565b50505050565b600061079073ffffffffffffffffffffffffffffffffffffffff841683610809565b905080516000141580156107b55750808060200190518101906107b39190610b6d565b155b15610444576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606108178383600061081e565b9392505050565b60608147101561085c576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610800565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516108859190610b8f565b60006040518083038185875af1925050503d80600081146108c2576040519150601f19603f3d011682016040523d82523d6000602084013e6108c7565b606091505b50915091506108d78683836108e1565b9695505050505050565b6060826108f6576108f182610970565b610817565b815115801561091a575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610969576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610800565b5080610817565b8051156109805780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff811681146109d657600080fd5b919050565b6000806000806000608086880312156109f357600080fd5b6109fc866109b2565b945060208601359350604086013567ffffffffffffffff80821115610a2057600080fd5b818801915088601f830112610a3457600080fd5b813581811115610a4357600080fd5b896020828501011115610a5557600080fd5b96999598505060200195606001359392505050565b600080600060608486031215610a7f57600080fd5b610a88846109b2565b95602085013595506040909401359392505050565b600060208284031215610aaf57600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015260806060830152610b3f608083018486610ab6565b979650505050505050565b838152604060208201526000610b64604083018486610ab6565b95945050505050565b600060208284031215610b7f57600080fd5b8151801515811461081757600080fd5b6000825160005b81811015610bb05760208186018101518583015201610b96565b50600092019182525091905056fea264697066735822122052ebc340fce499c22446461e21c51f7afe62e51399c68948c29cfe81b240086e64736f6c63430008150033", + Bin: "0x60c060405234801561001057600080fd5b50604051610d87380380610d8783398101604081905261002f916100d2565b60016000558282826001600160a01b038316158061005457506001600160a01b038216155b8061006657506001600160a01b038116155b156100845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b0319169190921617905550610115915050565b80516001600160a01b03811681146100cd57600080fd5b919050565b6000806000606084860312156100e757600080fd5b6100f0846100b6565b92506100fe602085016100b6565b915061010c604085016100b6565b90509250925092565b60805160a051610c0961017e6000396000818160ff015281816101da0152818161028b015281816103c3015281816104bc0152818161056d015261063301526000818160af015281816101fc0152818161025e015281816104de01526105400152610c096000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100fa5780635b112591146101215780635e3e9fef14610141578063743e0c9b1461015457600080fd5b806302d5c89914610082578063106e629014610097578063116191b6146100aa575b600080fd5b6100956100903660046109db565b610167565b005b6100956100a5366004610a6d565b610350565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6001546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b61009561014f3660046109db565b610449565b610095610162366004610aa0565b610619565b61016f61065e565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101c0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61022173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000866106a1565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd4906102bb907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610b02565b600060405180830381600087803b1580156102d557600080fd5b505af11580156102e9573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe85858560405161033793929190610b5f565b60405180910390a26103496001600055565b5050505050565b61035861065e565b60015473ffffffffffffffffffffffffffffffffffffffff1633146103a9576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103ea73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001684846106a1565b8273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161043291815260200190565b60405180910390a26104446001600055565b505050565b61045161065e565b60015473ffffffffffffffffffffffffffffffffffffffff1633146104a2576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61050373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000866106a1565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab599061059d907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610b02565b600060405180830381600087803b1580156105b757600080fd5b505af11580156105cb573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced85858560405161033793929190610b5f565b61065b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016333084610722565b50565b60026000540361069a576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b60405173ffffffffffffffffffffffffffffffffffffffff83811660248301526044820183905261044491859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061076e565b60405173ffffffffffffffffffffffffffffffffffffffff84811660248301528381166044830152606482018390526107689186918216906323b872dd906084016106db565b50505050565b600061079073ffffffffffffffffffffffffffffffffffffffff841683610809565b905080516000141580156107b55750808060200190518101906107b39190610b82565b155b15610444576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606108178383600061081e565b9392505050565b60608147101561085c576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610800565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516108859190610ba4565b60006040518083038185875af1925050503d80600081146108c2576040519150601f19603f3d011682016040523d82523d6000602084013e6108c7565b606091505b50915091506108d78683836108e1565b9695505050505050565b6060826108f6576108f182610970565b610817565b815115801561091a575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610969576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610800565b5080610817565b8051156109805780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff811681146109d657600080fd5b919050565b6000806000806000608086880312156109f357600080fd5b6109fc866109b2565b945060208601359350604086013567ffffffffffffffff811115610a1f57600080fd5b8601601f81018813610a3057600080fd5b803567ffffffffffffffff811115610a4757600080fd5b886020828401011115610a5957600080fd5b959894975060200195606001359392505050565b600080600060608486031215610a8257600080fd5b610a8b846109b2565b95602085013595506040909401359392505050565b600060208284031215610ab257600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff85166020820152836040820152608060608201526000610b54608083018486610ab9565b979650505050505050565b838152604060208201526000610b79604083018486610ab9565b95945050505050565b600060208284031215610b9457600080fd5b8151801515811461081757600080fd5b6000825160005b81811015610bc55760208186018101518583015201610bab565b50600092019182525091905056fea2646970667358221220ed25bc9308ed3d8f9b30e14ddf88cadd2d738ead8bcd8eb8fb89509e51695cd564736f6c634300081a0033", } // ZetaConnectorNativeABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/zetaconnectornative.t.sol/zetaconnectornativetest.go b/v2/pkg/zetaconnectornative.t.sol/zetaconnectornativetest.go index 6fc47362..24ee01fd 100644 --- a/v2/pkg/zetaconnectornative.t.sol/zetaconnectornativetest.go +++ b/v2/pkg/zetaconnectornative.t.sol/zetaconnectornativetest.go @@ -50,7 +50,7 @@ type StdInvariantFuzzSelector struct { // ZetaConnectorNativeTestMetaData contains all meta data concerning the ZetaConnectorNativeTest contract. var ZetaConnectorNativeTestMetaData = &bind.MetaData{ ABI: "[{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"testWithdraw\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallReceiveERC20\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallReceiveERC20FailsIfSenderIsNotTSS\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallReceiveERC20Partial\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndCallReceiveNoParams\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndRevert\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawAndRevertFailsIfSenderIsNotTSS\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"testWithdrawFailsIfSenderIsNotTSS\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedERC20\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"destination\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNoParams\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNonPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strs\",\"type\":\"string[]\",\"indexed\":false,\"internalType\":\"string[]\"},{\"name\":\"nums\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"str\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"num\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedRevert\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndRevert\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x6080604052600c8054600160ff199182168117909255601f805490911690911790553480156200002e57600080fd5b5061c850806200003f6000396000f3fe60806040523480156200001157600080fd5b5060043610620001955760003560e01c8063893f916411620000e9578063ba414fa61162000097578063de1cb76c116200006e578063de1cb76c14620002b5578063e20c9f7114620002bf578063fa7626d414620002c957600080fd5b8063ba414fa61462000286578063d509b16c14620002a1578063dcf7d03714620002ab57600080fd5b8063991a2ab511620000cc578063991a2ab51462000268578063b0464fdc1462000272578063b5508aa9146200027c57600080fd5b8063893f91641462000245578063916a17c6146200024f57600080fd5b80633f7286f4116200014757806357bb1c8f116200012a57806357bb1c8f146200020957806366d9a9a0146200021357806385226c81146200022c57600080fd5b80633f7286f414620001f55780634934655814620001ff57600080fd5b80632ade3880116200017c5780632ade388014620001c85780633cba010714620001e15780633e5e3c2314620001eb57600080fd5b80630a9254e4146200019a5780631ed7831c14620001a6575b600080fd5b620001a4620002d7565b005b620001b062000a2d565b604051620001bf919062007e98565b60405180910390f35b620001d262000a91565b604051620001bf919062007f3b565b620001a462000bdf565b620001b0620013e0565b620001b062001442565b620001a4620014a4565b620001a462001b23565b6200021d62001d21565b604051620001bf91906200809c565b6200023662001eaf565b604051620001bf919062008145565b620001a462001f89565b620002596200214a565b604051620001bf9190620081c9565b620001a462002249565b6200025962002457565b6200023662002556565b6200029062002630565b6040519015158152602001620001bf565b620001a462002708565b620001a462002b32565b620001a46200321a565b620001b06200389f565b601f54620002909060ff1681565b602580547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602680548216611234179055602780549091166156781790556040516200032b9062007da4565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f080158015620003b0573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081178255604080518082018252600e81527f4761746577617945564d2e736f6c000000000000000000000000000000000000602082015260275491519190941692810192909252604482015262000496919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc9550000000000000000000000000000000000000000000000000000000017905262003901565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff00000000000000000000000000000000000000009091168117909155602754604051919216906200051c9062007db2565b6001600160a01b03928316815291166020820152604001604051809103906000f08015801562000550573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556020546024546027546040519284169391821692911690620005a79062007dc0565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015620005e4573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516200062b9062007dce565b604051809103906000f08015801562000648573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556027546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b158015620006f557600080fd5b505af11580156200070a573d6000803e3d6000fd5b50506027546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b1580156200078157600080fd5b505af115801562000796573d6000803e3d6000fd5b50506020546022546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b158015620007fd57600080fd5b505af115801562000812573d6000803e3d6000fd5b50506020546023546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b1580156200087957600080fd5b505af11580156200088e573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620008f157600080fd5b505af115801562000906573d6000803e3d6000fd5b5050602480546023546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152624c4b40938101939093521692506340c10f199150604401600060405180830381600087803b1580156200097857600080fd5b505af11580156200098d573d6000803e3d6000fd5b50506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b15801562000a1257600080fd5b505af115801562000a27573d6000803e3d6000fd5b50505050565b6060601680548060200260200160405190810160405280929190818152602001828054801562000a8757602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000a68575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b8282101562000bd657600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101562000bbe57838290600052602060002001805462000b2a906200825a565b80601f016020809104026020016040519081016040528092919081815260200182805462000b58906200825a565b801562000ba95780601f1062000b7d5761010080835404028352916020019162000ba9565b820191906000526020600020905b81548152906001019060200180831162000b8b57829003601f168201915b50505050508152602001906001019062000b08565b50505050815250508152602001906001019062000ab5565b50505050905090565b60248054602654604051620186a09381018490526001600160a01b03928316604482015291166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a2000000000000000000000000000000000000000000000000000000001790526024805460265492516370a0823160e01b81526001600160a01b0393841660048201529394506000939216916370a082319101602060405180830381865afa15801562000cbb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ce19190620082a9565b905062000cf081600062003924565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa15801562000d41573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d679190620082a9565b6020546040516001600160a01b0390911660248201526044810187905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba39162000e4c916001600160a01b0391909116906000908690600401620082c3565b600060405180830381600087803b15801562000e6757600080fd5b505af115801562000e7c573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801562000f0f57600080fd5b505af115801562000f24573d6000803e3d6000fd5b505060208054602454602654604080516001600160a01b0394851681529485018d905291831684830152919091166060830152517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609350908190036080019150a16023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156200101457600080fd5b505af115801562001029573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced9150620010709089908890620082ed565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620010eb57600080fd5b505af115801562001100573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef93506200115a92909116908a9089908b9060040162008308565b600060405180830381600087803b1580156200117557600080fd5b505af11580156200118a573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a0823191015b602060405180830381865afa158015620011de573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620012049190620082a9565b905062001212818862003924565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa15801562001263573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620012899190620082a9565b9050620012a2816200129c8a8762008372565b62003924565b602480546020546021546040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082169381019390935260009291169063dd62ed3e90604401602060405180830381865afa15801562001319573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200133f9190620082a9565b90506200134e81600062003924565b602480546020546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa1580156200139f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013c59190620082a9565b9050620013d481600062003924565b50505050505050505050565b6060601880548060200260200160405190810160405280929190818152602001828054801562000a87576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000a68575050505050905090565b6060601780548060200260200160405190810160405280929190818152602001828054801562000a87576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000a68575050505050905090565b604080516004808252602480830184526020830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6ed70169000000000000000000000000000000000000000000000000000000001790525460265493516370a0823160e01b8152620186a0946000949385936001600160a01b03908116936370a08231936200154693921691016001600160a01b0391909116815260200190565b602060405180830381865afa15801562001564573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200158a9190620082a9565b90506200159981600062003924565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015620015ea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620016109190620082a9565b6020546040516001600160a01b0390911660248201526044810187905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391620016f5916001600160a01b0391909116906000908690600401620082c3565b600060405180830381600087803b1580156200171057600080fd5b505af115801562001725573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015620017b857600080fd5b505af1158015620017cd573d6000803e3d6000fd5b5050602080546040516001600160a01b0390911681527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0935001905060405180910390a16023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015620018a057600080fd5b505af1158015620018b5573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced9150620018fc9089908890620082ed565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200197757600080fd5b505af11580156200198c573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef9350620019e692909116908a9089908b9060040162008308565b600060405180830381600087803b15801562001a0157600080fd5b505af115801562001a16573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa15801562001a69573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a8f9190620082a9565b905062001a9e81600062003924565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa15801562001aef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b159190620082a9565b9050620012a2818562003924565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a090600090819060250160408051808303601f19018152908290526025547fca669fa70000000000000000000000000000000000000000000000000000000083526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001bda57600080fd5b505af115801562001bef573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b15801562001c7957600080fd5b505af115801562001c8e573d6000803e3d6000fd5b50506023546021546040517f02d5c8990000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506302d5c899935062001ce8929091169087908690889060040162008308565b600060405180830381600087803b15801562001d0357600080fd5b505af115801562001d18573d6000803e3d6000fd5b50505050505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b8282101562000bd6578382906000526020600020906002020160405180604001604052908160008201805462001d7b906200825a565b80601f016020809104026020016040519081016040528092919081815260200182805462001da9906200825a565b801562001dfa5780601f1062001dce5761010080835404028352916020019162001dfa565b820191906000526020600020905b81548152906001019060200180831162001ddc57829003601f168201915b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801562001e9657602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162001e425790505b5050505050815250508152602001906001019062001d45565b6060601a805480602002602001604051908101604052809291908181526020016000905b8282101562000bd657838290600052602060002001805462001ef5906200825a565b80601f016020809104026020016040519081016040528092919081815260200182805462001f23906200825a565b801562001f745780601f1062001f485761010080835404028352916020019162001f74565b820191906000526020600020905b81548152906001019060200180831162001f5657829003601f168201915b50505050508152602001906001019062001ed3565b6025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152620186a090600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200200457600080fd5b505af115801562002019573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015620020a357600080fd5b505af1158015620020b8573d6000803e3d6000fd5b50506023546026546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101879052604481018690529116925063106e62909150606401600060405180830381600087803b1580156200212d57600080fd5b505af115801562002142573d6000803e3d6000fd5b505050505050565b6060601d805480602002602001604051908101604052809291908181526020016000905b8282101562000bd65760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200223057602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620021dc5790505b505050505081525050815260200190600101906200216e565b60248054602654604051620186a09381018490526001600160a01b03928316604482015291166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a20000000000000000000000000000000000000000000000000000000017905260255490517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200234957600080fd5b505af11580156200235e573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015620023e857600080fd5b505af1158015620023fd573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef935062001ce8929091169087908690889060040162008308565b6060601c805480602002602001604051908101604052809291908181526020016000905b8282101562000bd65760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200253d57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620024e95790505b505050505081525050815260200190600101906200247b565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101562000bd65783829060005260206000200180546200259c906200825a565b80601f0160208091040260200160405190810160405280929190818152602001828054620025ca906200825a565b80156200261b5780601f10620025ef576101008083540402835291602001916200261b565b820191906000526020600020905b815481529060010190602001808311620025fd57829003601f168201915b5050505050815260200190600101906200257a565b60085460009060ff161562002649575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015620026db573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620027019190620082a9565b1415905090565b602480546026546040516370a0823160e01b81526001600160a01b039182166004820152620186a093600093849316916370a082319101602060405180830381865afa1580156200275d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620027839190620082a9565b90506200279281600062003924565b6026546040516001600160a01b0390911660248201526044810184905260009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba39162002874916001600160a01b0391909116906000908690600401620082c3565b600060405180830381600087803b1580156200288f57600080fd5b505af1158015620028a4573d6000803e3d6000fd5b50506023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156200293757600080fd5b505af11580156200294c573d6000803e3d6000fd5b50506026546040518781526001600160a01b0390911692507f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364915060200160405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562002a0557600080fd5b505af115801562002a1a573d6000803e3d6000fd5b50506023546026546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101899052604481018890529116925063106e62909150606401600060405180830381600087803b15801562002a8f57600080fd5b505af115801562002aa4573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa15801562002af7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002b1d9190620082a9565b905062002b2b818662003924565b5050505050565b60248054602654604051620186a09381018490526001600160a01b03928316604482015291166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc5131691000000000000000000000000000000000000000000000000000000001790526024805460265492516370a0823160e01b81526001600160a01b0393841660048201529394506000939216916370a082319101602060405180830381865afa15801562002c0e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002c349190620082a9565b905062002c4381600062003924565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa15801562002c94573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002cba9190620082a9565b6020546040516001600160a01b0390911660248201526044810187905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba39162002d9f916001600160a01b0391909116906000908690600401620082c3565b600060405180830381600087803b15801562002dba57600080fd5b505af115801562002dcf573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801562002e6257600080fd5b505af115801562002e77573d6000803e3d6000fd5b50506020547f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af6092506001600160a01b0316905062002eb760028962008388565b602454602654604080516001600160a01b03958616815260208101949094529184168383015292909216606082015290519081900360800190a16023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801562002f8057600080fd5b505af115801562002f95573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced915062002fdc9089908890620082ed565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200305757600080fd5b505af11580156200306c573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef9350620030c692909116908a9089908b9060040162008308565b600060405180830381600087803b158015620030e157600080fd5b505af1158015620030f6573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa15801562003149573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200316f9190620082a9565b905062003183816200129c60028a62008388565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015620031d4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620031fa9190620082a9565b9050620012a2816200320e60028b62008388565b6200129c908762008372565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a090600090819060250160408051808303601f1901815290829052602480546021546370a0823160e01b85526001600160a01b0390811660048601529294506000939216916370a082319101602060405180830381865afa158015620032b0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620032d69190620082a9565b9050620032e581600062003924565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa15801562003336573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200335c9190620082a9565b6020546040516001600160a01b0390911660248201526044810187905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba39162003441916001600160a01b0391909116906000908690600401620082c3565b600060405180830381600087803b1580156200345c57600080fd5b505af115801562003471573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156200350457600080fd5b505af115801562003519573d6000803e3d6000fd5b50506020546040517f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa93506200355e92506001600160a01b03909116908790620083c4565b60405180910390a16020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015620035f557600080fd5b505af11580156200360a573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda79062003657908a908990620082ed565b60405180910390a36023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015620036ee57600080fd5b505af115801562003703573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe91506200374a9089908890620082ed565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620037c557600080fd5b505af1158015620037da573d6000803e3d6000fd5b50506023546021546040517f02d5c8990000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506302d5c89993506200383492909116908a9089908b9060040162008308565b600060405180830381600087803b1580156200384f57600080fd5b505af115801562003864573d6000803e3d6000fd5b5050602480546021546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101620011c0565b6060601580548060200260200160405190810160405280929190818152602001828054801562000a87576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000a68575050505050905090565b60006200390d62007ddc565b6200391a848483620039a5565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b1580156200399057600080fd5b505afa15801562002142573d6000803e3d6000fd5b600080620039b4858462003a26565b905062003a1b6040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f7879000000815250828660405160200162003a05929190620083c4565b6040516020818303038152906040528562003a34565b9150505b9392505050565b600062003a1f838362003a68565b60c0810151516000901562003a5c5762003a5484848460c0015162003a87565b905062003a1f565b62003a54848462003c43565b600062003a76838362003d3a565b62003a1f8383602001518462003a34565b60008062003a9462003d4c565b9050600062003aa4868362003e24565b9050600062003abd8260600151836020015185620042f9565b9050600062003acf8383898962004523565b9050600062003ade8262005483565b602081015181519192509060030b1562003b565789826040015160405160200162003b0b929190620083e8565b60408051601f19818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825262003b4d916004016200846d565b60405180910390fd5b600062003b9b6040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a20000000000000000000000081525083600162005667565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d9062003bf09084906004016200846d565b602060405180830381865afa15801562003c0e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003c34919062008482565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc9259062003c9a9087906004016200846d565b600060405180830381865afa15801562003cb8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003ce29190810190620085a8565b9050600062003d14828560405160200162003cff929190620085e1565b60405160208183030381529060405262005875565b90506001600160a01b0381166200391a57848460405160200162003b0b92919062008614565b62003d488282600062005888565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c9062003dd5908490600401620086c3565b600060405180830381865afa15801562003df3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003e1d91908101906200870c565b9250505090565b62003e576040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d905062003ea36040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b62003eae8562005999565b6020820152600062003ec08662005d9e565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa15801562003f03573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003f2d91908101906200870c565b8683856020015160405160200162003f4994939291906200875a565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb119062003fa39085906004016200846d565b600060405180830381865afa15801562003fc1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003feb91908101906200870c565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f6906200403590849060040162008820565b602060405180830381865afa15801562004053573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004079919062008874565b62004091578160405160200162003b0b919062008898565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890620040d89084906004016200892c565b600060405180830381865afa158015620040f6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200412091908101906200870c565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f6906200416990849060040162008980565b602060405180830381865afa15801562004187573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620041ad919062008874565b1562004248576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890620041fa90849060040162008980565b600060405180830381865afa15801562004218573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200424291908101906200870c565b60408501525b846001600160a01b03166349c4fac88286600001516040516020016200426f9190620089d4565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016200429d92919062008a42565b600060405180830381865afa158015620042bb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620042e591908101906200870c565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b6060815260200190600190039081620043155790505090506040518060400160405280600481526020017f67726570000000000000000000000000000000000000000000000000000000008152508160008151811062004379576200437962008a6b565b60200260200101819052506040518060400160405280600381526020017f2d726c000000000000000000000000000000000000000000000000000000000081525081600181518110620043d057620043d062008a6b565b602002602001018190525084604051602001620043ee919062008a9a565b6040516020818303038152906040528160028151811062004413576200441362008a6b565b60200260200101819052508260405160200162004431919062008ae6565b6040516020818303038152906040528160038151811062004456576200445662008a6b565b602002602001018190525060006200446e8262005483565b602080820151604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000081850190815282518084018452600080825290860152825180840190935290518252928101929092529192506200450190604080518082018252600080825260209182015281518083019092528451825280850190820152906200603a565b62004519578560405160200162003b0b919062008b29565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d901562004574565b511590565b620046ed5782602001511562004633576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a40162003b4d565b8260c0015115620046ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a40162003b4d565b6040805160ff8082526120008201909252600091816020015b60608152602001906001900390816200470657905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280620047649062008bbc565b935060ff16815181106200477c576200477c62008a6b565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e3700000000000000000000000000000000000000815250604051602001620047cf919062008bde565b604051602081830303815290604052828280620047ec9062008bbc565b935060ff168151811062004804576200480462008a6b565b60200260200101819052506040518060400160405280600681526020017f6465706c6f790000000000000000000000000000000000000000000000000000815250828280620048539062008bbc565b935060ff16815181106200486b576200486b62008a6b565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d65000000000000000000000000000000000000815250828280620048ba9062008bbc565b935060ff1681518110620048d257620048d262008a6b565b60200260200101819052508760200151828280620048f09062008bbc565b935060ff168151811062004908576200490862008a6b565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e747261637450617468000000000000000000000000000000000000815250828280620049579062008bbc565b935060ff16815181106200496f576200496f62008a6b565b602090810291909101015287518282620049898162008bbc565b935060ff1681518110620049a157620049a162008a6b565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e49640000000000000000000000000000000000000000000000815250828280620049f09062008bbc565b935060ff168151811062004a085762004a0862008a6b565b602002602001018190525062004a1e46620060a3565b828262004a2b8162008bbc565b935060ff168151811062004a435762004a4362008a6b565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c65000000000000000000000000000000000081525082828062004a929062008bbc565b935060ff168151811062004aaa5762004aaa62008a6b565b60200260200101819052508682828062004ac49062008bbc565b935060ff168151811062004adc5762004adc62008a6b565b602090810291909101015285511562004c135760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f646500000000000000000000006020820152828262004b308162008bbc565b935060ff168151811062004b485762004b4862008a6b565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d9062004b9a9089906004016200846d565b600060405180830381865afa15801562004bb8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262004be291908101906200870c565b828262004bef8162008bbc565b935060ff168151811062004c075762004c0762008a6b565b60200260200101819052505b84602001511562004cef5760408051808201909152601281527f2d2d766572696679536f75726365436f646500000000000000000000000000006020820152828262004c5f8162008bbc565b935060ff168151811062004c775762004c7762008a6b565b60200260200101819052506040518060400160405280600581526020017f66616c736500000000000000000000000000000000000000000000000000000081525082828062004cc69062008bbc565b935060ff168151811062004cde5762004cde62008a6b565b602002602001018190525062004ed3565b62004d296200456f8660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b62004dc65760408051808201909152600d81527f2d2d6c6963656e736554797065000000000000000000000000000000000000006020820152828262004d6f8162008bbc565b935060ff168151811062004d875762004d8762008a6b565b60200260200101819052508460a0015160405160200162004da9919062008a9a565b60405160208183030381529060405282828062004cc69062008bbc565b8460c0015115801562004e0b57506040808901518151808301835260008082526020918201528251808401909352815183529081019082015262004e0990511590565b155b1562004ed35760408051808201909152600d81527f2d2d6c6963656e736554797065000000000000000000000000000000000000006020820152828262004e528162008bbc565b935060ff168151811062004e6a5762004e6a62008a6b565b602002602001018190525062004e80886200614a565b60405160200162004e92919062008a9a565b60405160208183030381529060405282828062004eaf9062008bbc565b935060ff168151811062004ec75762004ec762008a6b565b60200260200101819052505b6040808601518151808301835260008082526020918201528251808401909352815183529081019082015262004f0890511590565b62004fa85760408051808201909152600b81527f2d2d72656c6179657249640000000000000000000000000000000000000000006020820152828262004f4e8162008bbc565b935060ff168151811062004f665762004f6662008a6b565b6020026020010181905250846040015182828062004f849062008bbc565b935060ff168151811062004f9c5762004f9c62008a6b565b60200260200101819052505b606085015115620050d75760408051808201909152600681527f2d2d73616c7400000000000000000000000000000000000000000000000000006020820152828262004ff48162008bbc565b935060ff16815181106200500c576200500c62008a6b565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa1580156200507c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620050a691908101906200870c565b8282620050b38162008bbc565b935060ff1681518110620050cb57620050cb62008a6b565b60200260200101819052505b60e085015151156200518b5760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282620051248162008bbc565b935060ff16815181106200513c576200513c62008a6b565b60200260200101819052506200515a8560e0015160000151620060a3565b8282620051678162008bbc565b935060ff16815181106200517f576200517f62008a6b565b60200260200101819052505b60e08501516020015115620052425760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282620051db8162008bbc565b935060ff1681518110620051f357620051f362008a6b565b6020026020010181905250620052118560e0015160200151620060a3565b82826200521e8162008bbc565b935060ff168151811062005236576200523662008a6b565b60200260200101819052505b60e08501516040015115620052f95760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282620052928162008bbc565b935060ff1681518110620052aa57620052aa62008a6b565b6020026020010181905250620052c88560e0015160400151620060a3565b8282620052d58162008bbc565b935060ff1681518110620052ed57620052ed62008a6b565b60200260200101819052505b60e08501516060015115620053b05760408051808201909152601681527f2d2d6d61785072696f726974794665655065724761730000000000000000000060208201528282620053498162008bbc565b935060ff168151811062005361576200536162008a6b565b60200260200101819052506200537f8560e0015160600151620060a3565b82826200538c8162008bbc565b935060ff1681518110620053a457620053a462008a6b565b60200260200101819052505b60008160ff1667ffffffffffffffff811115620053d157620053d1620084ad565b6040519080825280602002602001820160405280156200540657816020015b6060815260200190600190039081620053f05790505b50905060005b8260ff168160ff1610156200547457838160ff168151811062005433576200543362008a6b565b6020026020010151828260ff168151811062005453576200545362008a6b565b602002602001018190525080806200546b9062008bbc565b9150506200540c565b5093505050505b949350505050565b620054ab6040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c91620055339186910162008c4b565b600060405180830381865afa15801562005551573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200557b91908101906200870c565b905060006200558b868362006c74565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b8152600401620055bd919062008145565b6000604051808303816000875af1158015620055dd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262005607919081019062008c94565b805190915060030b15801590620056215750602081015151155b8015620056315750604081015151155b156200451957816000815181106200564d576200564d62008a6b565b602002602001015160405160200162003b0b919062008d4a565b606060006200569d8560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528651825280870190820152909150620056d69082905b9062006deb565b15620058425760006200575a8262005753846200574c6200571e8a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b9062006e14565b9062006e7c565b604080518082018252600181527f0a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150620057c090829062006deb565b156200582d57604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526200582a905b829062006f09565b90505b620058388162006f31565b9250505062003a1f565b82156200585e57848460405160200162003b0b92919062008f38565b505060408051602081019091526000815262003a1f565b6000808251602084016000f09392505050565b8160a00151156200589857505050565b6000620058a784848462006fa0565b90506000620058b68262005483565b602081015181519192509060030b158015620059555750604080518082018252600781527f5355434345535300000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526200595590604080518082018252600080825260209182015281518083019092528451825280850190820152620056cf565b156200596357505050505050565b604082015151156200598657816040015160405160200162003b0b919062008fe3565b8060405160200162003b0b919062009043565b60606000620059cf8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915062005a36905b82906200603a565b1562005aaa57604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015262003a1f9062005aa4908390620075a7565b62006f31565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015262005b0e905b82906200763b565b60010362005be157604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015262005b779062005822565b50604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015262003a1f9062005aa4905b839062006f09565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015262005c429062005a2e565b1562005d8557604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529062005cad908390620076e7565b90506000816001835162005cc2919062008372565b8151811062005cd55762005cd562008a6b565b6020026020010151905062005d7c62005aa462005d4e6040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252855182528086019082015290620075a7565b95945050505050565b8260405160200162003b0b9190620090b0565b50919050565b6060600062005dd48360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015290915062005e389062005a2e565b1562005e495762003a1f8162006f31565b604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015262005eaa9062005b06565b60010362005f1857604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015262003a1f9062005aa49062005bd9565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015262005f799062005a2e565b1562005d8557604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529062005fe4908390620076e7565b90506001815111156200602657806002825162006002919062008372565b8151811062006015576200601562008a6b565b602002602001015192505050919050565b508260405160200162003b0b9190620090b0565b80518251600091111562006051575060006200391e565b81518351602085015160009291620060699162009190565b62006075919062008372565b9050826020015181036200608e5760019150506200391e565b82516020840151819020912014905092915050565b60606000620060b283620077b2565b600101905060008167ffffffffffffffff811115620060d557620060d5620084ad565b6040519080825280601f01601f19166020018201604052801562006100576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85049450846200610a57509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091620061d8905b82906200789b565b156200621957505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e73650000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526200627a90620061d0565b15620062bb57505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d49540000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526200631c90620061d0565b156200635d57505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620063be90620061d0565b80620064265750604080518082018252601081527f47504c2d322e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526200642690620061d0565b156200646757505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c79000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620064c890620061d0565b80620065305750604080518082018252601081527f47504c2d332e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526200653090620061d0565b156200657157505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620065d290620061d0565b806200663a5750604080518082018252601181527f4c47504c2d322e312d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526200663a90620061d0565b156200667b57505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c790000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620066dc90620061d0565b80620067445750604080518082018252601181527f4c47504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526200674490620061d0565b156200678557505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c61757365000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620067e690620061d0565b156200682757505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c617573650000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526200688890620061d0565b15620068c957505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526200692a90620061d0565b156200696b57505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e300000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152620069cc90620061d0565b1562006a0d57505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015262006a6e90620061d0565b1562006aaf57505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015262006b1090620061d0565b8062006b785750604080518082018252601181527f4147504c2d332e302d6f722d6c617465720000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015262006b7890620061d0565b1562006bb957505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015262006c1a90620061d0565b1562006c5b57505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b6040808401518451915162003b0b9290602001620091a6565b60608060005b845181101562006d17578185828151811062006c9a5762006c9a62008a6b565b602002602001015160405160200162006cb5929190620085e1565b60405160208183030381529060405291506001855162006cd6919062008372565b811462006d02578160405160200162006cf0919062009313565b60405160208183030381529060405291505b8062006d0e8162009356565b91505062006c7a565b5060408051600380825260808201909252600091816020015b606081526020019060019003908162006d30579050509050838160008151811062006d5f5762006d5f62008a6b565b60200260200101819052506040518060400160405280600281526020017f2d630000000000000000000000000000000000000000000000000000000000008152508160018151811062006db65762006db662008a6b565b6020026020010181905250818160028151811062006dd85762006dd862008a6b565b6020908102919091010152949350505050565b602080830151835183519284015160009362006e0b9291849190620078b1565b14159392505050565b6040805180820190915260008082526020820152600062006e488460000151856020015185600001518660200151620079e6565b905083602001518162006e5c919062008372565b8451859062006e6d90839062008372565b90525060208401525090919050565b604080518082019091526000808252602082015281518351101562006ea35750816200391e565b602080830151908401516001911462006ecb5750815160208481015190840151829020919020145b801562006f015782518451859062006ee590839062008372565b905250825160208501805162006efd90839062009190565b9052505b509192915050565b604080518082019091526000808252602082015262006f2a83838362007b2a565b5092915050565b60606000826000015167ffffffffffffffff81111562006f555762006f55620084ad565b6040519080825280601f01601f19166020018201604052801562006f80576020820181803683370190505b509050600060208201905062006f2a818560200151866000015162007be3565b6060600062006fae62003d4c565b6040805160ff808252612000820190925291925060009190816020015b606081526020019060019003908162006fcb57905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280620070299062008bbc565b935060ff168151811062007041576200704162008a6b565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e330000000000000000000000000000000000000000000000000081525060405160200162007094919062009373565b604051602081830303815290604052828280620070b19062008bbc565b935060ff1681518110620070c957620070c962008a6b565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280620071189062008bbc565b935060ff168151811062007130576200713062008a6b565b6020026020010181905250826040516020016200714e919062008ae6565b6040516020818303038152906040528282806200716b9062008bbc565b935060ff168151811062007183576200718362008a6b565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280620071d29062008bbc565b935060ff1681518110620071ea57620071ea62008a6b565b602002602001018190525062007201878462007c6c565b82826200720e8162008bbc565b935060ff168151811062007226576200722662008a6b565b602090810291909101015285515115620072df5760408051808201909152600b81527f2d2d7265666572656e6365000000000000000000000000000000000000000000602082015282826200727b8162008bbc565b935060ff168151811062007293576200729362008a6b565b6020026020010181905250620072ae86600001518462007c6c565b8282620072bb8162008bbc565b935060ff1681518110620072d357620072d362008a6b565b60200260200101819052505b856080015115620073545760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b0000000000000000602082015282826200732b8162008bbc565b935060ff168151811062007343576200734362008a6b565b6020026020010181905250620073c0565b8415620073c05760408051808201909152601281527f2d2d726571756972655265666572656e63650000000000000000000000000000602082015282826200739c8162008bbc565b935060ff1681518110620073b457620073b462008a6b565b60200260200101819052505b60408601515115620074675760408051808201909152600d81527f2d2d756e73616665416c6c6f7700000000000000000000000000000000000000602082015282826200740d8162008bbc565b935060ff168151811062007425576200742562008a6b565b60200260200101819052508560400151828280620074439062008bbc565b935060ff16815181106200745b576200745b62008a6b565b60200260200101819052505b856060015115620074d75760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282620074b38162008bbc565b935060ff1681518110620074cb57620074cb62008a6b565b60200260200101819052505b60008160ff1667ffffffffffffffff811115620074f857620074f8620084ad565b6040519080825280602002602001820160405280156200752d57816020015b6060815260200190600190039081620075175790505b50905060005b8260ff168160ff1610156200759b57838160ff16815181106200755a576200755a62008a6b565b6020026020010151828260ff16815181106200757a576200757a62008a6b565b60200260200101819052508080620075929062008bbc565b91505062007533565b50979650505050505050565b6040805180820190915260008082526020820152815183511015620075ce5750816200391e565b81518351602085015160009291620075e69162009190565b620075f2919062008372565b6020840151909150600190821462007614575082516020840151819020908220145b801562007632578351855186906200762e90839062008372565b9052505b50929392505050565b6000808260000151620076618560000151866020015186600001518760200151620079e6565b6200766d919062009190565b90505b8351602085015162007683919062009190565b811162006f2a5781620076968162009356565b9250508260000151620076d3856020015183620076b4919062008372565b8651620076c2919062008372565b8386600001518760200151620079e6565b620076df919062009190565b905062007670565b60606000620076f784846200763b565b6200770490600162009190565b67ffffffffffffffff8111156200771f576200771f620084ad565b6040519080825280602002602001820160405280156200775457816020015b60608152602001906001900390816200773e5790505b50905060005b8151811015620077aa576200777462005aa4868662006f09565b82828151811062007789576200778962008a6b565b60200260200101819052508080620077a19062009356565b9150506200775a565b509392505050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310620077fc577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef8100000000831062007829576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106200784857662386f26fc10000830492506010015b6305f5e100831062007861576305f5e100830492506008015b61271083106200787657612710830492506004015b6064831062007889576064830492506002015b600a83106200391e5760010192915050565b6000620078a9838362007cb0565b159392505050565b600080858411620079dc57602084116200797c576000841562007907576001620078dd86602062008372565b620078ea906008620093ba565b620078f7906002620094d1565b62007903919062008372565b1990505b835181168562007918898962009190565b62007924919062008372565b805190935082165b81811462007964578784116200794957879450505050506200547b565b836200795581620094df565b9450508284511690506200792c565b62007970878562009190565b9450505050506200547b565b8383206200798b858862008372565b62007997908762009190565b91505b858210620079da57848220808203620079c457620079b9868462009190565b93505050506200547b565b620079d160018462008372565b9250506200799a565b505b5092949350505050565b6000838186851162007b13576020851162007ab8576000851562007a3d57600162007a1387602062008372565b62007a20906008620093ba565b62007a2d906002620094d1565b62007a39919062008372565b1990505b8451811660008762007a508b8b62009190565b62007a5c919062008372565b855190915083165b82811462007aa95781861062007a8e5762007a808b8b62009190565b96505050505050506200547b565b8562007a9a8162009356565b96505083865116905062007a64565b8596505050505050506200547b565b508383206000905b62007acc868962008372565b821162007b115785832080820362007aeb57839450505050506200547b565b62007af860018562009190565b935050818062007b089062009356565b92505062007ac0565b505b62007b1f878762009190565b979650505050505050565b6040805180820190915260008082526020820152600062007b5e8560000151866020015186600001518760200151620079e6565b60208087018051918601919091525190915062007b7c908262008372565b83528451602086015162007b91919062009190565b810362007ba2576000855262007bda565b8351835162007bb2919062009190565b8551869062007bc390839062008372565b905250835162007bd4908262009190565b60208601525b50909392505050565b6020811062007c23578151835262007bfd60208462009190565b925062007c0c60208362009190565b915062007c1b60208262008372565b905062007be3565b600019811562007c5957600162007c3c83602062008372565b62007c4a90610100620094d1565b62007c56919062008372565b90505b9151835183169219169190911790915250565b6060600062007c7c848462003e24565b805160208083015160405193945062007c9893909101620094f9565b60405160208183030381529060405291505092915050565b815181516000919081111562007cc4575081515b6020808501519084015160005b8381101562007d93578251825180821462007d5c57600019602087101562007d395760018462007d0389602062008372565b62007d0f919062009190565b62007d1c906008620093ba565b62007d29906002620094d1565b62007d35919062008372565b1990505b818116838216818103911462007d595797506200391e9650505050505050565b50505b62007d6960208662009190565b945062007d7860208562009190565b9350505060208162007d8b919062009190565b905062007cd1565b508451865162004519919062009555565b610cca806200957983390190565b610b35806200a24383390190565b610d72806200ad7883390190565b610d31806200baea83390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200162007e2162007e26565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200162007e216040518060800160405280600081526020016000815260200160008152602001600081525090565b6020808252825182820181905260009190848201906040850190845b8181101562007edb5783516001600160a01b03168352928401929184019160010162007eb4565b50909695505050505050565b60005b8381101562007f0457818101518382015260200162007eea565b50506000910152565b6000815180845262007f2781602086016020860162007ee7565b601f01601f19169290920160200192915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b858110156200802d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08b8503018752825180516001600160a01b031685528901518985018990528051898601819052908a0190606081881b870181019190870190855b8181101562008016577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08985030183526200800384865162007f0d565b948e01949350918d019160010162007fc6565b505050978a01979450509188019160010162007f62565b50919a9950505050505050505050565b600081518084526020808501945080840160005b83811015620080915781517fffffffff00000000000000000000000000000000000000000000000000000000168752958201959082019060010162008051565b509495945050505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101562008137577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc089840301855281518051878552620081088886018262007f0d565b91890151858303868b01529190506200812281836200803d565b968901969450505090860190600101620080c3565b509098975050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015620081bc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452620081a985835162007f0d565b945092850192908501906001016200816c565b5092979650505050505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101562008137578883037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0018552815180516001600160a01b0316845287015187840187905262008246878501826200803d565b9588019593505090860190600101620081f0565b600181811c908216806200826f57607f821691505b60208210810362005d98577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060208284031215620082bc57600080fd5b5051919050565b6001600160a01b038416815282602082015260606040820152600062005d7c606083018462007f0d565b8281526040602082015260006200547b604083018462007f0d565b6001600160a01b038516815283602082015260806040820152600062008332608083018562007f0d565b905082606083015295945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156200391e576200391e62008343565b600082620083bf577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6001600160a01b03831681526040602082015260006200547b604083018462007f0d565b7f4661696c656420746f206465706c6f7920636f6e7472616374200000000000008152600083516200842281601a85016020880162007ee7565b7f3a20000000000000000000000000000000000000000000000000000000000000601a9184019182015283516200846181601c84016020880162007ee7565b01601c01949350505050565b60208152600062003a1f602083018462007f0d565b6000602082840312156200849557600080fd5b81516001600160a01b038116811462003a1f57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715620085025762008502620084ad565b60405290565b600067ffffffffffffffff80841115620085265762008526620084ad565b604051601f8501601f19908116603f01168101908282118183101715620085515762008551620084ad565b816040528093508581528686860111156200856b57600080fd5b6200857b86602083018762007ee7565b5050509392505050565b600082601f8301126200859757600080fd5b62003a1f8383516020850162008508565b600060208284031215620085bb57600080fd5b815167ffffffffffffffff811115620085d357600080fd5b6200391a8482850162008585565b60008351620085f581846020880162007ee7565b8351908301906200860b81836020880162007ee7565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e7472616374200000000000008152600083516200864e81601a85016020880162007ee7565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a9184019182015283516200868d81603384016020880162007ee7565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f5554000000000000000000000000000000000000000000606082015260806020820152600062003a1f608083018462007f0d565b6000602082840312156200871f57600080fd5b815167ffffffffffffffff8111156200873757600080fd5b8201601f810184136200874957600080fd5b6200391a8482516020840162008508565b600085516200876e818460208a0162007ee7565b80830190507f2f000000000000000000000000000000000000000000000000000000000000008082528651620087ac816001850160208b0162007ee7565b600192019182018190528551620087cb816002850160208a0162007ee7565b60029201918201528351620087e881600384016020880162007ee7565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600392909101918201526008019695505050505050565b60408152600062008835604083018462007f0d565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b6000602082840312156200888757600080fd5b8151801515811462003a1f57600080fd5b7f436f756c64206e6f742066696e642041535420696e2061727469666163742000815260008251620088d281601f85016020870162007ee7565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600062008941604083018462007f0d565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b60408152600062008995604083018462007f0d565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b2700000000000000000000000081526000825162008a0e81601485016020870162007ee7565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b60408152600062008a57604083018562007f0d565b828103602084015262003a1b818562007f0d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007f2200000000000000000000000000000000000000000000000000000000000000808352835162008ad581600186016020880162007ee7565b600193019283015250600201919050565b6000825162008afa81846020870162007ee7565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e74726163742000000000000000000000000000000000000000000060408201526000825162008baf81604b85016020870162007ee7565b91909101604b0192915050565b600060ff821660ff810362008bd55762008bd562008343565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825162008c3e81602985016020870162007ee7565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f5041544800000000000000000000606082015260806020820152600062003a1f608083018462007f0d565b60006020828403121562008ca757600080fd5b815167ffffffffffffffff8082111562008cc057600080fd5b908301906060828603121562008cd557600080fd5b62008cdf620084dc565b82518060030b811462008cf157600080fd5b815260208301518281111562008d0657600080fd5b62008d148782860162008585565b60208301525060408301518281111562008d2d57600080fd5b62008d3b8782860162008585565b60408301525095945050505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f220000000000000000000000000000000000000000000000000000000000000060208201526000825162008daa81602185016020870162007ee7565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f270000000000000000000000000000000000000000000000000000000000000060208201526000835162008f9881602185016020880162007ee7565b7f2720696e206f75747075743a2000000000000000000000000000000000000000602191840191820152835162008fd781602e84016020880162007ee7565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825162008c3e81602985016020870162007ee7565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a000000000000000000000000000000000000000000000000000000000000602082015260008251620090a381602285016020870162007ee7565b9190910160220192915050565b7f436f6e7472616374206e616d6520000000000000000000000000000000000000815260008251620090ea81600e85016020870162007ee7565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b808201808211156200391e576200391e62008343565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351620091e081601885016020880162007ee7565b7f20696e200000000000000000000000000000000000000000000000000000000060189184019182015283516200921f81601c84016020880162007ee7565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b600082516200932781846020870162007ee7565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b600060001982036200936c576200936c62008343565b5060010190565b7f406f70656e7a657070656c696e2f75706772616465732d636f72654000000000815260008251620093ad81601c85016020870162007ee7565b91909101601c0192915050565b80820281158282048414176200391e576200391e62008343565b600181815b8085111562009415578160001904821115620093f957620093f962008343565b808516156200940757918102915b93841c9390800290620093d9565b509250929050565b6000826200942e575060016200391e565b816200943d575060006200391e565b8160018114620094565760028114620094615762009481565b60019150506200391e565b60ff84111562009475576200947562008343565b50506001821b6200391e565b5060208310610133831016604e8410600b8410161715620094a6575081810a6200391e565b620094b28383620093d4565b8060001904821115620094c957620094c962008343565b029392505050565b600062003a1f83836200941d565b600081620094f157620094f162008343565b506000190190565b600083516200950d81846020880162007ee7565b7f3a0000000000000000000000000000000000000000000000000000000000000090830190815283516200954981600184016020880162007ee7565b01600101949350505050565b818103600083128015838313168383128216171562006f2a5762006f2a6200834356fe60806040523480156200001157600080fd5b5060405162000cca38038062000cca833981016040819052620000349162000123565b818160036200004483826200021c565b5060046200005382826200021c565b5050505050620002e8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008657600080fd5b81516001600160401b0380821115620000a357620000a36200005e565b604051601f8301601f19908116603f01168101908282118183101715620000ce57620000ce6200005e565b81604052838152602092508683858801011115620000eb57600080fd5b600091505b838210156200010f5785820183015181830184015290820190620000f0565b600093810190920192909252949350505050565b600080604083850312156200013757600080fd5b82516001600160401b03808211156200014f57600080fd5b6200015d8683870162000074565b935060208501519150808211156200017457600080fd5b50620001838582860162000074565b9150509250929050565b600181811c90821680620001a257607f821691505b602082108103620001c357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021757600081815260208120601f850160051c81016020861015620001f25750805b601f850160051c820191505b818110156200021357828155600101620001fe565b5050505b505050565b81516001600160401b038111156200023857620002386200005e565b62000250816200024984546200018d565b84620001c9565b602080601f8311600181146200028857600084156200026f5750858301515b600019600386901b1c1916600185901b17855562000213565b600085815260208120601f198616915b82811015620002b95788860151825594840194600190910190840162000298565b5085821015620002d85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6109d280620002f86000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108ba565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dc565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f39061090f565b80601f016020809104026020016040519081016040528092919081815260200182805461021f9061090f565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f39061090f565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610962565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b600060208083528351808285015260005b818110156107ec578581018301518582016040015282016107d0565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b9150604084013590509250925092565b6000602082840312156108cc57600080fd5b6108d58261082b565b9392505050565b600080604083850312156108ef57600080fd5b6108f88361082b565b91506109066020840161082b565b90509250929050565b600181811c9082168061092357607f821691505b60208210810361095c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220556869bd33d6741656e444b7d99e56e0c3a9495b8426ba227d4f4af169660e8264736f6c63430008150033608060405234801561001057600080fd5b50604051610b35380380610b3583398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a37806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bd565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610942565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102819392919061098d565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610942565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102819392919061098d565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109b0565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109d2565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff8082111561087557600080fd5b818801915088601f83011261088957600080fd5b81358181111561089857600080fd5b8960208285010111156108aa57600080fd5b9699959850939650602001949392505050565b6000806000606084860312156108d257600080fd5b6108db846107f9565b92506108e9602085016107f9565b9150604084013590509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109826080830184866108f9565b979650505050505050565b8381526040602082015260006109a76040830184866108f9565b95945050505050565b6000602082840312156109c257600080fd5b8151801515811461065e57600080fd5b6000825160005b818110156109f357602081860181015185830152016109d9565b50600092019182525091905056fea2646970667358221220add5c975d5cd9c8b4afe35ea370aed6f4c4571bcc8cfe91b243cc9add705e36664736f6c6343000815003360c060405234801561001057600080fd5b50604051610d72380380610d7283398101604081905261002f916100d2565b60016000558282826001600160a01b038316158061005457506001600160a01b038216155b8061006657506001600160a01b038116155b156100845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b0319169190921617905550610115915050565b80516001600160a01b03811681146100cd57600080fd5b919050565b6000806000606084860312156100e757600080fd5b6100f0846100b6565b92506100fe602085016100b6565b915061010c604085016100b6565b90509250925092565b60805160a051610bf461017e6000396000818160ff015281816101da0152818161028b015281816103c3015281816104bc0152818161056d015261063301526000818160af015281816101fc0152818161025e015281816104de01526105400152610bf46000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100fa5780635b112591146101215780635e3e9fef14610141578063743e0c9b1461015457600080fd5b806302d5c89914610082578063106e629014610097578063116191b6146100aa575b600080fd5b6100956100903660046109db565b610167565b005b6100956100a5366004610a6a565b610350565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6001546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b61009561014f3660046109db565b610449565b610095610162366004610a9d565b610619565b61016f61065e565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101c0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61022173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000866106a1565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd4906102bb907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610aff565b600060405180830381600087803b1580156102d557600080fd5b505af11580156102e9573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe85858560405161033793929190610b4a565b60405180910390a26103496001600055565b5050505050565b61035861065e565b60015473ffffffffffffffffffffffffffffffffffffffff1633146103a9576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103ea73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001684846106a1565b8273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161043291815260200190565b60405180910390a26104446001600055565b505050565b61045161065e565b60015473ffffffffffffffffffffffffffffffffffffffff1633146104a2576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61050373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000866106a1565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab599061059d907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610aff565b600060405180830381600087803b1580156105b757600080fd5b505af11580156105cb573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced85858560405161033793929190610b4a565b61065b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016333084610722565b50565b60026000540361069a576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b60405173ffffffffffffffffffffffffffffffffffffffff83811660248301526044820183905261044491859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061076e565b60405173ffffffffffffffffffffffffffffffffffffffff84811660248301528381166044830152606482018390526107689186918216906323b872dd906084016106db565b50505050565b600061079073ffffffffffffffffffffffffffffffffffffffff841683610809565b905080516000141580156107b55750808060200190518101906107b39190610b6d565b155b15610444576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606108178383600061081e565b9392505050565b60608147101561085c576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610800565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516108859190610b8f565b60006040518083038185875af1925050503d80600081146108c2576040519150601f19603f3d011682016040523d82523d6000602084013e6108c7565b606091505b50915091506108d78683836108e1565b9695505050505050565b6060826108f6576108f182610970565b610817565b815115801561091a575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610969576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610800565b5080610817565b8051156109805780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff811681146109d657600080fd5b919050565b6000806000806000608086880312156109f357600080fd5b6109fc866109b2565b945060208601359350604086013567ffffffffffffffff80821115610a2057600080fd5b818801915088601f830112610a3457600080fd5b813581811115610a4357600080fd5b896020828501011115610a5557600080fd5b96999598505060200195606001359392505050565b600080600060608486031215610a7f57600080fd5b610a88846109b2565b95602085013595506040909401359392505050565b600060208284031215610aaf57600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015260806060830152610b3f608083018486610ab6565b979650505050505050565b838152604060208201526000610b64604083018486610ab6565b95945050505050565b600060208284031215610b7f57600080fd5b8151801515811461081757600080fd5b6000825160005b81811015610bb05760208186018101518583015201610b96565b50600092019182525091905056fea264697066735822122052ebc340fce499c22446461e21c51f7afe62e51399c68948c29cfe81b240086e64736f6c63430008150033608060405234801561001057600080fd5b506001600055610d0c806100256000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610893565b6102f9565b34801561010057600080fd5b5061006a61010f36600461097d565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a58565b60405180910390a15050565b610226610372565b6000610233600285610ac2565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b6b565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610bb9565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610c9d565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610cba565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff8082111561072757600080fd5b818501915085601f83011261073b57600080fd5b81358181111561074a57600080fd5b86602082850101111561075c57600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e4576107e461076e565b604052919050565b600082601f8301126107fd57600080fd5b813567ffffffffffffffff8111156108175761081761076e565b61084860207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079d565b81815284602083860101111561085d57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087a565b6000806000606084860312156108a857600080fd5b833567ffffffffffffffff8111156108bf57600080fd5b6108cb868287016107ec565b9350506020840135915060408401356108e38161087a565b809150509250925092565b600067ffffffffffffffff8211156109085761090861076e565b5060051b60200190565b600082601f83011261092357600080fd5b81356020610938610933836108ee565b61079d565b82815260059290921b8401810191818101908684111561095757600080fd5b8286015b84811015610972578035835291830191830161095b565b509695505050505050565b60008060006060848603121561099257600080fd5b833567ffffffffffffffff808211156109aa57600080fd5b818601915086601f8301126109be57600080fd5b813560206109ce610933836108ee565b82815260059290921b8401810191818101908a8411156109ed57600080fd5b8286015b84811015610a2557803586811115610a095760008081fd5b610a178d86838b01016107ec565b8452509183019183016109f1565b5097505087013592505080821115610a3c57600080fd5b50610a4986828701610912565b9250506106f360408501610888565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610af8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b18578181015183820152602001610b00565b50506000910152565b60008151808452610b39816020860160208601610afd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610ba060a0830186610b21565b6060830194909452509015156080909101529392505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff87168352602060808185015281875180845260a08601915060a08160051b870101935082890160005b82811015610c49577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60888703018452610c37868351610b21565b95509284019290840190600101610bfd565b50505050838203604085015285518083528187019282019060005b81811015610c8057845183529383019391830191600101610c64565b505085151560608601529250610c94915050565b95945050505050565b600060208284031215610caf57600080fd5b81516104f98161087a565b60008251610ccc818460208701610afd565b919091019291505056fea26469706673582212203c78a9c62b9e8060d1fadf61a8e6e054c88d36bdb3ea73702c26bf13f718fad664736f6c63430008150033a2646970667358221220c99643b6621b4e16d4c9ce8adfd2fa0eeb2531cfe3b91bbe79519da73733f52e64736f6c63430008150033", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b5061c3288061003c6000396000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c8063893f9164116100d8578063ba414fa61161008c578063de1cb76c11610066578063de1cb76c14610268578063e20c9f7114610270578063fa7626d41461027857600080fd5b8063ba414fa614610240578063d509b16c14610258578063dcf7d0371461026057600080fd5b8063991a2ab5116100bd578063991a2ab514610228578063b0464fdc14610230578063b5508aa91461023857600080fd5b8063893f91641461020b578063916a17c61461021357600080fd5b80633f7286f41161012f57806357bb1c8f1161011457806357bb1c8f146101d957806366d9a9a0146101e157806385226c81146101f657600080fd5b80633f7286f4146101c957806349346558146101d157600080fd5b80632ade3880116101605780632ade3880146101a45780633cba0107146101b95780633e5e3c23146101c157600080fd5b80630a9254e41461017c5780631ed7831c14610186575b600080fd5b610184610285565b005b61018e6109bf565b60405161019b9190617991565b60405180910390f35b6101ac610a21565b60405161019b9190617a2d565b610184610b63565b61018e611336565b61018e611396565b6101846113f6565b610184611a52565b6101e9611c48565b60405161019b9190617b93565b6101fe611dca565b60405161019b9190617c31565b610184611e9a565b61021b612055565b60405161019b9190617ca8565b610184612150565b61021b612358565b6101fe612453565b610248612523565b604051901515815260200161019b565b6101846125f7565b610184612a0d565b6101846130cd565b61018e613733565b601f546102489060ff1681565b602580547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163017909155602680548216611234179055602780549091166156781790556040516102d7906178a4565b604080825260049082018190527f7a6574610000000000000000000000000000000000000000000000000000000060608301526080602083018190528201527f5a4554410000000000000000000000000000000000000000000000000000000060a082015260c001604051809103906000f08015801561035b573d6000803e3d6000fd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081178255604080518082018252600e81527f4761746577617945564d2e736f6c000000000000000000000000000000000000602082015260275491519190941692810192909252604482015261043f919060640160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f485cc95500000000000000000000000000000000000000000000000000000000179052613793565b601f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0393841681029190911791829055602080549190920483167fffffffffffffffffffffffff00000000000000000000000000000000000000009091168117909155602754604051919216906104c3906178b1565b6001600160a01b03928316815291166020820152604001604051809103906000f0801580156104f6573d6000803e3d6000fd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055602054602454602754604051928416939182169291169061054b906178be565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610587573d6000803e3d6000fd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516105cc906178cb565b604051809103906000f0801580156105e8573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556027546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815291166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b15801561069457600080fd5b505af11580156106a8573d6000803e3d6000fd5b50506027546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d569150602401600060405180830381600087803b15801561071e57600080fd5b505af1158015610732573d6000803e3d6000fd5b50506020546022546040517fae7a3a6f0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201529116925063ae7a3a6f9150602401600060405180830381600087803b15801561079857600080fd5b505af11580156107ac573d6000803e3d6000fd5b50506020546023546040517f10188aef0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506310188aef9150602401600060405180830381600087803b15801561081257600080fd5b505af1158015610826573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b03166390c5013b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561088857600080fd5b505af115801561089c573d6000803e3d6000fd5b5050602480546023546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152624c4b40938101939093521692506340c10f199150604401600060405180830381600087803b15801561090d57600080fd5b505af1158015610921573d6000803e3d6000fd5b50506027546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d9150604401600060405180830381600087803b1580156109a557600080fd5b505af11580156109b9573d6000803e3d6000fd5b50505050565b60606016805480602002602001604051908101604052809291908181526020018280548015610a1757602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116109f9575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015610b5a57600084815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610b43578382906000526020600020018054610ab690617d3f565b80601f0160208091040260200160405190810160405280929190818152602001828054610ae290617d3f565b8015610b2f5780601f10610b0457610100808354040283529160200191610b2f565b820191906000526020600020905b815481529060010190602001808311610b1257829003601f168201915b505050505081526020019060010190610a97565b505050508152505081526020019060010190610a45565b50505050905090565b60248054602654604051620186a09381018490526001600160a01b03928316604482015291166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a2000000000000000000000000000000000000000000000000000000001790526024805460265492516370a0823160e01b81526001600160a01b0393841660048201529394506000939216916370a082319101602060405180830381865afa158015610c3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c629190617d8c565b9050610c6f8160006137b2565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015610cbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ce39190617d8c565b6020546040516001600160a01b0390911660248201526044810187905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391610dc6916001600160a01b0391909116906000908690600401617da5565b600060405180830381600087803b158015610de057600080fd5b505af1158015610df4573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015610e8657600080fd5b505af1158015610e9a573d6000803e3d6000fd5b505060208054602454602654604080516001600160a01b0394851681529485018d905291831684830152919091166060830152517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609350908190036080019150a16023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015610f8957600080fd5b505af1158015610f9d573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced9150610fe29089908890617dcd565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561105c57600080fd5b505af1158015611070573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef93506110c892909116908a9089908b90600401617de6565b600060405180830381600087803b1580156110e257600080fd5b505af11580156110f6573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a0823191015b602060405180830381865afa158015611149573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116d9190617d8c565b905061117981886137b2565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa1580156111c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ed9190617d8c565b9050611202816111fd8a87617e4e565b6137b2565b602480546020546021546040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082169381019390935260009291169063dd62ed3e90604401602060405180830381865afa158015611278573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129c9190617d8c565b90506112a98160006137b2565b602480546020546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa1580156112f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061131d9190617d8c565b905061132a8160006137b2565b50505050505050505050565b60606018805480602002602001604051908101604052809291908181526020018280548015610a17576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116109f9575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610a17576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116109f9575050505050905090565b604080516004808252602480830184526020830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6ed70169000000000000000000000000000000000000000000000000000000001790525460265493516370a0823160e01b8152620186a0946000949385936001600160a01b03908116936370a082319361149793921691016001600160a01b0391909116815260200190565b602060405180830381865afa1580156114b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d89190617d8c565b90506114e58160006137b2565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015611535573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115599190617d8c565b6020546040516001600160a01b0390911660248201526044810187905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba39161163c916001600160a01b0391909116906000908690600401617da5565b600060405180830381600087803b15801561165657600080fd5b505af115801561166a573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156116fc57600080fd5b505af1158015611710573d6000803e3d6000fd5b5050602080546040516001600160a01b0390911681527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a0935001905060405180910390a16023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b1580156117e257600080fd5b505af11580156117f6573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced915061183b9089908890617dcd565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156118b557600080fd5b505af11580156118c9573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef935061192192909116908a9089908b90600401617de6565b600060405180830381600087803b15801561193b57600080fd5b505af115801561194f573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa1580156119a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119c59190617d8c565b90506119d28160006137b2565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015611a22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a469190617d8c565b905061120281856137b2565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a090600090819060250160408051808303601f19018152908290526025547fca669fa70000000000000000000000000000000000000000000000000000000083526001600160a01b031660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611b0857600080fd5b505af1158015611b1c573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015611ba557600080fd5b505af1158015611bb9573d6000803e3d6000fd5b50506023546021546040517f02d5c8990000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506302d5c8999350611c119290911690879086908890600401617de6565b600060405180830381600087803b158015611c2b57600080fd5b505af1158015611c3f573d6000803e3d6000fd5b50505050505050565b6060601b805480602002602001604051908101604052809291908181526020016000905b82821015610b5a5783829060005260206000209060020201604051806040016040529081600082018054611c9f90617d3f565b80601f0160208091040260200160405190810160405280929190818152602001828054611ccb90617d3f565b8015611d185780601f10611ced57610100808354040283529160200191611d18565b820191906000526020600020905b815481529060010190602001808311611cfb57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611db257602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411611d5f5790505b50505050508152505081526020019060010190611c6c565b6060601a805480602002602001604051908101604052809291908181526020016000905b82821015610b5a578382906000526020600020018054611e0d90617d3f565b80601f0160208091040260200160405190810160405280929190818152602001828054611e3990617d3f565b8015611e865780601f10611e5b57610100808354040283529160200191611e86565b820191906000526020600020905b815481529060010190602001808311611e6957829003601f168201915b505050505081526020019060010190611dee565b6025546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152620186a090600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015611f1457600080fd5b505af1158015611f28573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b158015611fb157600080fd5b505af1158015611fc5573d6000803e3d6000fd5b50506023546026546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101879052604481018690529116925063106e62909150606401600060405180830381600087803b15801561203957600080fd5b505af115801561204d573d6000803e3d6000fd5b505050505050565b6060601d805480602002602001604051908101604052809291908181526020016000905b82821015610b5a5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561213857602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116120e55790505b50505050508152505081526020019060010190612079565b60248054602654604051620186a09381018490526001600160a01b03928316604482015291166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f357fc5a20000000000000000000000000000000000000000000000000000000017905260255490517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561224f57600080fd5b505af1158015612263573d6000803e3d6000fd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527fddb5de5e000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e09150602401600060405180830381600087803b1580156122ec57600080fd5b505af1158015612300573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef9350611c119290911690879086908890600401617de6565b6060601c805480602002602001604051908101604052809291908181526020016000905b82821015610b5a5760008481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801561243b57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116123e85790505b5050505050815250508152602001906001019061237c565b60606019805480602002602001604051908101604052809291908181526020016000905b82821015610b5a57838290600052602060002001805461249690617d3f565b80601f01602080910402602001604051908101604052809291908181526020018280546124c290617d3f565b801561250f5780601f106124e45761010080835404028352916020019161250f565b820191906000526020600020905b8154815290600101906020018083116124f257829003601f168201915b505050505081526020019060010190612477565b60085460009060ff161561253b575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa1580156125cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125f09190617d8c565b1415905090565b602480546026546040516370a0823160e01b81526001600160a01b039182166004820152620186a093600093849316916370a082319101602060405180830381865afa15801561264b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061266f9190617d8c565b905061267c8160006137b2565b6026546040516001600160a01b0390911660248201526044810184905260009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba39161275c916001600160a01b0391909116906000908690600401617da5565b600060405180830381600087803b15801561277657600080fd5b505af115801561278a573d6000803e3d6000fd5b50506023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b15801561281c57600080fd5b505af1158015612830573d6000803e3d6000fd5b50506026546040518781526001600160a01b0390911692507f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364915060200160405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156128e857600080fd5b505af11580156128fc573d6000803e3d6000fd5b50506023546026546040517f106e62900000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101899052604481018890529116925063106e62909150606401600060405180830381600087803b15801561297057600080fd5b505af1158015612984573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa1580156129d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129fa9190617d8c565b9050612a0681866137b2565b5050505050565b60248054602654604051620186a09381018490526001600160a01b03928316604482015291166064820152600090819060840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc5131691000000000000000000000000000000000000000000000000000000001790526024805460265492516370a0823160e01b81526001600160a01b0393841660048201529394506000939216916370a082319101602060405180830381865afa158015612ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b0c9190617d8c565b9050612b198160006137b2565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa158015612b69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b8d9190617d8c565b6020546040516001600160a01b0390911660248201526044810187905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba391612c70916001600160a01b0391909116906000908690600401617da5565b600060405180830381600087803b158015612c8a57600080fd5b505af1158015612c9e573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b158015612d3057600080fd5b505af1158015612d44573d6000803e3d6000fd5b50506020547f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af6092506001600160a01b03169050612d82600289617e61565b602454602654604080516001600160a01b03958616815260208101949094529184168383015292909216606082015290519081900360800190a16023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b158015612e4a57600080fd5b505af1158015612e5e573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced9150612ea39089908890617dcd565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015612f1d57600080fd5b505af1158015612f31573d6000803e3d6000fd5b50506023546021546040517f5e3e9fef0000000000000000000000000000000000000000000000000000000081526001600160a01b039283169450635e3e9fef9350612f8992909116908a9089908b90600401617de6565b600060405180830381600087803b158015612fa357600080fd5b505af1158015612fb7573d6000803e3d6000fd5b5050602480546026546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319101602060405180830381865afa158015613009573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061302d9190617d8c565b905061303e816111fd60028a617e61565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa15801561308e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130b29190617d8c565b9050611202816130c360028b617e61565b6111fd9087617e4e565b6040517f68656c6c6f0000000000000000000000000000000000000000000000000000006020820152620186a090600090819060250160408051808303601f1901815290829052602480546021546370a0823160e01b85526001600160a01b0390811660048601529294506000939216916370a082319101602060405180830381865afa158015613162573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131869190617d8c565b90506131938160006137b2565b602480546023546040516370a0823160e01b81526001600160a01b03918216600482015260009391909216916370a082319101602060405180830381865afa1580156131e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132079190617d8c565b6020546040516001600160a01b0390911660248201526044810187905290915060009060640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905260245490517ff30c7ba3000000000000000000000000000000000000000000000000000000008152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f30c7ba3916132ea916001600160a01b0391909116906000908690600401617da5565b600060405180830381600087803b15801561330457600080fd5b505af1158015613318573d6000803e3d6000fd5b50506021546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a401600060405180830381600087803b1580156133aa57600080fd5b505af11580156133be573d6000803e3d6000fd5b50506020546040517f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa935061340192506001600160a01b03909116908790617e9c565b60405180910390a16020546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561349757600080fd5b505af11580156134ab573d6000803e3d6000fd5b50506021546024546040516001600160a01b039283169450911691507f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda7906134f6908a908990617dcd565b60405180910390a36023546040517f81bad6f3000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190526044820181905260648201526001600160a01b039091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a401600060405180830381600087803b15801561358c57600080fd5b505af11580156135a0573d6000803e3d6000fd5b50506021546040516001600160a01b0390911692507fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe91506135e59089908890617dcd565b60405180910390a26027546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561365f57600080fd5b505af1158015613673573d6000803e3d6000fd5b50506023546021546040517f02d5c8990000000000000000000000000000000000000000000000000000000081526001600160a01b0392831694506302d5c89993506136cb92909116908a9089908b90600401617de6565b600060405180830381600087803b1580156136e557600080fd5b505af11580156136f9573d6000803e3d6000fd5b5050602480546021546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a08231910161112c565b60606015805480602002602001604051908101604052809291908181526020018280548015610a17576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116109f9575050505050905090565b600061379d6178d8565b6137a8848483613831565b9150505b92915050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440160006040518083038186803b15801561381d57600080fd5b505afa15801561204d573d6000803e3d6000fd5b60008061383e85846138ac565b90506138a16040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f7879000000815250828660405160200161388c929190617e9c565b604051602081830303815290604052856138b8565b9150505b9392505050565b60006138a583836138e6565b60c081015151600090156138dc576138d584848460c00151613901565b90506138a5565b6138d58484613aa7565b60006138f28383613b92565b6138a5838360200151846138b8565b60008061390c613ba2565b9050600061391a8683613c75565b90506000613931826060015183602001518561411b565b905060006139418383898961432d565b9050600061394e826151aa565b602081015181519192509060030b156139c157898260400151604051602001613978929190617ebe565b60408051601f19818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526139b891600401617f3f565b60405180910390fd5b6000613a046040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a200000000000000000000000815250836001615379565b6040517fc6ce059d000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c6ce059d90613a57908490600401617f3f565b602060405180830381865afa158015613a74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a989190617f52565b9b9a5050505050505050505050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590613afc908790600401617f3f565b600060405180830381865afa158015613b19573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613b419190810190618063565b90506000613b6f8285604051602001613b5b929190618098565b604051602081830303815290604052615579565b90506001600160a01b0381166137a85784846040516020016139789291906180c7565b613b9e8282600061558c565b5050565b604080518082018252600381527f6f75740000000000000000000000000000000000000000000000000000000000602082015290517fd145736c000000000000000000000000000000000000000000000000000000008152606091737109709ecfa91a80626ff3989d68f67f5b1dd12d91829063d145736c90613c29908490600401618172565b600060405180830381865afa158015613c46573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613c6e91908101906181b9565b9250505090565b613ca76040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d9050613cf26040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b613cfb8561568f565b60208201526000613d0b86615a74565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa158015613d4d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613d7591908101906181b9565b86838560200151604051602001613d8f9493929190618202565b60408051601f19818403018152908290527f60f9bb1100000000000000000000000000000000000000000000000000000000825291506000906001600160a01b038616906360f9bb1190613de7908590600401617f3f565b600060405180830381865afa158015613e04573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613e2c91908101906181b9565b6040517fdb4235f60000000000000000000000000000000000000000000000000000000081529091506001600160a01b0386169063db4235f690613e74908490600401618306565b602060405180830381865afa158015613e91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613eb59190618358565b613eca5781604051602001613978919061837a565b6040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac890613f0f90849060040161840c565b600060405180830381865afa158015613f2c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613f5491908101906181b9565b84526040517fdb4235f60000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063db4235f690613f9b90849060040161845e565b602060405180830381865afa158015613fb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fdc9190618358565b15614071576040517f49c4fac80000000000000000000000000000000000000000000000000000000081526001600160a01b038616906349c4fac89061402690849060040161845e565b600060405180830381865afa158015614043573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261406b91908101906181b9565b60408501525b846001600160a01b03166349c4fac882866000015160405160200161409691906184b0565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016140c292919061851c565b600060405180830381865afa1580156140df573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261410791908101906181b9565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b60608152602001906001900390816141375790505090506040518060400160405280600481526020017f67726570000000000000000000000000000000000000000000000000000000008152508160008151811061419757614197618541565b60200260200101819052506040518060400160405280600381526020017f2d726c0000000000000000000000000000000000000000000000000000000000815250816001815181106141eb576141eb618541565b6020026020010181905250846040516020016142079190618570565b6040516020818303038152906040528160028151811061422957614229618541565b60200260200101819052508260405160200161424591906185dc565b6040516020818303038152906040528160038151811061426757614267618541565b6020026020010181905250600061427d826151aa565b602080820151604080518082018252600581527f2e6a736f6e000000000000000000000000000000000000000000000000000000818501908152825180840184526000808252908601528251808401909352905182529281019290925291925061430e9060408051808201825260008082526020918201528151808301909252845182528085019082015290615cf7565b6143235785604051602001613978919061861d565b9695505050505050565b60a0810151604080518082018252600080825260209182015281518083019092528251808352928101910152606090737109709ecfa91a80626ff3989d68f67f5b1dd12d901561437d565b511590565b6144f157826020015115614439576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a4016139b8565b8260c00151156144f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605360248201527f54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f742060448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a4016139b8565b6040805160ff8082526120008201909252600091816020015b606081526020019060019003908161450a57905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280614565906186ae565b935060ff168151811061457a5761457a618541565b60200260200101819052506040518060400160405280600d81526020017f302e302e312d616c7068612e37000000000000000000000000000000000000008152506040516020016145cb91906186cd565b6040516020818303038152906040528282806145e6906186ae565b935060ff16815181106145fb576145fb618541565b60200260200101819052506040518060400160405280600681526020017f6465706c6f790000000000000000000000000000000000000000000000000000815250828280614648906186ae565b935060ff168151811061465d5761465d618541565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163744e616d650000000000000000000000000000000000008152508282806146aa906186ae565b935060ff16815181106146bf576146bf618541565b602002602001018190525087602001518282806146db906186ae565b935060ff16815181106146f0576146f0618541565b60200260200101819052506040518060400160405280600e81526020017f2d2d636f6e74726163745061746800000000000000000000000000000000000081525082828061473d906186ae565b935060ff168151811061475257614752618541565b60209081029190910101528751828261476a816186ae565b935060ff168151811061477f5761477f618541565b60200260200101819052506040518060400160405280600981526020017f2d2d636861696e496400000000000000000000000000000000000000000000008152508282806147cc906186ae565b935060ff16815181106147e1576147e1618541565b60200260200101819052506147f546615d58565b8282614800816186ae565b935060ff168151811061481557614815618541565b60200260200101819052506040518060400160405280600f81526020017f2d2d6275696c64496e666f46696c650000000000000000000000000000000000815250828280614862906186ae565b935060ff168151811061487757614877618541565b60200260200101819052508682828061488f906186ae565b935060ff16815181106148a4576148a4618541565b60209081029190910101528551156149cb5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f64650000000000000000000000602082015282826148f5816186ae565b935060ff168151811061490a5761490a618541565b60209081029190910101526040517f71aad10d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906371aad10d9061495a908990600401617f3f565b600060405180830381865afa158015614977573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261499f91908101906181b9565b82826149aa816186ae565b935060ff16815181106149bf576149bf618541565b60200260200101819052505b846020015115614a9b5760408051808201909152601281527f2d2d766572696679536f75726365436f6465000000000000000000000000000060208201528282614a14816186ae565b935060ff1681518110614a2957614a29618541565b60200260200101819052506040518060400160405280600581526020017f66616c7365000000000000000000000000000000000000000000000000000000815250828280614a76906186ae565b935060ff1681518110614a8b57614a8b618541565b6020026020010181905250614c62565b614ad36143788660a0015160408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b614b665760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614b16816186ae565b935060ff1681518110614b2b57614b2b618541565b60200260200101819052508460a00151604051602001614b4b9190618570565b604051602081830303815290604052828280614a76906186ae565b8460c00151158015614ba9575060408089015181518083018352600080825260209182015282518084019093528151835290810190820152614ba790511590565b155b15614c625760408051808201909152600d81527f2d2d6c6963656e7365547970650000000000000000000000000000000000000060208201528282614bed816186ae565b935060ff1681518110614c0257614c02618541565b6020026020010181905250614c1688615df8565b604051602001614c269190618570565b604051602081830303815290604052828280614c41906186ae565b935060ff1681518110614c5657614c56618541565b60200260200101819052505b60408086015181518083018352600080825260209182015282518084019093528151835290810190820152614c9690511590565b614d2b5760408051808201909152600b81527f2d2d72656c61796572496400000000000000000000000000000000000000000060208201528282614cd9816186ae565b935060ff1681518110614cee57614cee618541565b60200260200101819052508460400151828280614d0a906186ae565b935060ff1681518110614d1f57614d1f618541565b60200260200101819052505b606085015115614e4c5760408051808201909152600681527f2d2d73616c74000000000000000000000000000000000000000000000000000060208201528282614d74816186ae565b935060ff1681518110614d8957614d89618541565b602090810291909101015260608501516040517fb11a19e800000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015614df8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614e2091908101906181b9565b8282614e2b816186ae565b935060ff1681518110614e4057614e40618541565b60200260200101819052505b60e08501515115614ef35760408051808201909152600a81527f2d2d6761734c696d69740000000000000000000000000000000000000000000060208201528282614e96816186ae565b935060ff1681518110614eab57614eab618541565b6020026020010181905250614ec78560e0015160000151615d58565b8282614ed2816186ae565b935060ff1681518110614ee757614ee7618541565b60200260200101819052505b60e08501516020015115614f9d5760408051808201909152600a81527f2d2d67617350726963650000000000000000000000000000000000000000000060208201528282614f40816186ae565b935060ff1681518110614f5557614f55618541565b6020026020010181905250614f718560e0015160200151615d58565b8282614f7c816186ae565b935060ff1681518110614f9157614f91618541565b60200260200101819052505b60e085015160400151156150475760408051808201909152600e81527f2d2d6d617846656550657247617300000000000000000000000000000000000060208201528282614fea816186ae565b935060ff1681518110614fff57614fff618541565b602002602001018190525061501b8560e0015160400151615d58565b8282615026816186ae565b935060ff168151811061503b5761503b618541565b60200260200101819052505b60e085015160600151156150f15760408051808201909152601681527f2d2d6d61785072696f726974794665655065724761730000000000000000000060208201528282615094816186ae565b935060ff16815181106150a9576150a9618541565b60200260200101819052506150c58560e0015160600151615d58565b82826150d0816186ae565b935060ff16815181106150e5576150e5618541565b60200260200101819052505b60008160ff1667ffffffffffffffff81111561510f5761510f617f7b565b60405190808252806020026020018201604052801561514257816020015b606081526020019060019003908161512d5790505b50905060005b8260ff168160ff16101561519b57838160ff168151811061516b5761516b618541565b6020026020010151828260ff168151811061518857615188618541565b6020908102919091010152600101615148565b5093505050505b949350505050565b6151d16040518060600160405280600060030b815260200160608152602001606081525090565b60408051808201825260048082527f6261736800000000000000000000000000000000000000000000000000000000602083015291517fd145736c000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d92600091849163d145736c9161525791869101618738565b600060405180830381865afa158015615274573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261529c91908101906181b9565b905060006152aa86836168e7565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b81526004016152da9190617c31565b6000604051808303816000875af11580156152f9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052615321919081019061877f565b805190915060030b1580159061533a5750602081015151155b80156153495750604081015151155b15614323578160008151811061536157615361618541565b60200260200101516040516020016139789190618835565b606060006153ae8560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925286518252808701908201529091506153e59082905b90616a3c565b156155425760006154628261545c846154566154288a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90616a63565b90616ac5565b604080518082018252600181527f0a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201529091506154c6908290616a3c565b1561553057604080518082018252600181527f0a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261552d905b8290616b4a565b90505b61553981616b70565b925050506138a5565b821561555b578484604051602001613978929190618a21565b50506040805160208101909152600081526138a5565b509392505050565b6000808251602084016000f09392505050565b8160a001511561559b57505050565b60006155a8848484616bd9565b905060006155b5826151aa565b602081015181519192509060030b1580156156515750604080518082018252600781527f535543434553530000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615651906040805180820182526000808252602091820152815180830190925284518252808501908201526153df565b1561565e57505050505050565b6040820151511561567e5781604001516040516020016139789190618ac8565b806040516020016139789190618b26565b606060006156c48360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615729905b8290615cf7565b1561579857604080518082018252600481527f2e736f6c00000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526138a590615793908390617174565b616b70565b604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526157fa905b82906171fe565b6001036158c757604080518082018252600181527f3a000000000000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261586090615526565b50604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526138a590615793905b8390616b4a565b604080518082018252600581527f2e6a736f6e0000000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261592690615722565b15615a5d57604080518082018252600181527f2f0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082018190528451808601909552925184528301529061598e908390617298565b9050600081600183516159a19190617e4e565b815181106159b1576159b1618541565b60200260200101519050615a54615793615a276040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252855182528086019082015290617174565b95945050505050565b826040516020016139789190618b91565b50919050565b60606000615aa98360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600481527f2e736f6c0000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152909150615b0b90615722565b15615b19576138a581616b70565b604080518082018252600181527f3a0000000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615b78906157f3565b600103615be257604080518082018252600181527f3a00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526138a590615793906158c0565b604080518082018252600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615c4190615722565b15615a5d57604080518082018252600181527f2f00000000000000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820181905284518086019095529251845283015290615ca9908390617298565b9050600181511115615ce5578060028251615cc49190617e4e565b81518110615cd457615cd4618541565b602002602001015192505050919050565b50826040516020016139789190618b91565b805182516000911115615d0c575060006137ac565b81518351602085015160009291615d2291618c6f565b615d2c9190617e4e565b905082602001518103615d435760019150506137ac565b82516020840151819020912014905092915050565b60606000615d658361733d565b600101905060008167ffffffffffffffff811115615d8557615d85617f7b565b6040519080825280601f01601f191660200182016040528015615daf576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084615db957509392505050565b604081810151815180830183526000808252602091820181905283518085018552835181529282018383015283518085018552600a81527f554e4c4943454e5345440000000000000000000000000000000000000000000081840190815285518087018752838152840192909252845180860190955251845290830152606091615e84905b829061741f565b15615ec457505060408051808201909152600481527f4e6f6e65000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600981527f556e6c6963656e7365000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615f2390615e7d565b15615f6357505060408051808201909152600981527f556e6c6963656e736500000000000000000000000000000000000000000000006020820152919050565b604080518082018252600381527f4d4954000000000000000000000000000000000000000000000000000000000060208083019182528351808501855260008082529082015283518085019094529151835290820152615fc290615e7d565b1561600257505060408051808201909152600381527f4d495400000000000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d322e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261606190615e7d565b806160c65750604080518082018252601081527f47504c2d322e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526160c690615e7d565b1561610657505060408051808201909152600981527f474e552047504c763200000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f47504c2d332e302d6f6e6c7900000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261616590615e7d565b806161ca5750604080518082018252601081527f47504c2d332e302d6f722d6c6174657200000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526161ca90615e7d565b1561620a57505060408051808201909152600981527f474e552047504c763300000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d322e312d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261626990615e7d565b806162ce5750604080518082018252601181527f4c47504c2d322e312d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526162ce90615e7d565b1561630e57505060408051808201909152600c81527f474e55204c47504c76322e3100000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4c47504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261636d90615e7d565b806163d25750604080518082018252601181527f4c47504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526163d290615e7d565b1561641257505060408051808201909152600a81527f474e55204c47504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261647190615e7d565b156164b157505060408051808201909152600c81527f4253442d322d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261651090615e7d565b1561655057505060408051808201909152600c81527f4253442d332d436c6175736500000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4d504c2d322e3000000000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526165af90615e7d565b156165ef57505060408051808201909152600781527f4d504c2d322e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261664e90615e7d565b1561668e57505060408051808201909152600781527f4f534c2d332e30000000000000000000000000000000000000000000000000006020820152919050565b604080518082018252600a81527f4170616368652d322e3000000000000000000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526166ed90615e7d565b1561672d57505060408051808201909152600a81527f4170616368652d322e30000000000000000000000000000000000000000000006020820152919050565b604080518082018252600d81527f4147504c2d332e302d6f6e6c79000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261678c90615e7d565b806167f15750604080518082018252601181527f4147504c2d332e302d6f722d6c61746572000000000000000000000000000000602080830191825283518085018552600080825290820152835180850190945291518352908201526167f190615e7d565b1561683157505060408051808201909152600a81527f474e55204147504c7633000000000000000000000000000000000000000000006020820152919050565b604080518082018252600881527f4255534c2d312e310000000000000000000000000000000000000000000000006020808301918252835180850185526000808252908201528351808501909452915183529082015261689090615e7d565b156168d057505060408051808201909152600781527f42534c20312e31000000000000000000000000000000000000000000000000006020820152919050565b604080840151845191516139789290602001618c82565b60608060005b8451811015616972578185828151811061690957616909618541565b6020026020010151604051602001616922929190618098565b6040516020818303038152906040529150600185516169419190617e4e565b811461696a57816040516020016169589190618deb565b60405160208183030381529060405291505b6001016168ed565b5060408051600380825260808201909252600091816020015b606081526020019060019003908161698b57905050905083816000815181106169b6576169b6618541565b60200260200101819052506040518060400160405280600281526020017f2d6300000000000000000000000000000000000000000000000000000000000081525081600181518110616a0a57616a0a618541565b60200260200101819052508181600281518110616a2957616a29618541565b6020908102919091010152949350505050565b6020808301518351835192840151600093616a5a9291849190617433565b14159392505050565b60408051808201909152600080825260208201526000616a958460000151856020015185600001518660200151617544565b9050836020015181616aa79190617e4e565b84518590616ab6908390617e4e565b90525060208401525090919050565b6040805180820190915260008082526020820152815183511015616aea5750816137ac565b6020808301519084015160019114616b115750815160208481015190840151829020919020145b8015616b4257825184518590616b28908390617e4e565b9052508251602085018051616b3e908390618c6f565b9052505b509192915050565b6040805180820190915260008082526020820152616b69838383617664565b5092915050565b60606000826000015167ffffffffffffffff811115616b9157616b91617f7b565b6040519080825280601f01601f191660200182016040528015616bbb576020820181803683370190505b5090506000602082019050616b69818560200151866000015161770f565b60606000616be5613ba2565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081616c0257905050905060006040518060400160405280600381526020017f6e70780000000000000000000000000000000000000000000000000000000000815250828280616c5d906186ae565b935060ff1681518110616c7257616c72618541565b60200260200101819052506040518060400160405280600781526020017f5e312e33322e3300000000000000000000000000000000000000000000000000815250604051602001616cc39190618e2c565b604051602081830303815290604052828280616cde906186ae565b935060ff1681518110616cf357616cf3618541565b60200260200101819052506040518060400160405280600881526020017f76616c6964617465000000000000000000000000000000000000000000000000815250828280616d40906186ae565b935060ff1681518110616d5557616d55618541565b602002602001018190525082604051602001616d7191906185dc565b604051602081830303815290604052828280616d8c906186ae565b935060ff1681518110616da157616da1618541565b60200260200101819052506040518060400160405280600a81526020017f2d2d636f6e747261637400000000000000000000000000000000000000000000815250828280616dee906186ae565b935060ff1681518110616e0357616e03618541565b6020026020010181905250616e188784617789565b8282616e23816186ae565b935060ff1681518110616e3857616e38618541565b602090810291909101015285515115616ee45760408051808201909152600b81527f2d2d7265666572656e636500000000000000000000000000000000000000000060208201528282616e8a816186ae565b935060ff1681518110616e9f57616e9f618541565b6020026020010181905250616eb8866000015184617789565b8282616ec3816186ae565b935060ff1681518110616ed857616ed8618541565b60200260200101819052505b856080015115616f525760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282616f2d816186ae565b935060ff1681518110616f4257616f42618541565b6020026020010181905250616fb8565b8415616fb85760408051808201909152601281527f2d2d726571756972655265666572656e6365000000000000000000000000000060208201528282616f97816186ae565b935060ff1681518110616fac57616fac618541565b60200260200101819052505b604086015151156170545760408051808201909152600d81527f2d2d756e73616665416c6c6f770000000000000000000000000000000000000060208201528282617002816186ae565b935060ff168151811061701757617017618541565b60200260200101819052508560400151828280617033906186ae565b935060ff168151811061704857617048618541565b60200260200101819052505b8560600151156170be5760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d65730000000000000000000000006020820152828261709d816186ae565b935060ff16815181106170b2576170b2618541565b60200260200101819052505b60008160ff1667ffffffffffffffff8111156170dc576170dc617f7b565b60405190808252806020026020018201604052801561710f57816020015b60608152602001906001900390816170fa5790505b50905060005b8260ff168160ff16101561716857838160ff168151811061713857617138618541565b6020026020010151828260ff168151811061715557617155618541565b6020908102919091010152600101617115565b50979650505050505050565b60408051808201909152600080825260208201528151835110156171995750816137ac565b815183516020850151600092916171af91618c6f565b6171b99190617e4e565b602084015190915060019082146171da575082516020840151819020908220145b80156171f5578351855186906171f1908390617e4e565b9052505b50929392505050565b60008082600001516172228560000151866020015186600001518760200151617544565b61722c9190618c6f565b90505b835160208501516172409190618c6f565b8111616b69578161725081618e71565b925050826000015161728785602001518361726b9190617e4e565b86516172779190617e4e565b8386600001518760200151617544565b6172919190618c6f565b905061722f565b606060006172a684846171fe565b6172b1906001618c6f565b67ffffffffffffffff8111156172c9576172c9617f7b565b6040519080825280602002602001820160405280156172fc57816020015b60608152602001906001900390816172e75790505b50905060005b8151811015615571576173186157938686616b4a565b82828151811061732a5761732a618541565b6020908102919091010152600101617302565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310617386577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106173b2576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106173d057662386f26fc10000830492506010015b6305f5e10083106173e8576305f5e100830492506008015b61271083106173fc57612710830492506004015b6064831061740e576064830492506002015b600a83106137ac5760010192915050565b600061742b83836177c9565b159392505050565b60008085841161753a57602084116174e6576000841561747e57600161745a866020617e4e565b617465906008618e8b565b617470906002618f89565b61747a9190617e4e565b1990505b835181168561748d8989618c6f565b6174979190617e4e565b805190935082165b8181146174d1578784116174b957879450505050506151a2565b836174c381618f95565b94505082845116905061749f565b6174db8785618c6f565b9450505050506151a2565b8383206174f38588617e4e565b6174fd9087618c6f565b91505b858210617538578482208082036175255761751b8684618c6f565b93505050506151a2565b617530600184617e4e565b925050617500565b505b5092949350505050565b6000838186851161764f57602085116175fe576000851561759057600161756c876020617e4e565b617577906008618e8b565b617582906002618f89565b61758c9190617e4e565b1990505b845181166000876175a18b8b618c6f565b6175ab9190617e4e565b855190915083165b8281146175f0578186106175d8576175cb8b8b618c6f565b96505050505050506151a2565b856175e281618e71565b9650508386511690506175b3565b8596505050505050506151a2565b508383206000905b6176108689617e4e565b821161764d5785832080820361762c57839450505050506151a2565b617637600185618c6f565b935050818061764590618e71565b925050617606565b505b6176598787618c6f565b979650505050505050565b604080518082019091526000808252602082015260006176968560000151866020015186600001518760200151617544565b6020808701805191860191909152519091506176b29082617e4e565b8352845160208601516176c59190618c6f565b81036176d45760008552617706565b835183516176e29190618c6f565b855186906176f1908390617e4e565b90525083516177009082618c6f565b60208601525b50909392505050565b602081106177475781518352617726602084618c6f565b9250617733602083618c6f565b9150617740602082617e4e565b905061770f565b600019811561777657600161775d836020617e4e565b61776990610100618f89565b6177739190617e4e565b90505b9151835183169219169190911790915250565b606060006177978484613c75565b80516020808301516040519394506177b193909101618fac565b60405160208183030381529060405291505092915050565b81518151600091908111156177dc575081515b6020808501519084015160005b83811015617895578251825180821461786557600019602087101561784457600184617816896020617e4e565b6178209190618c6f565b61782b906008618e8b565b617836906002618f89565b6178409190617e4e565b1990505b81811683821681810391146178625797506137ac9650505050505050565b50505b617870602086618c6f565b945061787d602085618c6f565b9350505060208161788e9190618c6f565b90506177e9565b50845186516143239190619004565b610c9f8061902583390190565b610b4a80619cc483390190565b610d878061a80e83390190565b610d5e8061b59583390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161791b617920565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200161791b6040518060800160405280600081526020016000815260200160008152602001600081525090565b602080825282518282018190526000918401906040840190835b818110156179d25783516001600160a01b03168352602093840193909201916001016179ab565b509095945050505050565b60005b838110156179f85781810151838201526020016179e0565b50506000910152565b60008151808452617a198160208601602086016179dd565b601f01601f19169290920160200192915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617b29577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180516001600160a01b03168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015617b0f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352617af9848651617a01565b6020958601959094509290920191600101617abf565b509197505050602094850194929092019150600101617a55565b50929695505050505050565b600081518084526020840193506020830160005b82811015617b895781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101617b49565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617b29577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752617bff6040880182617a01565b9050602082015191508681036020880152617c1a8183617b35565b965050506020938401939190910190600101617bbb565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617b29577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452617c93858351617a01565b94506020938401939190910190600101617c59565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015617b29577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281516001600160a01b0381511686526020810151905060406020870152617d296040870182617b35565b9550506020938401939190910190600101617cd0565b600181811c90821680617d5357607f821691505b602082108103615a6e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060208284031215617d9e57600080fd5b5051919050565b6001600160a01b0384168152826020820152606060408201526000615a546060830184617a01565b8281526040602082015260006151a26040830184617a01565b6001600160a01b0385168152836020820152608060408201526000617e0e6080830185617a01565b905082606083015295945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156137ac576137ac617e1f565b600082617e97577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6001600160a01b03831681526040602082015260006151a26040830184617a01565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351617ef681601a8501602088016179dd565b7f3a20000000000000000000000000000000000000000000000000000000000000601a918401918201528351617f3381601c8401602088016179dd565b01601c01949350505050565b6020815260006138a56020830184617a01565b600060208284031215617f6457600080fd5b81516001600160a01b03811681146138a557600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715617fcd57617fcd617f7b565b60405290565b60008067ffffffffffffffff841115617fee57617fee617f7b565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff8211171561801d5761801d617f7b565b60405283815290508082840185101561803557600080fd5b6155718460208301856179dd565b600082601f83011261805457600080fd5b6138a583835160208501617fd3565b60006020828403121561807557600080fd5b815167ffffffffffffffff81111561808c57600080fd5b6137a884828501618043565b600083516180aa8184602088016179dd565b8351908301906180be8183602088016179dd565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e7472616374200000000000008152600083516180ff81601a8501602088016179dd565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835161813c8160338401602088016179dd565b7f220000000000000000000000000000000000000000000000000000000000000060339290910191820152603401949350505050565b60408152600b60408201527f464f554e4452595f4f555400000000000000000000000000000000000000000060608201526080602082015260006138a56080830184617a01565b6000602082840312156181cb57600080fd5b815167ffffffffffffffff8111156181e257600080fd5b8201601f810184136181f357600080fd5b6137a884825160208401617fd3565b60008551618214818460208a016179dd565b7f2f00000000000000000000000000000000000000000000000000000000000000908301908152855161824e816001840160208a016179dd565b7f2f0000000000000000000000000000000000000000000000000000000000000060019290910191820152845161828c8160028401602089016179dd565b6001818301019150507f2f00000000000000000000000000000000000000000000000000000000000000600182015283516182ce8160028401602088016179dd565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600292909101918201526007019695505050505050565b6040815260006183196040830184617a01565b8281036020840152600481527f2e6173740000000000000000000000000000000000000000000000000000000060208201526040810191505092915050565b60006020828403121561836a57600080fd5b815180151581146138a557600080fd5b7f436f756c64206e6f742066696e642041535420696e20617274696661637420008152600082516183b281601f8501602087016179dd565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f9390910192830152507f6d6c000000000000000000000000000000000000000000000000000000000000603f820152604101919050565b60408152600061841f6040830184617a01565b8281036020840152601181527f2e6173742e6162736f6c7574655061746800000000000000000000000000000060208201526040810191505092915050565b6040815260006184716040830184617a01565b8281036020840152600c81527f2e6173742e6c6963656e7365000000000000000000000000000000000000000060208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b270000000000000000000000008152600082516184e88160148501602087016179dd565b7f275d2e6b656363616b32353600000000000000000000000000000000000000006014939091019283015250602001919050565b60408152600061852f6040830185617a01565b82810360208401526138a18185617a01565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f22000000000000000000000000000000000000000000000000000000000000008152600082516185a88160018501602087016179dd565b7f22000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b600082516185ee8184602087016179dd565b7f2f6275696c642d696e666f000000000000000000000000000000000000000000920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201527f7220636f6e7472616374200000000000000000000000000000000000000000006040820152600082516186a181604b8501602087016179dd565b91909101604b0192915050565b600060ff821660ff81036186c4576186c4617e1f565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81527f69656e742d636c6940000000000000000000000000000000000000000000000060208201526000825161872b8160298501602087016179dd565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f504154480000000000000000000060608201526080602082015260006138a56080830184617a01565b60006020828403121561879157600080fd5b815167ffffffffffffffff8111156187a857600080fd5b8201606081850312156187ba57600080fd5b6187c2617faa565b81518060030b81146187d357600080fd5b8152602082015167ffffffffffffffff8111156187ef57600080fd5b6187fb86828501618043565b602083015250604082015167ffffffffffffffff81111561881b57600080fd5b61882786828501618043565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e6420776974682081527f22000000000000000000000000000000000000000000000000000000000000006020820152600082516188938160218501602087016179dd565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e652077697468207072656669782081527f2700000000000000000000000000000000000000000000000000000000000000602082015260008351618a7f8160218501602088016179dd565b7f2720696e206f75747075743a20000000000000000000000000000000000000006021918401918201528351618abc81602e8401602088016179dd565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c81527f69646174696f6e3a20000000000000000000000000000000000000000000000060208201526000825161872b8160298501602087016179dd565b7f55706772616465207361666574792076616c69646174696f6e206661696c656481527f3a0a000000000000000000000000000000000000000000000000000000000000602082015260008251618b848160228501602087016179dd565b9190910160220192915050565b7f436f6e7472616374206e616d6520000000000000000000000000000000000000815260008251618bc981600e8501602087016179dd565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201527f6163742e6a736f6e000000000000000000000000000000000000000000000000606e820152607601919050565b808201808211156137ac576137ac617e1f565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351618cba8160188501602088016179dd565b7f20696e20000000000000000000000000000000000000000000000000000000006018918401918201528351618cf781601c8401602088016179dd565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b60008251618dfd8184602087016179dd565b7f2000000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f72654000000000815260008251618e6481601c8501602087016179dd565b91909101601c0192915050565b60006000198203618e8457618e84617e1f565b5060010190565b80820281158282048414176137ac576137ac617e1f565b6001815b6001841115618edd57808504811115618ec157618ec1617e1f565b6001841615618ecf57908102905b60019390931c928002618ea6565b935093915050565b600082618ef4575060016137ac565b81618f01575060006137ac565b8160018114618f175760028114618f2157618f3d565b60019150506137ac565b60ff841115618f3257618f32617e1f565b50506001821b6137ac565b5060208310610133831016604e8410600b8410161715618f60575081810a6137ac565b618f6d6000198484618ea2565b8060001904821115618f8157618f81617e1f565b029392505050565b60006138a58383618ee5565b600081618fa457618fa4617e1f565b506000190190565b60008351618fbe8184602088016179dd565b7f3a000000000000000000000000000000000000000000000000000000000000009083019081528351618ff88160018401602088016179dd565b01600101949350505050565b8181036000831280158383131683831282161715616b6957616b69617e1f56fe608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a0033608060405234801561001057600080fd5b50604051610b4a380380610b4a83398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a4c806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bf565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610945565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e858585604051610281939291906109a2565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610945565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8858585604051610281939291906109a2565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109c5565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109e7565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff81111561087457600080fd5b8601601f8101881361088557600080fd5b803567ffffffffffffffff81111561089c57600080fd5b8860208284010111156108ae57600080fd5b959894975092955050506020019190565b6000806000606084860312156108d457600080fd5b6108dd846107f9565b92506108eb602085016107f9565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006109976080830184866108fc565b979650505050505050565b8381526040602082015260006109bc6040830184866108fc565b95945050505050565b6000602082840312156109d757600080fd5b8151801515811461065e57600080fd5b6000825160005b81811015610a0857602081860181015185830152016109ee565b50600092019182525091905056fea264697066735822122041336b1568f49be1aa3dcd208e804b373772741e9b7e1726a8869e99fced60c764736f6c634300081a003360c060405234801561001057600080fd5b50604051610d87380380610d8783398101604081905261002f916100d2565b60016000558282826001600160a01b038316158061005457506001600160a01b038216155b8061006657506001600160a01b038116155b156100845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b0319169190921617905550610115915050565b80516001600160a01b03811681146100cd57600080fd5b919050565b6000806000606084860312156100e757600080fd5b6100f0846100b6565b92506100fe602085016100b6565b915061010c604085016100b6565b90509250925092565b60805160a051610c0961017e6000396000818160ff015281816101da0152818161028b015281816103c3015281816104bc0152818161056d015261063301526000818160af015281816101fc0152818161025e015281816104de01526105400152610c096000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100fa5780635b112591146101215780635e3e9fef14610141578063743e0c9b1461015457600080fd5b806302d5c89914610082578063106e629014610097578063116191b6146100aa575b600080fd5b6100956100903660046109db565b610167565b005b6100956100a5366004610a6d565b610350565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6001546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b61009561014f3660046109db565b610449565b610095610162366004610aa0565b610619565b61016f61065e565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101c0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61022173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000866106a1565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd4906102bb907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610b02565b600060405180830381600087803b1580156102d557600080fd5b505af11580156102e9573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe85858560405161033793929190610b5f565b60405180910390a26103496001600055565b5050505050565b61035861065e565b60015473ffffffffffffffffffffffffffffffffffffffff1633146103a9576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103ea73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001684846106a1565b8273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161043291815260200190565b60405180910390a26104446001600055565b505050565b61045161065e565b60015473ffffffffffffffffffffffffffffffffffffffff1633146104a2576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61050373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000866106a1565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab599061059d907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610b02565b600060405180830381600087803b1580156105b757600080fd5b505af11580156105cb573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced85858560405161033793929190610b5f565b61065b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016333084610722565b50565b60026000540361069a576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b60405173ffffffffffffffffffffffffffffffffffffffff83811660248301526044820183905261044491859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061076e565b60405173ffffffffffffffffffffffffffffffffffffffff84811660248301528381166044830152606482018390526107689186918216906323b872dd906084016106db565b50505050565b600061079073ffffffffffffffffffffffffffffffffffffffff841683610809565b905080516000141580156107b55750808060200190518101906107b39190610b82565b155b15610444576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606108178383600061081e565b9392505050565b60608147101561085c576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610800565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516108859190610ba4565b60006040518083038185875af1925050503d80600081146108c2576040519150601f19603f3d011682016040523d82523d6000602084013e6108c7565b606091505b50915091506108d78683836108e1565b9695505050505050565b6060826108f6576108f182610970565b610817565b815115801561091a575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610969576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610800565b5080610817565b8051156109805780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff811681146109d657600080fd5b919050565b6000806000806000608086880312156109f357600080fd5b6109fc866109b2565b945060208601359350604086013567ffffffffffffffff811115610a1f57600080fd5b8601601f81018813610a3057600080fd5b803567ffffffffffffffff811115610a4757600080fd5b886020828401011115610a5957600080fd5b959894975060200195606001359392505050565b600080600060608486031215610a8257600080fd5b610a8b846109b2565b95602085013595506040909401359392505050565b600060208284031215610ab257600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff85166020820152836040820152608060608201526000610b54608083018486610ab9565b979650505050505050565b838152604060208201526000610b79604083018486610ab9565b95945050505050565b600060208284031215610b9457600080fd5b8151801515811461081757600080fd5b6000825160005b81811015610bc55760208186018101518583015201610bab565b50600092019182525091905056fea2646970667358221220ed25bc9308ed3d8f9b30e14ddf88cadd2d738ead8bcd8eb8fb89509e51695cd564736f6c634300081a00336080604052348015600f57600080fd5b506001600055610d3a806100246000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610895565b6102f9565b34801561010057600080fd5b5061006a61010f366004610981565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a6b565b60405180910390a15050565b610226610372565b6000610233600285610ad5565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b7e565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610c08565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610ccb565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610ce8565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff81111561072657600080fd5b8301601f8101851361073757600080fd5b803567ffffffffffffffff81111561074e57600080fd5b85602082840101111561076057600080fd5b6020919091019590945092505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e6576107e6610770565b604052919050565b600082601f8301126107ff57600080fd5b813567ffffffffffffffff81111561081957610819610770565b61084a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079f565b81815284602083860101111561085f57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087c565b6000806000606084860312156108aa57600080fd5b833567ffffffffffffffff8111156108c157600080fd5b6108cd868287016107ee565b9350506020840135915060408401356108e58161087c565b809150509250925092565b600067ffffffffffffffff82111561090a5761090a610770565b5060051b60200190565b600082601f83011261092557600080fd5b8135610938610933826108f0565b61079f565b8082825260208201915060208360051b86010192508583111561095a57600080fd5b602085015b8381101561097757803583526020928301920161095f565b5095945050505050565b60008060006060848603121561099657600080fd5b833567ffffffffffffffff8111156109ad57600080fd5b8401601f810186136109be57600080fd5b80356109cc610933826108f0565b8082825260208201915060208360051b8501019250888311156109ee57600080fd5b602084015b83811015610a3057803567ffffffffffffffff811115610a1257600080fd5b610a218b6020838901016107ee565b845250602092830192016109f3565b509550505050602084013567ffffffffffffffff811115610a5057600080fd5b610a5c86828701610914565b9250506106f36040850161088a565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610b0b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b2b578181015183820152602001610b13565b50506000910152565b60008151808452610b4c816020860160208601610b10565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610bb360a0830186610b34565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610bfe578151865260209586019590910190600101610be0565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610c86858351610b34565b94506020938401939190910190600101610c4c565b505050508281036040840152610cb18186610bcc565b915050610cc2606083018415159052565b95945050505050565b600060208284031215610cdd57600080fd5b81516104f98161087c565b60008251610cfa818460208701610b10565b919091019291505056fea2646970667358221220556072e1abafc3c4063b8cce832228b4f309b93726aaa6a6dfab20cb880c6d1864736f6c634300081a0033a26469706673582212206c7d17709d0b69a2ea55c6d800efcb900d2422dfe8e6cff6f73e98d3c88267f464736f6c634300081a0033", } // ZetaConnectorNativeTestABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/zetaconnectornonnative.sol/zetaconnectornonnative.go b/v2/pkg/zetaconnectornonnative.sol/zetaconnectornonnative.go index 65ee20af..e605370e 100644 --- a/v2/pkg/zetaconnectornonnative.sol/zetaconnectornonnative.go +++ b/v2/pkg/zetaconnectornonnative.sol/zetaconnectornonnative.go @@ -32,7 +32,7 @@ var ( // ZetaConnectorNonNativeMetaData contains all meta data concerning the ZetaConnectorNonNative contract. var ZetaConnectorNonNativeMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_gateway\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_zetaToken\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_tssAddress\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"gateway\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIGatewayEVM\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"maxSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"receiveTokens\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setMaxSupply\",\"inputs\":[{\"name\":\"_maxSupply\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"tssAddress\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawAndRevert\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"internalSendHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"zetaToken\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"MaxSupplyUpdated\",\"inputs\":[{\"name\":\"maxSupply\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndRevert\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ExceedsMaxSupply\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x60c060405260001960025534801561001657600080fd5b50604051610f85380380610f85833981016040819052610035916100d8565b60016000558282826001600160a01b038316158061005a57506001600160a01b038216155b8061006c57506001600160a01b038116155b1561008a5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b031916919092161790555061011b915050565b80516001600160a01b03811681146100d357600080fd5b919050565b6000806000606084860312156100ed57600080fd5b6100f6846100bc565b9250610104602085016100bc565b9150610112604085016100bc565b90509250925092565b60805160a051610deb61019a6000396000818161012601528181610216015281816103580152818161041e01528181610541015281816106630152818161077c015281816108be015281816109840152610af101526000818160d501528181610322015281816103ef0152818161088801526109550152610deb6000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80635b112591116100765780636f8b44b01161005b5780636f8b44b01461017b578063743e0c9b1461018e578063d5abeb01146101a157600080fd5b80635b112591146101485780635e3e9fef1461016857600080fd5b806302d5c899146100a8578063106e6290146100bd578063116191b6146100d057806321e093b114610121575b600080fd5b6100bb6100b6366004610bca565b6101b8565b005b6100bb6100cb366004610c59565b6104e3565b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b6001546100f79073ffffffffffffffffffffffffffffffffffffffff1681565b6100bb610176366004610bca565b61071e565b6100bb610189366004610c8c565b610a30565b6100bb61019c366004610c8c565b610abc565b6101aa60025481565b604051908152602001610118565b6101c0610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610211576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561027f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a39190610ca5565b6102ad9086610cbe565b11156102e5576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561039c57600080fd5b505af11580156103b0573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd4915061044e907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d47565b600060405180830381600087803b15801561046857600080fd5b505af115801561047c573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516104ca93929190610d92565b60405180910390a26104dc6001600055565b5050505050565b6104eb610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff16331461053c576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ce9190610ca5565b6105d89084610cbe565b1115610610576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156106a757600080fd5b505af11580156106bb573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161070791815260200190565b60405180910390a26107196001600055565b505050565b610726610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610777576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108099190610ca5565b6108139086610cbe565b111561084b576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561090257600080fd5b505af1158015610916573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506109b4907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d47565b600060405180830381600087803b1580156109ce57600080fd5b505af11580156109e2573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516104ca93929190610d92565b60015473ffffffffffffffffffffffffffffffffffffffff163314610a81576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a150565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610b4a57600080fd5b505af11580156104dc573d6000803e3d6000fd5b600260005403610b9a576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff81168114610bc557600080fd5b919050565b600080600080600060808688031215610be257600080fd5b610beb86610ba1565b945060208601359350604086013567ffffffffffffffff80821115610c0f57600080fd5b818801915088601f830112610c2357600080fd5b813581811115610c3257600080fd5b896020828501011115610c4457600080fd5b96999598505060200195606001359392505050565b600080600060608486031215610c6e57600080fd5b610c7784610ba1565b95602085013595506040909401359392505050565b600060208284031215610c9e57600080fd5b5035919050565b600060208284031215610cb757600080fd5b5051919050565b80820180821115610cf8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015260806060830152610d87608083018486610cfe565b979650505050505050565b838152604060208201526000610dac604083018486610cfe565b9594505050505056fea2646970667358221220c1247105cac785b4e05127d6e13cb72f7443d98af6ef964c579e161b48ffece664736f6c63430008150033", + Bin: "0x60c060405260001960025534801561001657600080fd5b50604051610f9a380380610f9a833981016040819052610035916100d8565b60016000558282826001600160a01b038316158061005a57506001600160a01b038216155b8061006c57506001600160a01b038116155b1561008a5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b031916919092161790555061011b915050565b80516001600160a01b03811681146100d357600080fd5b919050565b6000806000606084860312156100ed57600080fd5b6100f6846100bc565b9250610104602085016100bc565b9150610112604085016100bc565b90509250925092565b60805160a051610e0061019a6000396000818161012601528181610216015281816103580152818161041e01528181610541015281816106630152818161077c015281816108be015281816109840152610af101526000818160d501528181610322015281816103ef0152818161088801526109550152610e006000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80635b112591116100765780636f8b44b01161005b5780636f8b44b01461017b578063743e0c9b1461018e578063d5abeb01146101a157600080fd5b80635b112591146101485780635e3e9fef1461016857600080fd5b806302d5c899146100a8578063106e6290146100bd578063116191b6146100d057806321e093b114610121575b600080fd5b6100bb6100b6366004610bca565b6101b8565b005b6100bb6100cb366004610c5c565b6104e3565b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b6001546100f79073ffffffffffffffffffffffffffffffffffffffff1681565b6100bb610176366004610bca565b61071e565b6100bb610189366004610c8f565b610a30565b6100bb61019c366004610c8f565b610abc565b6101aa60025481565b604051908152602001610118565b6101c0610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610211576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561027f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a39190610ca8565b6102ad9086610cc1565b11156102e5576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561039c57600080fd5b505af11580156103b0573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd4915061044e907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d4a565b600060405180830381600087803b15801561046857600080fd5b505af115801561047c573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516104ca93929190610da7565b60405180910390a26104dc6001600055565b5050505050565b6104eb610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff16331461053c576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ce9190610ca8565b6105d89084610cc1565b1115610610576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156106a757600080fd5b505af11580156106bb573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161070791815260200190565b60405180910390a26107196001600055565b505050565b610726610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610777576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108099190610ca8565b6108139086610cc1565b111561084b576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561090257600080fd5b505af1158015610916573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506109b4907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d4a565b600060405180830381600087803b1580156109ce57600080fd5b505af11580156109e2573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516104ca93929190610da7565b60015473ffffffffffffffffffffffffffffffffffffffff163314610a81576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a150565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610b4a57600080fd5b505af11580156104dc573d6000803e3d6000fd5b600260005403610b9a576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff81168114610bc557600080fd5b919050565b600080600080600060808688031215610be257600080fd5b610beb86610ba1565b945060208601359350604086013567ffffffffffffffff811115610c0e57600080fd5b8601601f81018813610c1f57600080fd5b803567ffffffffffffffff811115610c3657600080fd5b886020828401011115610c4857600080fd5b959894975060200195606001359392505050565b600080600060608486031215610c7157600080fd5b610c7a84610ba1565b95602085013595506040909401359392505050565b600060208284031215610ca157600080fd5b5035919050565b600060208284031215610cba57600080fd5b5051919050565b80820180821115610cfb577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff85166020820152836040820152608060608201526000610d9c608083018486610d01565b979650505050505050565b838152604060208201526000610dc1604083018486610d01565b9594505050505056fea2646970667358221220eef04aea35a49145971cb42500074f7c44d89db08a5df2b7d071494c05cc1a2a64736f6c634300081a0033", } // ZetaConnectorNonNativeABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/zetaconnectornonnative.t.sol/zetaconnectornonnativetest.go b/v2/pkg/zetaconnectornonnative.t.sol/zetaconnectornonnativetest.go index cf368630..39cc897c 100644 --- a/v2/pkg/zetaconnectornonnative.t.sol/zetaconnectornonnativetest.go +++ b/v2/pkg/zetaconnectornonnative.t.sol/zetaconnectornonnativetest.go @@ -50,7 +50,7 @@ type StdInvariantFuzzSelector struct { // ZetaConnectorNonNativeTestMetaData contains all meta data concerning the ZetaConnectorNonNativeTest contract. var ZetaConnectorNonNativeTestMetaData = &bind.MetaData{ ABI: "[{\"type\":\"function\",\"name\":\"IS_TEST\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"excludeSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"excludedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"failed\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setUp\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"targetArtifactSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzArtifactSelector[]\",\"components\":[{\"name\":\"artifact\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetArtifacts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedArtifacts_\",\"type\":\"string[]\",\"internalType\":\"string[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetContracts\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedContracts_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetInterfaces\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzInterface[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"artifacts\",\"type\":\"string[]\",\"internalType\":\"string[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSelectors\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\",\"internalType\":\"structStdInvariant.FuzzSelector[]\",\"components\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selectors\",\"type\":\"bytes4[]\",\"internalType\":\"bytes4[]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"targetSenders\",\"inputs\":[],\"outputs\":[{\"name\":\"targetedSenders_\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Call\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"asset\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"payload\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Executed\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ExecutedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedERC20\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"destination\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNoParams\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedNonPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"strs\",\"type\":\"string[]\",\"indexed\":false,\"internalType\":\"string[]\"},{\"name\":\"nums\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedPayable\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"str\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"num\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"flag\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReceivedRevert\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RevertedWithERC20\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndCall\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawAndRevert\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_address\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_array\",\"inputs\":[{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_bytes32\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_int\",\"inputs\":[{\"name\":\"\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_address\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256[]\",\"indexed\":false,\"internalType\":\"uint256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256[]\",\"indexed\":false,\"internalType\":\"int256[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_array\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"address[]\",\"indexed\":false,\"internalType\":\"address[]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_bytes32\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_decimal_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"decimals\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_int\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"int256\",\"indexed\":false,\"internalType\":\"int256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_string\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_named_uint\",\"inputs\":[{\"name\":\"key\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"val\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_string\",\"inputs\":[{\"name\":\"\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"log_uint\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"logs\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ApprovalFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CustodyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"DepositFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExecutionFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientERC20Amount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientETHAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]}]", - Bin: "0x6080604052600c8054600160ff199182168117909255601f8054909116909117905534801561002d57600080fd5b50610f7e8061003d6000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806385226c811161008c578063b5508aa911610066578063b5508aa9146101bb578063ba414fa6146101c3578063e20c9f71146101db578063fa7626d4146101e357600080fd5b806385226c8114610189578063916a17c61461019e578063b0464fdc146101b357600080fd5b80633e5e3c23116100bd5780633e5e3c23146101645780633f7286f41461016c57806366d9a9a01461017457600080fd5b80630a9254e4146100e45780631ed7831c146101315780632ade38801461014f575b600080fd5b61012f602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000908116301790915560258054821661123417905560268054909116615678179055565b005b6101396101f0565b6040516101469190610afb565b60405180910390f35b61015761025f565b6040516101469190610bb9565b6101396103ae565b61013961041b565b61017c610488565b6040516101469190610d1f565b61019161060a565b6040516101469190610dc2565b6101a66106da565b6040516101469190610e42565b6101a66107e2565b6101916108ea565b6101cb6109ba565b6040519015158152602001610146565b610139610a8e565b601f546101cb9060ff1681565b6060601680548060200260200160405190810160405280929190818152602001828054801561025557602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831161022a575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b828210156103a5576000848152602080822060408051808201825260028702909201805473ffffffffffffffffffffffffffffffffffffffff168352600181018054835181870281018701909452808452939591948681019491929084015b8282101561038e57838290600052602060002001805461030190610edc565b80601f016020809104026020016040519081016040528092919081815260200182805461032d90610edc565b801561037a5780601f1061034f5761010080835404028352916020019161037a565b820191906000526020600020905b81548152906001019060200180831161035d57829003601f168201915b5050505050815260200190600101906102e2565b505050508152505081526020019060010190610283565b50505050905090565b606060188054806020026020016040519081016040528092919081815260200182805480156102555760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831161022a575050505050905090565b606060178054806020026020016040519081016040528092919081815260200182805480156102555760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831161022a575050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156103a557838290600052602060002090600202016040518060400160405290816000820180546104df90610edc565b80601f016020809104026020016040519081016040528092919081815260200182805461050b90610edc565b80156105585780601f1061052d57610100808354040283529160200191610558565b820191906000526020600020905b81548152906001019060200180831161053b57829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156105f257602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161059f5790505b505050505081525050815260200190600101906104ac565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156103a557838290600052602060002001805461064d90610edc565b80601f016020809104026020016040519081016040528092919081815260200182805461067990610edc565b80156106c65780601f1061069b576101008083540402835291602001916106c6565b820191906000526020600020905b8154815290600101906020018083116106a957829003601f168201915b50505050508152602001906001019061062e565b6060601d805480602002602001604051908101604052809291908181526020016000905b828210156103a557600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff1683526001810180548351818702810187019094528084529394919385830193928301828280156107ca57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116107775790505b505050505081525050815260200190600101906106fe565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156103a557600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff1683526001810180548351818702810187019094528084529394919385830193928301828280156108d257602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161087f5790505b50505050508152505081526020019060010190610806565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156103a557838290600052602060002001805461092d90610edc565b80601f016020809104026020016040519081016040528092919081815260200182805461095990610edc565b80156109a65780601f1061097b576101008083540402835291602001916109a6565b820191906000526020600020905b81548152906001019060200180831161098957829003601f168201915b50505050508152602001906001019061090e565b60085460009060ff16156109d2575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015610a63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a879190610f2f565b1415905090565b606060158054806020026020016040519081016040528092919081815260200182805480156102555760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831161022a575050505050905090565b6020808252825182820181905260009190848201906040850190845b81811015610b4957835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101610b17565b50909695505050505050565b6000815180845260005b81811015610b7b57602081850181015186830182015201610b5f565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b85811015610cb2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08b85030187528251805173ffffffffffffffffffffffffffffffffffffffff1685528901518985018990528051898601819052908a0190606081881b870181019190870190855b81811015610c9c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0898503018352610c8a848651610b55565b948e01949350918d0191600101610c50565b505050978a019794505091880191600101610be0565b50919a9950505050505050505050565b600081518084526020808501945080840160005b83811015610d145781517fffffffff000000000000000000000000000000000000000000000000000000001687529582019590820190600101610cd6565b509495945050505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b83811015610db4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc089840301855281518051878552610d8888860182610b55565b91890151858303868b0152919050610da08183610cc2565b968901969450505090860190600101610d46565b509098975050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015610e35577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452610e23858351610b55565b94509285019290850190600101610de9565b5092979650505050505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b83811015610db4578883037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00185528151805173ffffffffffffffffffffffffffffffffffffffff168452870151878401879052610ec987850182610cc2565b9588019593505090860190600101610e69565b600181811c90821680610ef057607f821691505b602082108103610f29577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b600060208284031215610f4157600080fd5b505191905056fea264697066735822122083e013d449da6dcb799e894a188db404e0952124d8575c310870e61acfff683164736f6c63430008150033", + Bin: "0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602c57600080fd5b50610f868061003c6000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806385226c811161008c578063b5508aa911610066578063b5508aa9146101bb578063ba414fa6146101c3578063e20c9f71146101db578063fa7626d4146101e357600080fd5b806385226c8114610189578063916a17c61461019e578063b0464fdc146101b357600080fd5b80633e5e3c23116100bd5780633e5e3c23146101645780633f7286f41461016c57806366d9a9a01461017457600080fd5b80630a9254e4146100e45780631ed7831c146101315780632ade38801461014f575b600080fd5b61012f602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000908116301790915560258054821661123417905560268054909116615678179055565b005b6101396101f0565b6040516101469190610afb565b60405180910390f35b61015761025f565b6040516101469190610bb8565b6101396103ae565b61013961041b565b61017c610488565b6040516101469190610d2b565b61019161060a565b6040516101469190610dc9565b6101a66106da565b6040516101469190610e40565b6101a66107e2565b6101916108ea565b6101cb6109ba565b6040519015158152602001610146565b610139610a8e565b601f546101cb9060ff1681565b6060601680548060200260200160405190810160405280929190818152602001828054801561025557602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831161022a575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b828210156103a5576000848152602080822060408051808201825260028702909201805473ffffffffffffffffffffffffffffffffffffffff168352600181018054835181870281018701909452808452939591948681019491929084015b8282101561038e57838290600052602060002001805461030190610ee4565b80601f016020809104026020016040519081016040528092919081815260200182805461032d90610ee4565b801561037a5780601f1061034f5761010080835404028352916020019161037a565b820191906000526020600020905b81548152906001019060200180831161035d57829003601f168201915b5050505050815260200190600101906102e2565b505050508152505081526020019060010190610283565b50505050905090565b606060188054806020026020016040519081016040528092919081815260200182805480156102555760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831161022a575050505050905090565b606060178054806020026020016040519081016040528092919081815260200182805480156102555760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831161022a575050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156103a557838290600052602060002090600202016040518060400160405290816000820180546104df90610ee4565b80601f016020809104026020016040519081016040528092919081815260200182805461050b90610ee4565b80156105585780601f1061052d57610100808354040283529160200191610558565b820191906000526020600020905b81548152906001019060200180831161053b57829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156105f257602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161059f5790505b505050505081525050815260200190600101906104ac565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156103a557838290600052602060002001805461064d90610ee4565b80601f016020809104026020016040519081016040528092919081815260200182805461067990610ee4565b80156106c65780601f1061069b576101008083540402835291602001916106c6565b820191906000526020600020905b8154815290600101906020018083116106a957829003601f168201915b50505050508152602001906001019061062e565b6060601d805480602002602001604051908101604052809291908181526020016000905b828210156103a557600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff1683526001810180548351818702810187019094528084529394919385830193928301828280156107ca57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116107775790505b505050505081525050815260200190600101906106fe565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156103a557600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff1683526001810180548351818702810187019094528084529394919385830193928301828280156108d257602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161087f5790505b50505050508152505081526020019060010190610806565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156103a557838290600052602060002001805461092d90610ee4565b80601f016020809104026020016040519081016040528092919081815260200182805461095990610ee4565b80156109a65780601f1061097b576101008083540402835291602001916109a6565b820191906000526020600020905b81548152906001019060200180831161098957829003601f168201915b50505050508152602001906001019061090e565b60085460009060ff16156109d2575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015610a63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a879190610f37565b1415905090565b606060158054806020026020016040519081016040528092919081815260200182805480156102555760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831161022a575050505050905090565b602080825282518282018190526000918401906040840190835b81811015610b4957835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101610b15565b509095945050505050565b6000815180845260005b81811015610b7a57602081850181015186830182015201610b5e565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015610cc1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805173ffffffffffffffffffffffffffffffffffffffff168652602090810151604082880181905281519088018190529101906060600582901b88018101919088019060005b81811015610ca7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352610c91848651610b54565b6020958601959094509290920191600101610c57565b509197505050602094850194929092019150600101610be0565b50929695505050505050565b600081518084526020840193506020830160005b82811015610d215781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101610ce1565b5093949350505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015610cc1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752610d976040880182610b54565b9050602082015191508681036020880152610db28183610ccd565b965050506020938401939190910190600101610d53565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015610cc1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452610e2b858351610b54565b94506020938401939190910190600101610df1565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015610cc1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815173ffffffffffffffffffffffffffffffffffffffff81511686526020810151905060406020870152610ece6040870182610ccd565b9550506020938401939190910190600101610e68565b600181811c90821680610ef857607f821691505b602082108103610f31577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b600060208284031215610f4957600080fd5b505191905056fea2646970667358221220e6ce98b1e4db0be37c7d41156129bf2894aeb3fbfccc1ebf666e905caf87609e64736f6c634300081a0033", } // ZetaConnectorNonNativeTestABI is the input ABI used to generate the binding from. diff --git a/v2/pkg/zrc20new.sol/zrc20new.go b/v2/pkg/zrc20new.sol/zrc20new.go index 335ab913..aceb41d1 100644 --- a/v2/pkg/zrc20new.sol/zrc20new.go +++ b/v2/pkg/zrc20new.sol/zrc20new.go @@ -32,7 +32,7 @@ var ( // ZRC20NewMetaData contains all meta data concerning the ZRC20New contract. var ZRC20NewMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"name_\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"symbol_\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"decimals_\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"chainid_\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"coinType_\",\"type\":\"uint8\",\"internalType\":\"enumCoinType\"},{\"name\":\"gasLimit_\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"systemContractAddress_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"gatewayContractAddress_\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"CHAIN_ID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"COIN_TYPE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumCoinType\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"FUNGIBLE_MODULE_ADDRESS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"GAS_LIMIT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"GATEWAY_CONTRACT_ADDRESS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PROTOCOL_FLAT_FEE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"SYSTEM_CONTRACT_ADDRESS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"allowance\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approve\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"balanceOf\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"burn\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"decimals\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"name\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"symbol\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"totalSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transfer\",\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferFrom\",\"inputs\":[{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateGasLimit\",\"inputs\":[{\"name\":\"gasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateProtocolFlatFee\",\"inputs\":[{\"name\":\"protocolFlatFee\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateSystemContractAddress\",\"inputs\":[{\"name\":\"addr\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"to\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawGasFee\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Approval\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"from\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Transfer\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UpdatedGasLimit\",\"inputs\":[{\"name\":\"gasLimit\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UpdatedProtocolFlatFee\",\"inputs\":[{\"name\":\"protocolFlatFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"UpdatedSystemContract\",\"inputs\":[{\"name\":\"systemContract\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawal\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"gasFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"protocolFlatFee\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"CallerIsNotFungibleModule\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"GasFeeTransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LowAllowance\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"LowBalance\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroAddress\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroGasCoin\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZeroGasPrice\",\"inputs\":[]}]", - Bin: "0x60c06040523480156200001157600080fd5b50604051620019fe380380620019fe8339810160408190526200003491620001fa565b3373735b14bb79463307aacbed86daf3322b1e6226ab146200006957604051632b2add3d60e01b815260040160405180910390fd5b600762000077898262000359565b50600862000086888262000359565b506009805460ff191660ff88161790556080859052836002811115620000b057620000b062000425565b60a0816002811115620000c757620000c762000425565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506200043b9350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013057600080fd5b81516001600160401b03808211156200014d576200014d62000108565b604051601f8301601f19908116603f0116810190828211818310171562000178576200017862000108565b816040528381526020925086838588010111156200019557600080fd5b600091505b83821015620001b957858201830151818301840152908201906200019a565b600093810190920192909252949350505050565b805160038110620001dd57600080fd5b919050565b80516001600160a01b0381168114620001dd57600080fd5b600080600080600080600080610100898b0312156200021857600080fd5b88516001600160401b03808211156200023057600080fd5b6200023e8c838d016200011e565b995060208b01519150808211156200025557600080fd5b50620002648b828c016200011e565b975050604089015160ff811681146200027c57600080fd5b60608a015190965094506200029460808a01620001cd565b935060a08901519250620002ab60c08a01620001e2565b9150620002bb60e08a01620001e2565b90509295985092959890939650565b600181811c90821680620002df57607f821691505b6020821081036200030057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200035457600081815260208120601f850160051c810160208610156200032f5750805b601f850160051c820191505b8181101562000350578281556001016200033b565b5050505b505050565b81516001600160401b0381111562000375576200037562000108565b6200038d81620003868454620002ca565b8462000306565b602080601f831160018114620003c55760008415620003ac5750858301515b600019600386901b1c1916600185901b17855562000350565b600085815260208120601f198616915b82811015620003f657888601518255948401946001909101908401620003d5565b5085821015620004155787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161158f6200046f60003960006102f30152600081816102c4015281816109430152610a49015261158f6000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113b8565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c906113f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610478906113f1565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611473565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d4918690611486565b60405180910390a250600192915050565b60606008805461044c906113f1565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114a8565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ca565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce91906114f9565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad09190611516565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f919061152f565b610b299190611546565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611473565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e89908490611546565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611473565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611473565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e9190611546565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d8908490611546565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff8082111561131057600080fd5b818501915085601f83011261132457600080fd5b813581811115611336576113366112b6565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561137c5761137c6112b6565b8160405282815288602084870101111561139557600080fd5b826020860160208301376000602093820184015298969091013596505050505050565b600080604083850312156113cb57600080fd5b82356113d6816111ad565b915060208301356113e6816111ad565b809150509250929050565b600181811c9082168061140557607f821691505b60208210810361143e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611444565b604081526000611499604083018561112f565b90508260208301529392505050565b6000602082840312156114ba57600080fd5b815180151581146111a657600080fd5b6080815260006114dd608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561150b57600080fd5b81516111a6816111ad565b60006020828403121561152857600080fd5b5051919050565b80820281158282048414176104e0576104e0611444565b808201808211156104e0576104e061144456fea26469706673582212207b3cc2ba67a436eb1551f5330365347b3502d42c3eefdd1c782af1c00e42e23b64736f6c63430008150033", + Bin: "0x60c060405234801561001057600080fd5b506040516119e83803806119e883398101604081905261002f916101db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600761006f898261032d565b50600861007c888261032d565b506009805460ff191660ff881617905560808590528360028111156100a3576100a36103eb565b60a08160028111156100b7576100b76103eb565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104019350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261011e57600080fd5b81516001600160401b03811115610137576101376100f7565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610165576101656100f7565b60405281815283820160200185101561017d57600080fd5b60005b8281101561019c57602081860181015183830182015201610180565b506000918101602001919091529392505050565b8051600381106101bf57600080fd5b919050565b80516001600160a01b03811681146101bf57600080fd5b600080600080600080600080610100898b0312156101f857600080fd5b88516001600160401b0381111561020e57600080fd5b61021a8b828c0161010d565b60208b015190995090506001600160401b0381111561023857600080fd5b6102448b828c0161010d565b975050604089015160ff8116811461025b57600080fd5b60608a0151909650945061027160808a016101b0565b60a08a0151909450925061028760c08a016101c4565b915061029560e08a016101c4565b90509295985092959890939650565b600181811c908216806102b857607f821691505b6020821081036102d857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561032857806000526020600020601f840160051c810160208510156103055750805b601f840160051c820191505b818110156103255760008155600101610311565b50505b505050565b81516001600160401b03811115610346576103466100f7565b61035a8161035484546102a4565b846102de565b6020601f82116001811461038e57600083156103765750848201515b600019600385901b1c1916600184901b178455610325565b600084815260208120601f198516915b828110156103be578785015182556020948501946001909201910161039e565b50848210156103dc5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a0516115b461043460003960006102f30152600081816102c4015281816109430152610a4901526115b46000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c90611416565b80601f016020809104026020016040519081016040528092919081815260200182805461047890611416565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611498565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d49186906114ab565b60405180910390a250600192915050565b60606008805461044c90611416565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114cd565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ef565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce919061151e565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad0919061153b565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f9190611554565b610b29919061156b565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611498565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e8990849061156b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611498565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611498565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e919061156b565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d890849061156b565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff81111561130f57600080fd5b8301601f8101851361132057600080fd5b803567ffffffffffffffff81111561133a5761133a6112b6565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156113a6576113a66112b6565b6040528181528282016020018710156113be57600080fd5b8160208401602083013760006020928201830152969401359450505050565b600080604083850312156113f057600080fd5b82356113fb816111ad565b9150602083013561140b816111ad565b809150509250929050565b600181811c9082168061142a57607f821691505b602082108103611463577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611469565b6040815260006114be604083018561112f565b90508260208301529392505050565b6000602082840312156114df57600080fd5b815180151581146111a657600080fd5b608081526000611502608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561153057600080fd5b81516111a6816111ad565b60006020828403121561154d57600080fd5b5051919050565b80820281158282048414176104e0576104e0611469565b808201808211156104e0576104e061146956fea26469706673582212207bc62dfdede7c005315010b4244c5d1661fb65fbf23259603e26342f3a5148c464736f6c634300081a0033", } // ZRC20NewABI is the input ABI used to generate the binding from. diff --git a/v2/typechain-types/factories/Address__factory.ts b/v2/typechain-types/factories/Address__factory.ts index cd7e6883..0c17e5c9 100644 --- a/v2/typechain-types/factories/Address__factory.ts +++ b/v2/typechain-types/factories/Address__factory.ts @@ -42,7 +42,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220193c24b71be715f2946bd8d3447d08cc7f4cf98e79416d7bbf7c0fadbb16712764736f6c63430008150033"; + "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122051aee3d3cbb51dd227047d3a402e288a90aab6ebded8bce84a18c9d83c6fa8b264736f6c634300081a0033"; type AddressConstructorParams = | [signer?: Signer] diff --git a/v2/typechain-types/factories/BeaconProxy__factory.ts b/v2/typechain-types/factories/BeaconProxy__factory.ts index 88985b96..09e0f9de 100644 --- a/v2/typechain-types/factories/BeaconProxy__factory.ts +++ b/v2/typechain-types/factories/BeaconProxy__factory.ts @@ -97,7 +97,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a06040526040516105e53803806105e583398101604081905261002291610387565b61002c828261003e565b506001600160a01b031660805261047e565b610047826100fe565b6040516001600160a01b038316907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a28051156100f2576100ed826001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e79190610447565b82610211565b505050565b6100fa610288565b5050565b806001600160a01b03163b60000361013957604051631933b43b60e21b81526001600160a01b03821660048201526024015b60405180910390fd5b807fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392831617905560408051635c60da1b60e01b81529051600092841691635c60da1b9160048083019260209291908290030181865afa1580156101b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d99190610447565b9050806001600160a01b03163b6000036100fa57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610130565b6060600080846001600160a01b03168460405161022e9190610462565b600060405180830381855af49150503d8060008114610269576040519150601f19603f3d011682016040523d82523d6000602084013e61026e565b606091505b50909250905061027f8583836102a9565b95945050505050565b34156102a75760405163b398979f60e01b815260040160405180910390fd5b565b6060826102be576102b982610308565b610301565b81511580156102d557506001600160a01b0384163b155b156102fe57604051639996b31560e01b81526001600160a01b0385166004820152602401610130565b50805b9392505050565b8051156103185780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b80516001600160a01b038116811461034857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561037e578181015183820152602001610366565b50506000910152565b6000806040838503121561039a57600080fd5b6103a383610331565b60208401519092506001600160401b03808211156103c057600080fd5b818501915085601f8301126103d457600080fd5b8151818111156103e6576103e661034d565b604051601f8201601f19908116603f0116810190838211818310171561040e5761040e61034d565b8160405282815288602084870101111561042757600080fd5b610438836020830160208801610363565b80955050505050509250929050565b60006020828403121561045957600080fd5b61030182610331565b60008251610474818460208701610363565b9190910192915050565b60805161014d61049860003960006024015261014d6000f3fe608060405261000c61000e565b005b61001e610019610020565b6100b6565b565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561008d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100b191906100da565b905090565b3660008037600080366000845af43d6000803e8080156100d5573d6000f35b3d6000fd5b6000602082840312156100ec57600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461011057600080fd5b939250505056fea26469706673582212203f50e3539b09e66688712f265ca09ddfce61692f2aebd7dc1db053376883b5cd64736f6c63430008150033"; + "0x60a06040526040516105eb3803806105eb83398101604081905261002291610387565b61002c828261003e565b506001600160a01b0316608052610484565b610047826100fe565b6040516001600160a01b038316907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a28051156100f2576100ed826001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e7919061044d565b82610211565b505050565b6100fa610288565b5050565b806001600160a01b03163b60000361013957604051631933b43b60e21b81526001600160a01b03821660048201526024015b60405180910390fd5b807fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392831617905560408051635c60da1b60e01b81529051600092841691635c60da1b9160048083019260209291908290030181865afa1580156101b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d9919061044d565b9050806001600160a01b03163b6000036100fa57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610130565b6060600080846001600160a01b03168460405161022e9190610468565b600060405180830381855af49150503d8060008114610269576040519150601f19603f3d011682016040523d82523d6000602084013e61026e565b606091505b50909250905061027f8583836102a9565b95945050505050565b34156102a75760405163b398979f60e01b815260040160405180910390fd5b565b6060826102be576102b982610308565b610301565b81511580156102d557506001600160a01b0384163b155b156102fe57604051639996b31560e01b81526001600160a01b0385166004820152602401610130565b50805b9392505050565b8051156103185780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b80516001600160a01b038116811461034857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561037e578181015183820152602001610366565b50506000910152565b6000806040838503121561039a57600080fd5b6103a383610331565b60208401519092506001600160401b038111156103bf57600080fd5b8301601f810185136103d057600080fd5b80516001600160401b038111156103e9576103e961034d565b604051601f8201601f19908116603f011681016001600160401b03811182821017156104175761041761034d565b60405281815282820160200187101561042f57600080fd5b610440826020830160208601610363565b8093505050509250929050565b60006020828403121561045f57600080fd5b61030182610331565b6000825161047a818460208701610363565b9190910192915050565b60805161014d61049e60003960006024015261014d6000f3fe608060405261000c61000e565b005b61001e610019610020565b6100b6565b565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561008d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100b191906100da565b905090565b3660008037600080366000845af43d6000803e8080156100d5573d6000f35b3d6000fd5b6000602082840312156100ec57600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461011057600080fd5b939250505056fea2646970667358221220fbef562e23099f6b70d42efa68ad4a1991c21a30ee88b7ae19894071f581e3e364736f6c634300081a0033"; type BeaconProxyConstructorParams = | [signer?: Signer] diff --git a/v2/typechain-types/factories/ERC1967Proxy__factory.ts b/v2/typechain-types/factories/ERC1967Proxy__factory.ts index 83e187d1..d5897eb0 100644 --- a/v2/typechain-types/factories/ERC1967Proxy__factory.ts +++ b/v2/typechain-types/factories/ERC1967Proxy__factory.ts @@ -86,7 +86,7 @@ const _abi = [ ] as const; const _bytecode = - "0x608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220b624b8f8cb06a34acdf84bfa6f81d26209e6160020c5d26736f730a686f1dc5864736f6c63430008150033"; + "0x608060405260405161041d38038061041d83398101604081905261002291610268565b61002c8282610033565b5050610358565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b919061033c565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b038111156102ae57600080fd5b8301601f810185136102bf57600080fd5b80516001600160401b038111156102d8576102d861022e565b604051601f8201601f19908116603f011681016001600160401b03811182821017156103065761030661022e565b60405281815282820160200187101561031e57600080fd5b61032f826020830160208601610244565b8093505050509250929050565b6000825161034e818460208701610244565b9190910192915050565b60b7806103666000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220266fcff3f047fd27b99bc2ae00f2594c9dc6c8903cdba2daf7cf2623c610c93f64736f6c634300081a0033"; type ERC1967ProxyConstructorParams = | [signer?: Signer] diff --git a/v2/typechain-types/factories/ERC1967Utils__factory.ts b/v2/typechain-types/factories/ERC1967Utils__factory.ts index cc85e554..fb912e69 100644 --- a/v2/typechain-types/factories/ERC1967Utils__factory.ts +++ b/v2/typechain-types/factories/ERC1967Utils__factory.ts @@ -98,7 +98,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203389f40cc5099a3546c0860aad7d2a0c5d49c08b130a2aeeac23f8f0d3c99bae64736f6c63430008150033"; + "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122001eb0535328502a373828dff3af9c93d4979f247a97487a5d4c2b93bcd54364f64736f6c634300081a0033"; type ERC1967UtilsConstructorParams = | [signer?: Signer] diff --git a/v2/typechain-types/factories/ERC20CustodyNewEchidnaTest__factory.ts b/v2/typechain-types/factories/ERC20CustodyNewEchidnaTest__factory.ts index c2201d5d..5f358801 100644 --- a/v2/typechain-types/factories/ERC20CustodyNewEchidnaTest__factory.ts +++ b/v2/typechain-types/factories/ERC20CustodyNewEchidnaTest__factory.ts @@ -317,7 +317,7 @@ const _abi = [ ] as const; const _bytecode = - "0x600480546001600160a01b03191633908117909155600e60809081526d11d85d195dd85e5155934b9cdbdb60921b60a05260e49190915261012361010452604460c090815261012460405260e080516001600160e01b0390811663485cc95560e01b1790915262000073929190620001fe16565b600580546001600160a01b03929092166001600160a01b0319928316811790915560068054909216179055348015620000ab57600080fd5b5060065460045460016000556001600160a01b039182169116811580620000d957506001600160a01b038116155b15620000f85760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b03199182161790915560028054929093169116179055604051620001329062003ae3565b60408082526004908201819052631d195cdd60e21b606083015260806020830181905282015263151154d560e21b60a082015260c001604051809103906000f08015801562000185573d6000803e3d6000fd5b50600380546001600160a01b0319166001600160a01b0392831617905560065460405163ae7a3a6f60e01b815230600482015291169063ae7a3a6f90602401600060405180830381600087803b158015620001df57600080fd5b505af1158015620001f4573d6000803e3d6000fd5b5050505062004bf2565b60006200020a62003af1565b6200021784848362000221565b9150505b92915050565b600080620002308584620002a3565b9050620002986040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f787900000081525082866040516020016200028192919062003c01565b60408051601f1981840301815291905285620002b1565b9150505b9392505050565b60006200029c8383620002eb565b60c08101515160009015620002df57620002d784848460c001516200031060201b60201c565b90506200029c565b620002d78484620004a0565b6000620002f983836200057a565b6200029c83836020015184620002b160201b60201c565b6000806200031d6200058c565b905060006200032d86836200062c565b905060006200034c826060015183602001518562000a7f60201b60201c565b905060006200035e8383898962000c4e565b905060006200036d82620019b5565b602081015181519192509060030b15620003cb578982604001516040516020016200039a92919062003c27565b60408051601f198184030181529082905262461bcd60e51b8252620003c29160040162003c91565b60405180910390fd5b6000620004166040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a20000000000000000000000081525083600162001b6260201b60201c565b60405163c6ce059d60e01b8152909150600080516020620066908339815191529063c6ce059d906200044d90849060040162003c91565b602060405180830381865afa1580156200046b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000491919062003ca6565b9b9a5050505050505050505050565b604051638d1cc92560e01b815260009081906000805160206200669083398151915290638d1cc92590620004d990879060040162003c91565b600060405180830381865afa158015620004f7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000521919081019062003db1565b905060006200055482856040516020016200053e92919062003de9565b60408051601f1981840301815291905262001d14565b90506001600160a01b038116620002175784846040516020016200039a92919062003e1c565b620005888282600062001d27565b5050565b60408051808201825260038152621bdd5d60ea1b602082015290516334515cdb60e21b81526060916000805160206200669083398151915291829063d145736c90620005dd90849060040162003eaf565b600060405180830381865afa158015620005fb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000625919081019062003ee6565b9250505090565b6200065f6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6000600080516020620066908339815191529050620006a66040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b620006b18562001e11565b60208201526000620006c38662002093565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000706573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000730919081019062003ee6565b868385602001516040516020016200074c949392919062003f33565b60408051601f19818403018152908290526360f9bb1160e01b825291506000906001600160a01b038616906360f9bb11906200078d90859060040162003c91565b600060405180830381865afa158015620007ab573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620007d5919081019062003ee6565b604051636da11afb60e11b81529091506001600160a01b0386169063db4235f6906200080690849060040162003fc5565b602060405180830381865afa15801562000824573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200084a919062004000565b6200086257816040516020016200039a919062004024565b6040516309389f5960e31b81526001600160a01b038616906349c4fac890620008909084906004016200409d565b600060405180830381865afa158015620008ae573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620008d8919081019062003ee6565b8452604051636da11afb60e11b81526001600160a01b0386169063db4235f69062000908908490600401620040e5565b602060405180830381865afa15801562000926573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200094c919062004000565b15620009ce576040516309389f5960e31b81526001600160a01b038616906349c4fac89062000980908490600401620040e5565b600060405180830381865afa1580156200099e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620009c8919081019062003ee6565b60408501525b846001600160a01b03166349c4fac8828660000151604051602001620009f5919062004128565b6040516020818303038152906040526040518363ffffffff1660e01b815260040162000a2392919062004185565b600060405180830381865afa15801562000a41573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000a6b919081019062003ee6565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b606081526020019060019003908162000a9b579050509050604051806040016040528060048152602001630677265760e41b8152508160008151811062000ae65762000ae6620041ae565b6020026020010181905250604051806040016040528060038152602001620b5c9b60ea1b8152508160018151811062000b235762000b23620041ae565b60200260200101819052508460405160200162000b419190620041c4565b6040516020818303038152906040528160028151811062000b665762000b66620041ae565b60200260200101819052508260405160200162000b849190620041f4565b6040516020818303038152906040528160038151811062000ba95762000ba9620041ae565b6020908102919091010152600062000bc182620019b5565b905060008160200151905062000c2c62000bfe60405180604001604052806005815260200164173539b7b760d91b8152506200223460201b60201c565b6040805180820182526000808252602091820152815180830190925284518252808501908201529062002261565b62000c4457856040516020016200039a919062004225565b9695505050505050565b60a081015160408051808201825260008082526020918201528151808301909252825180835292810191015260609060008051602062006690833981519152901562000c9a565b511590565b62000dbd5782602001511562000d2e5760405162461bcd60e51b81526020600482015260586024820152600080516020620066b083398151915260448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401620003c2565b8260c001511562000dbd5760405162461bcd60e51b81526020600482015260536024820152600080516020620066b083398151915260448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401620003c2565b6040805160ff8082526120008201909252600091816020015b606081526020019060019003908162000dd65790505090506000604051806040016040528060038152602001620dce0f60eb1b81525082828062000e1a90620042bc565b935060ff168151811062000e325762000e32620041ae565b60200260200101819052506040518060400160405280600d81526020016c302e302e312d616c7068612e3760981b81525060405160200162000e759190620042de565b60405160208183030381529060405282828062000e9290620042bc565b935060ff168151811062000eaa5762000eaa620041ae565b6020026020010181905250604051806040016040528060068152602001656465706c6f7960d01b81525082828062000ee290620042bc565b935060ff168151811062000efa5762000efa620041ae565b60200260200101819052506040518060400160405280600e81526020016d2d2d636f6e74726163744e616d6560901b81525082828062000f3a90620042bc565b935060ff168151811062000f525762000f52620041ae565b6020026020010181905250876020015182828062000f7090620042bc565b935060ff168151811062000f885762000f88620041ae565b60200260200101819052506040518060400160405280600e81526020016d05a5ac6dedce8e4c2c6e8a0c2e8d60931b81525082828062000fc890620042bc565b935060ff168151811062000fe05762000fe0620041ae565b60209081029190910101528751828262000ffa81620042bc565b935060ff1681518110620010125762001012620041ae565b6020026020010181905250604051806040016040528060098152602001680b4b58da185a5b925960ba1b8152508282806200104d90620042bc565b935060ff1681518110620010655762001065620041ae565b60209081029190910101526200107b46620022ca565b82826200108881620042bc565b935060ff1681518110620010a057620010a0620041ae565b60200260200101819052506040518060400160405280600f81526020016e2d2d6275696c64496e666f46696c6560881b815250828280620010e190620042bc565b935060ff1681518110620010f957620010f9620041ae565b6020026020010181905250868282806200111390620042bc565b935060ff16815181106200112b576200112b620041ae565b6020908102919091010152855115620012495760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f64650000000000000000000000602082015282826200117f81620042bc565b935060ff1681518110620011975762001197620041ae565b60209081029190910101526040516371aad10d60e01b81526001600160a01b038416906371aad10d90620011d090899060040162003c91565b600060405180830381865afa158015620011ee573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001218919081019062003ee6565b82826200122581620042bc565b935060ff16815181106200123d576200123d620041ae565b60200260200101819052505b84602001511562001302576040805180820190915260128152712d2d766572696679536f75726365436f646560701b602082015282826200128a81620042bc565b935060ff1681518110620012a257620012a2620041ae565b60200260200101819052506040518060400160405280600581526020016466616c736560d81b815250828280620012d990620042bc565b935060ff1681518110620012f157620012f1620041ae565b602002602001018190525062001489565b6200131b62000c958660a001516200223460201b60201c565b620013a85760408051808201909152600d81526c2d2d6c6963656e73655479706560981b602082015282826200135181620042bc565b935060ff1681518110620013695762001369620041ae565b60200260200101819052508460a001516040516020016200138b9190620041c4565b604051602081830303815290604052828280620012d990620042bc565b8460c00151158015620013d15750620013cf62000c9589604001516200223460201b60201c565b155b15620014895760408051808201909152600d81526c2d2d6c6963656e73655479706560981b602082015282826200140881620042bc565b935060ff1681518110620014205762001420620041ae565b6020908102919091010152620014368862002363565b604051602001620014489190620041c4565b6040516020818303038152906040528282806200146590620042bc565b935060ff16815181106200147d576200147d620041ae565b60200260200101819052505b620014a262000c9586604001516200223460201b60201c565b620015305760408051808201909152600b81526a0b4b5c995b185e595c925960aa1b60208201528282620014d681620042bc565b935060ff1681518110620014ee57620014ee620041ae565b602002602001018190525084604001518282806200150c90620042bc565b935060ff1681518110620015245762001524620041ae565b60200260200101819052505b6060850151156200162f576040805180820190915260068152650b4b5cd85b1d60d21b602082015282826200156581620042bc565b935060ff16815181106200157d576200157d620041ae565b60209081029190910101526060850151604051631623433d60e31b815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa158015620015d4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620015fe919081019062003ee6565b82826200160b81620042bc565b935060ff1681518110620016235762001623620041ae565b60200260200101819052505b60e08501515115620016ce5760408051808201909152600a8152690b4b59d85cd31a5b5a5d60b21b602082015282826200166981620042bc565b935060ff1681518110620016815762001681620041ae565b602090810291909101015260e0850151516200169d90620022ca565b8282620016aa81620042bc565b935060ff1681518110620016c257620016c2620041ae565b60200260200101819052505b60e08501516020015115620017785760408051808201909152600a8152692d2d676173507269636560b01b602082015282826200170b81620042bc565b935060ff1681518110620017235762001723620041ae565b6020026020010181905250620017478560e0015160200151620022ca60201b60201c565b82826200175481620042bc565b935060ff16815181106200176c576200176c620041ae565b60200260200101819052505b60e08501516040015115620018265760408051808201909152600e81526d2d2d6d617846656550657247617360901b60208201528282620017b981620042bc565b935060ff1681518110620017d157620017d1620041ae565b6020026020010181905250620017f58560e0015160400151620022ca60201b60201c565b82826200180281620042bc565b935060ff16815181106200181a576200181a620041ae565b60200260200101819052505b60e08501516060015115620018e35760408051808201909152601681527f2d2d6d61785072696f7269747946656550657247617300000000000000000000602082015282826200187681620042bc565b935060ff16815181106200188e576200188e620041ae565b6020026020010181905250620018b28560e0015160600151620022ca60201b60201c565b8282620018bf81620042bc565b935060ff1681518110620018d757620018d7620041ae565b60200260200101819052505b60008160ff166001600160401b0381111562001903576200190362003cd1565b6040519080825280602002602001820160405280156200193857816020015b6060815260200190600190039081620019225790505b50905060005b8260ff168160ff161015620019a657838160ff1681518110620019655762001965620041ae565b6020026020010151828260ff1681518110620019855762001985620041ae565b602002602001018190525080806200199d90620042bc565b9150506200193e565b5093505050505b949350505050565b620019dd6040518060600160405280600060030b815260200160608152602001606081525090565b6040805180820182526004808252630c4c2e6d60e31b602083015291516334515cdb60e21b81526000805160206200669083398151915292600091849163d145736c9162001a2e9186910162004337565b600060405180830381865afa15801562001a4c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001a76919081019062003ee6565b9050600062001a86868362002a6a565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b815260040162001ab8919062004380565b6000604051808303816000875af115801562001ad8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001b029190810190620043e6565b805190915060030b1580159062001b1c5750602081015151155b801562001b2c5750604081015151155b1562000c44578160008151811062001b485762001b48620041ae565b60200260200101516040516020016200039a91906200449b565b6060600062001b988560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b60408051808201825260008082526020918201528151808301909252865182528087019082015290915062001bd19082905b9062002bc6565b1562001ce157600062001c558262001c4e8162001c4762001c198a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b9062002bef565b9062002c52565b905062001c8d62001c85604051806040016040528060018152602001600560f91b8152506200223460201b60201c565b829062002bc6565b1562001ccc5762001cc962001cc1604051806040016040528060018152602001600560f91b8152506200223460201b60201c565b829062002cdf565b90505b62001cd78162002d07565b925050506200029c565b821562001cfd5784846040516020016200039a9291906200466d565b50506040805160208101909152600081526200029c565b6000808251602084016000f09392505050565b8160a001511562001d3757505050565b600062001d4684848462002d72565b9050600062001d5582620019b5565b602081015181519192509060030b15801562001dcd575062001dcd62001da0604051806040016040528060078152602001665355434345535360c81b8152506200223460201b60201c565b60408051808201825260008082526020918201528151808301909252845182528085019082015262001bca565b1562001ddb57505050505050565b6040820151511562001dfe5781604001516040516020016200039a9190620046ec565b806040516020016200039a919062004738565b6060600062001e478360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b905062001e8262001e7a604051806040016040528060048152602001630b9cdbdb60e21b8152506200223460201b60201c565b829062002261565b1562001ecb576200029c62001ec562001ebd604051806040016040528060048152602001630b9cdbdb60e21b8152506200223460201b60201c565b8390620032f1565b62002d07565b62001f0162001ef9604051806040016040528060018152602001601d60f91b8152506200223460201b60201c565b829062003385565b60010362001f725762001f3762001cc1604051806040016040528060018152602001601d60f91b8152506200223460201b60201c565b506200029c62001ec562001f6a604051806040016040528060018152602001601d60f91b8152506200223460201b60201c565b839062002cdf565b62001fa462001e7a60405180604001604052806005815260200164173539b7b760d91b8152506200223460201b60201c565b156200208057600062001fe18262001fdb604051806040016040528060018152602001602f60f81b8152506200223460201b60201c565b6200342c565b90506000816001835162001ff691906200478a565b81518110620020095762002009620041ae565b602002602001015190506200207762001ec56200204960405180604001604052806005815260200164173539b7b760d91b8152506200223460201b60201c565b60408051808201825260008082526020918201528151808301909252855182528086019082015290620032f1565b95945050505050565b826040516020016200039a9190620047a0565b60606000620020c98360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b9050620020fc62001e7a604051806040016040528060048152602001630b9cdbdb60e21b8152506200223460201b60201c565b156200210d576200029c8162002d07565b6200213b62001ef9604051806040016040528060018152602001601d60f91b8152506200223460201b60201c565b60010362002175576200029c62001ec562001f6a604051806040016040528060018152602001601d60f91b8152506200223460201b60201c565b620021a762001e7a60405180604001604052806005815260200164173539b7b760d91b8152506200223460201b60201c565b1562002080576000620021de8262001fdb604051806040016040528060018152602001602f60f81b8152506200223460201b60201c565b905060018151111562002220578060028251620021fc91906200478a565b815181106200220f576200220f620041ae565b602002602001015192505050919050565b50826040516020016200039a9190620047a0565b60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b80518251600091111562002278575060006200021b565b8151835160208501516000929162002290916200485c565b6200229c91906200478a565b905082602001518103620022b55760019150506200021b565b82516020840151819020912014905092915050565b60606000620022d983620034f6565b60010190506000816001600160401b03811115620022fb57620022fb62003cd1565b6040519080825280601f01601f19166020018201604052801562002326576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846200233057509392505050565b606060006200237c83604001516200223460201b60201c565b9050620023bd620023b56040518060400160405280600a8152602001691553931250d15394d15160b21b8152506200223460201b60201c565b8290620035df565b15620023e55750506040805180820190915260048152634e6f6e6560e01b6020820152919050565b6200241b620023b560405180604001604052806009815260200168556e6c6963656e736560b81b8152506200223460201b60201c565b1562002448575050604080518082019091526009815268556e6c6963656e736560b81b6020820152919050565b62002478620023b56040518060400160405280600381526020016213525560ea1b8152506200223460201b60201c565b156200249f57505060408051808201909152600381526213525560ea1b6020820152919050565b620024d8620023b56040518060400160405280600c81526020016b47504c2d322e302d6f6e6c7960a01b8152506200223460201b60201c565b806200251c57506200251c620023b56040518060400160405280601081526020016f23a8261699171816b7b916b630ba32b960811b8152506200223460201b60201c565b156200254957505060408051808201909152600981526823a72a9023a8263b1960b91b6020820152919050565b62002582620023b56040518060400160405280600c81526020016b47504c2d332e302d6f6e6c7960a01b8152506200223460201b60201c565b80620025c65750620025c6620023b56040518060400160405280601081526020016f23a8261699971816b7b916b630ba32b960811b8152506200223460201b60201c565b15620025f3575050604080518082019091526009815268474e552047504c763360b81b6020820152919050565b6200262d620023b56040518060400160405280600d81526020016c4c47504c2d322e312d6f6e6c7960981b8152506200223460201b60201c565b8062002672575062002672620023b5604051806040016040528060118152602001702623a8261699171896b7b916b630ba32b960791b8152506200223460201b60201c565b15620026a257505060408051808201909152600c81526b474e55204c47504c76322e3160a01b6020820152919050565b620026dc620023b56040518060400160405280600d81526020016c4c47504c2d332e302d6f6e6c7960981b8152506200223460201b60201c565b8062002721575062002721620023b5604051806040016040528060118152602001702623a8261699971816b7b916b630ba32b960791b8152506200223460201b60201c565b156200274f57505060408051808201909152600a815269474e55204c47504c763360b01b6020820152919050565b62002788620023b56040518060400160405280600c81526020016b4253442d322d436c6175736560a01b8152506200223460201b60201c565b15620027b857505060408051808201909152600c81526b4253442d322d436c6175736560a01b6020820152919050565b620027f1620023b56040518060400160405280600c81526020016b4253442d332d436c6175736560a01b8152506200223460201b60201c565b156200282157505060408051808201909152600c81526b4253442d332d436c6175736560a01b6020820152919050565b62002855620023b56040518060400160405280600781526020016604d504c2d322e360cc1b8152506200223460201b60201c565b156200288057505060408051808201909152600781526604d504c2d322e360cc1b6020820152919050565b620028b4620023b56040518060400160405280600781526020016604f534c2d332e360cc1b8152506200223460201b60201c565b15620028df57505060408051808201909152600781526604f534c2d332e360cc1b6020820152919050565b62002916620023b56040518060400160405280600a81526020016904170616368652d322e360b41b8152506200223460201b60201c565b156200294457505060408051808201909152600a81526904170616368652d322e360b41b6020820152919050565b6200297e620023b56040518060400160405280600d81526020016c4147504c2d332e302d6f6e6c7960981b8152506200223460201b60201c565b80620029c35750620029c3620023b56040518060400160405280601181526020017020a3a8261699971816b7b916b630ba32b960791b8152506200223460201b60201c565b15620029f157505060408051808201909152600a815269474e55204147504c763360b01b6020820152919050565b62002a26620023b5604051806040016040528060088152602001674255534c2d312e3160c01b8152506200223460201b60201c565b1562002a5157505060408051808201909152600781526642534c20312e3160c81b6020820152919050565b604080840151845191516200039a929060200162004872565b60608060005b845181101562002b0d578185828151811062002a905762002a90620041ae565b602002602001015160405160200162002aab92919062003de9565b60405160208183030381529060405291506001855162002acc91906200478a565b811462002af8578160405160200162002ae69190620049c6565b60405160208183030381529060405291505b8062002b0481620049ed565b91505062002a70565b5060408051600380825260808201909252600091816020015b606081526020019060019003908162002b26579050509050838160008151811062002b555762002b55620041ae565b6020026020010181905250604051806040016040528060028152602001612d6360f01b8152508160018151811062002b915762002b91620041ae565b6020026020010181905250818160028151811062002bb35762002bb3620041ae565b6020908102919091010152949350505050565b602080830151835183519284015160009362002be69291849190620035f5565b14159392505050565b604080518082019091526000808252602080830182905284518582015185519286015162002c1e93906200372a565b905083602001518162002c3291906200478a565b8451859062002c439083906200478a565b90525060208401525090919050565b604080518082019091526000808252602082015281518351101562002c795750816200021b565b602080830151908401516001911462002ca15750815160208481015190840151829020919020145b801562002cd75782518451859062002cbb9083906200478a565b905250825160208501805162002cd39083906200485c565b9052505b509192915050565b604080518082019091526000808252602082015262002d008383836200386e565b5092915050565b6060600082600001516001600160401b0381111562002d2a5762002d2a62003cd1565b6040519080825280601f01601f19166020018201604052801562002d55576020820181803683370190505b5060208481015185519293509083019162002d0091839162003922565b6060600062002d806200058c565b6040805160ff808252612000820190925291925060009190816020015b606081526020019060019003908162002d9d5790505090506000604051806040016040528060038152602001620dce0f60eb1b81525082828062002de190620042bc565b935060ff168151811062002df95762002df9620041ae565b6020026020010181905250604051806040016040528060078152602001665e312e33322e3360c81b81525060405160200162002e36919062004a09565b60405160208183030381529060405282828062002e5390620042bc565b935060ff168151811062002e6b5762002e6b620041ae565b60200260200101819052506040518060400160405280600881526020016776616c696461746560c01b81525082828062002ea590620042bc565b935060ff168151811062002ebd5762002ebd620041ae565b60200260200101819052508260405160200162002edb9190620041f4565b60405160208183030381529060405282828062002ef890620042bc565b935060ff168151811062002f105762002f10620041ae565b60200260200101819052506040518060400160405280600a8152602001690b4b58dbdb9d1c9858dd60b21b81525082828062002f4c90620042bc565b935060ff168151811062002f645762002f64620041ae565b602090810291909101015262002f7b8784620039ab565b828262002f8881620042bc565b935060ff168151811062002fa05762002fa0620041ae565b602090810291909101015285515115620030455760408051808201909152600b81526a2d2d7265666572656e636560a81b6020820152828262002fe381620042bc565b935060ff168151811062002ffb5762002ffb620041ae565b60209081029190910101528551620030149084620039ab565b82826200302181620042bc565b935060ff1681518110620030395762003039620041ae565b60200260200101819052505b856080015115620030ba5760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b0000000000000000602082015282826200309181620042bc565b935060ff1681518110620030a957620030a9620041ae565b60200260200101819052506200311b565b84156200311b576040805180820190915260128152712d2d726571756972655265666572656e636560701b60208201528282620030f781620042bc565b935060ff16815181106200310f576200310f620041ae565b60200260200101819052505b60408601515115620031b25760408051808201909152600d81526c2d2d756e73616665416c6c6f7760981b602082015282826200315881620042bc565b935060ff1681518110620031705762003170620041ae565b602002602001018190525085604001518282806200318e90620042bc565b935060ff1681518110620031a657620031a6620041ae565b60200260200101819052505b856060015115620032225760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282620031fe81620042bc565b935060ff1681518110620032165762003216620041ae565b60200260200101819052505b60008160ff166001600160401b0381111562003242576200324262003cd1565b6040519080825280602002602001820160405280156200327757816020015b6060815260200190600190039081620032615790505b50905060005b8260ff168160ff161015620032e557838160ff1681518110620032a457620032a4620041ae565b6020026020010151828260ff1681518110620032c457620032c4620041ae565b60200260200101819052508080620032dc90620042bc565b9150506200327d565b50979650505050505050565b6040805180820190915260008082526020820152815183511015620033185750816200021b565b8151835160208501516000929162003330916200485c565b6200333c91906200478a565b602084015190915060019082146200335e575082516020840151819020908220145b80156200337c57835185518690620033789083906200478a565b9052505b50929392505050565b805182516020808501519084015160009384939092620033a79284906200372a565b620033b391906200485c565b90505b83516020850151620033c991906200485c565b811162002d005781620033dc81620049ed565b925050826000015162003418856020015183620033fa91906200478a565b86516200340891906200478a565b855160208701518591906200372a565b6200342491906200485c565b9050620033b6565b606060006200343c848462003385565b620034499060016200485c565b6001600160401b0381111562003463576200346362003cd1565b6040519080825280602002602001820160405280156200349857816020015b6060815260200190600190039081620034825790505b50905060005b8151811015620034ee57620034b862001ec5868662002cdf565b828281518110620034cd57620034cd620041ae565b60200260200101819052508080620034e590620049ed565b9150506200349e565b509392505050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831062003540577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106200356d576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106200358c57662386f26fc10000830492506010015b6305f5e1008310620035a5576305f5e100830492506008015b6127108310620035ba57612710830492506004015b60648310620035cd576064830492506002015b600a83106200021b5760010192915050565b6000620035ed8383620039ef565b159392505050565b600080858411620037205760208411620036c057600084156200364b576001620036218660206200478a565b6200362e90600862004a50565b6200363b90600262004b67565b6200364791906200478a565b1990505b83518116856200365c89896200485c565b6200366891906200478a565b805190935082165b818114620036a8578784116200368d5787945050505050620019ad565b83620036998162004b75565b94505082845116905062003670565b620036b487856200485c565b945050505050620019ad565b838320620036cf85886200478a565b620036db90876200485c565b91505b8582106200371e578482208082036200370857620036fd86846200485c565b9350505050620019ad565b620037156001846200478a565b925050620036de565b505b5092949350505050565b60008381868511620038575760208511620037fc576000851562003781576001620037578760206200478a565b6200376490600862004a50565b6200377190600262004b67565b6200377d91906200478a565b1990505b84518116600087620037948b8b6200485c565b620037a091906200478a565b855190915083165b828114620037ed57818610620037d257620037c48b8b6200485c565b9650505050505050620019ad565b85620037de81620049ed565b965050838651169050620037a8565b859650505050505050620019ad565b508383206000905b6200381086896200478a565b821162003855578583208082036200382f5783945050505050620019ad565b6200383c6001856200485c565b93505081806200384c90620049ed565b92505062003804565b505b6200386387876200485c565b979650505050505050565b60408051808201909152600080825260208083018290528551868201518651928701516200389d93906200372a565b602080870180519186019190915251909150620038bb90826200478a565b835284516020860151620038d091906200485c565b8103620038e1576000855262003919565b83518351620038f191906200485c565b85518690620039029083906200478a565b90525083516200391390826200485c565b60208601525b50909392505050565b602081106200396257815183526200393c6020846200485c565b92506200394b6020836200485c565b91506200395a6020826200478a565b905062003922565b6000198115620039985760016200397b8360206200478a565b620039899061010062004b67565b6200399591906200478a565b90505b9151835183169219169190911790915250565b60606000620039bb84846200062c565b8051602080830151604051939450620039d79390910162004b8f565b60405160208183030381529060405291505092915050565b815181516000919081111562003a03575081515b6020808501519084015160005b8381101562003ad2578251825180821462003a9b57600019602087101562003a785760018462003a428960206200478a565b62003a4e91906200485c565b62003a5b90600862004a50565b62003a6890600262004b67565b62003a7491906200478a565b1990505b818116838216818103911462003a985797506200021b9650505050505050565b50505b62003aa86020866200485c565b945062003ab76020856200485c565b9350505060208162003aca91906200485c565b905062003a10565b508451865162000c44919062004bcf565b610cca80620059c683390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200162003b3662003b3b565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200162003b366040518060800160405280600081526020016000815260200160008152602001600081525090565b60005b8381101562003bca57818101518382015260200162003bb0565b50506000910152565b6000815180845262003bed81602086016020860162003bad565b601f01601f19169290920160200192915050565b6001600160a01b0383168152604060208201819052600090620019ad9083018462003bd3565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835162003c6181601a85016020880162003bad565b6101d160f51b601a91840191820152835162003c8581601c84016020880162003bad565b01601c01949350505050565b6020815260006200029c602083018462003bd3565b60006020828403121562003cb957600080fd5b81516001600160a01b03811681146200029c57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171562003d0c5762003d0c62003cd1565b60405290565b60006001600160401b038084111562003d2f5762003d2f62003cd1565b604051601f8501601f19908116603f0116810190828211818310171562003d5a5762003d5a62003cd1565b8160405280935085815286868601111562003d7457600080fd5b62003d8486602083018762003bad565b5050509392505050565b600082601f83011262003da057600080fd5b6200029c8383516020850162003d12565b60006020828403121562003dc457600080fd5b81516001600160401b0381111562003ddb57600080fd5b620002178482850162003d8e565b6000835162003dfd81846020880162003bad565b83519083019062003e1381836020880162003bad565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835162003e5681601a85016020880162003bad565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a91840191820152835162003e9581603384016020880162003bad565b601160f91b60339290910191820152603401949350505050565b60408152600b60408201526a1193d55391149657d3d55560aa1b60608201526080602082015260006200029c608083018462003bd3565b60006020828403121562003ef957600080fd5b81516001600160401b0381111562003f1057600080fd5b8201601f8101841362003f2257600080fd5b620002178482516020840162003d12565b6000855162003f47818460208a0162003bad565b8083019050602f60f81b808252865162003f69816001850160208b0162003bad565b60019201918201819052855162003f88816002850160208a0162003bad565b6002920191820152835162003fa581600384016020880162003bad565b64173539b7b760d91b600392909101918201526008019695505050505050565b60408152600062003fda604083018462003bd3565b828103602084015260048152630b985cdd60e21b60208201526040810191505092915050565b6000602082840312156200401357600080fd5b815180151581146200029c57600080fd5b7f436f756c64206e6f742066696e642041535420696e20617274696661637420008152600082516200405e81601f85016020870162003bad565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f939091019283015250611b5b60f21b603f820152604101919050565b604081526000620040b2604083018462003bd3565b8281036020840152601181527005cc2e6e85cc2c4e6ded8eae8caa0c2e8d607b1b60208201526040810191505092915050565b604081526000620040fa604083018462003bd3565b8281036020840152600c81526b2e6173742e6c6963656e736560a01b60208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b270000000000000000000000008152600082516200416281601485016020870162003bad565b6b13ae9735b2b1b1b0b5991a9b60a11b6014939091019283015250602001919050565b6040815260006200419a604083018562003bd3565b828103602084015262000298818562003bd3565b634e487b7160e01b600052603260045260246000fd5b6000601160f91b8083528351620041e381600186016020880162003bad565b600193019283015250600201919050565b600082516200420881846020870162003bad565b6a2f6275696c642d696e666f60a81b920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201526a0391031b7b73a3930b1ba160ad1b6040820152600082516200429981604b85016020870162003bad565b91909101604b0192915050565b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff8103620042d557620042d5620042a6565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81526801a595b9d0b58db1a560be1b6020820152600082516200432a81602985016020870162003bad565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f504154480000000000000000000060608201526080602082015260006200029c608083018462003bd3565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015620043d957603f19888603018452620043c685835162003bd3565b94509285019290850190600101620043a7565b5092979650505050505050565b600060208284031215620043f957600080fd5b81516001600160401b03808211156200441157600080fd5b90830190606082860312156200442657600080fd5b6200443062003ce7565b82518060030b81146200444257600080fd5b81526020830151828111156200445757600080fd5b620044658782860162003d8e565b6020830152506040830151828111156200447e57600080fd5b6200448c8782860162003d8e565b60408301525095945050505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e642077697468208152601160f91b602082015260008251620044df81602185016020870162003bad565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e65207769746820707265666978208152602760f81b602082015260008351620046b181602185016020880162003bad565b6c0139034b71037baba383aba1d1609d1b6021918401918201528351620046e081602e84016020880162003bad565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c815268034b230ba34b7b71d160bd1b6020820152600082516200432a81602985016020870162003bad565b7f55706772616465207361666574792076616c69646174696f6e206661696c65648152611d0560f11b6020820152600082516200477d81602285016020870162003bad565b9190910160220192915050565b818103818111156200021b576200021b620042a6565b6d021b7b73a3930b1ba103730b6b2960951b815260008251620047cb81600e85016020870162003bad565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201526730b1ba173539b7b760c11b606e820152607601919050565b808201808211156200021b576200021b620042a6565b7f53504458206c6963656e7365206964656e746966696572200000000000000000815260008351620048ac81601885016020880162003bad565b6301034b7160e51b6018918401918201528351620048d281601c84016020880162003bad565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b60008251620049da81846020870162003bad565b600160fd1b920191825250600101919050565b60006001820162004a025762004a02620042a6565b5060010190565b7f406f70656e7a657070656c696e2f75706772616465732d636f7265400000000081526000825162004a4381601c85016020870162003bad565b91909101601c0192915050565b80820281158282048414176200021b576200021b620042a6565b600181815b8085111562004aab57816000190482111562004a8f5762004a8f620042a6565b8085161562004a9d57918102915b93841c939080029062004a6f565b509250929050565b60008262004ac4575060016200021b565b8162004ad3575060006200021b565b816001811462004aec576002811462004af75762004b17565b60019150506200021b565b60ff84111562004b0b5762004b0b620042a6565b50506001821b6200021b565b5060208310610133831016604e8410600b841016171562004b3c575081810a6200021b565b62004b48838362004a6a565b806000190482111562004b5f5762004b5f620042a6565b029392505050565b60006200029c838362004ab3565b60008162004b875762004b87620042a6565b506000190190565b6000835162004ba381846020880162003bad565b601d60f91b908301908152835162004bc381600184016020880162003bad565b01600101949350505050565b818103600083128015838313168383128216171562002d005762002d00620042a6565b610dc48062004c026000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80636133b4bb1161005b5780636133b4bb1461012b57806381100bf01461013e578063c8a023621461015e578063d9caed121461017157600080fd5b8063116191b61461008d57806321fc65f2146100d65780633c2f05a8146100eb5780635b1125911461010b575b600080fd5b6001546100ad9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100e96100e4366004610aff565b610184565b005b6003546100ad9073ffffffffffffffffffffffffffffffffffffffff1681565b6002546100ad9073ffffffffffffffffffffffffffffffffffffffff1681565b6100e9610139366004610b6e565b61030e565b6004546100ad9073ffffffffffffffffffffffffffffffffffffffff1681565b6100e961016c366004610aff565b61052a565b6100e961017f366004610bc8565b61069b565b61018c61078b565b60025473ffffffffffffffffffffffffffffffffffffffff1633146101dd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546102049073ffffffffffffffffffffffffffffffffffffffff8781169116856107ce565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906102629088908890889088908890600401610c4d565b600060405180830381600087803b15801561027c57600080fd5b505af1158015610290573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102f593929190610c98565b60405180910390a36103076001600055565b5050505050565b60035473ffffffffffffffffffffffffffffffffffffffff166340c10f1930610338866005610cbb565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401600060405180830381600087803b1580156103a357600080fd5b505af11580156103b7573d6000803e3d6000fd5b50506003546006546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152600560248201529116925063a9059cbb91506044016020604051808303816000875af1158015610436573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045a9190610cf5565b506003546104819073ffffffffffffffffffffffffffffffffffffffff1685858585610184565b6003546001546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201529116906370a0823190602401602060405180830381865afa1580156104f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105179190610d17565b1561052457610524610d30565b50505050565b61053261078b565b60025473ffffffffffffffffffffffffffffffffffffffff163314610583576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546105aa9073ffffffffffffffffffffffffffffffffffffffff8781169116856107ce565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906106089088908890889088908890600401610c4d565b600060405180830381600087803b15801561062257600080fd5b505af1158015610636573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102f593929190610c98565b6106a361078b565b60025473ffffffffffffffffffffffffffffffffffffffff1633146106f4576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61071573ffffffffffffffffffffffffffffffffffffffff841683836107ce565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8360405161077491815260200190565b60405180910390a36107866001600055565b505050565b6002600054036107c7576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261078691859190600090610867908416836108e0565b9050805160001415801561088c57508080602001905181019061088a9190610cf5565b155b15610786576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606108ee838360006108f7565b90505b92915050565b606081471015610935576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016108d7565b6000808573ffffffffffffffffffffffffffffffffffffffff16848660405161095e9190610d5f565b60006040518083038185875af1925050503d806000811461099b576040519150601f19603f3d011682016040523d82523d6000602084013e6109a0565b606091505b50915091506109b08683836109bc565b925050505b9392505050565b6060826109d1576109cc82610a4b565b6109b5565b81511580156109f5575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610a44576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016108d7565b50806109b5565b805115610a5b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610ab157600080fd5b919050565b60008083601f840112610ac857600080fd5b50813567ffffffffffffffff811115610ae057600080fd5b602083019150836020828501011115610af857600080fd5b9250929050565b600080600080600060808688031215610b1757600080fd5b610b2086610a8d565b9450610b2e60208701610a8d565b935060408601359250606086013567ffffffffffffffff811115610b5157600080fd5b610b5d88828901610ab6565b969995985093965092949392505050565b60008060008060608587031215610b8457600080fd5b610b8d85610a8d565b935060208501359250604085013567ffffffffffffffff811115610bb057600080fd5b610bbc87828801610ab6565b95989497509550505050565b600080600060608486031215610bdd57600080fd5b610be684610a8d565b9250610bf460208501610a8d565b9150604084013590509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015260806060830152610c8d608083018486610c04565b979650505050505050565b838152604060208201526000610cb2604083018486610c04565b95945050505050565b808201808211156108f1577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060208284031215610d0757600080fd5b815180151581146109b557600080fd5b600060208284031215610d2957600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000825160005b81811015610d805760208186018101518583015201610d66565b50600092019182525091905056fea2646970667358221220eb028202b4da53149bed08dab79e88c9d242f872840a2a15ea961a98e5b81d6564736f6c6343000815003360806040523480156200001157600080fd5b5060405162000cca38038062000cca833981016040819052620000349162000123565b818160036200004483826200021c565b5060046200005382826200021c565b5050505050620002e8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008657600080fd5b81516001600160401b0380821115620000a357620000a36200005e565b604051601f8301601f19908116603f01168101908282118183101715620000ce57620000ce6200005e565b81604052838152602092508683858801011115620000eb57600080fd5b600091505b838210156200010f5785820183015181830184015290820190620000f0565b600093810190920192909252949350505050565b600080604083850312156200013757600080fd5b82516001600160401b03808211156200014f57600080fd5b6200015d8683870162000074565b935060208501519150808211156200017457600080fd5b50620001838582860162000074565b9150509250929050565b600181811c90821680620001a257607f821691505b602082108103620001c357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021757600081815260208120601f850160051c81016020861015620001f25750805b601f850160051c820191505b818110156200021357828155600101620001fe565b5050505b505050565b81516001600160401b038111156200023857620002386200005e565b62000250816200024984546200018d565b84620001c9565b602080601f8311600181146200028857600084156200026f5750858301515b600019600386901b1c1916600185901b17855562000213565b600085815260208120601f198616915b82811015620002b95788860151825594840194600190910190840162000298565b5085821015620002d85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6109d280620002f86000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108ba565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dc565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f39061090f565b80601f016020809104026020016040519081016040528092919081815260200182805461021f9061090f565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f39061090f565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610962565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b600060208083528351808285015260005b818110156107ec578581018301518582016040015282016107d0565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b9150604084013590509250925092565b6000602082840312156108cc57600080fd5b6108d58261082b565b9392505050565b600080604083850312156108ef57600080fd5b6108f88361082b565b91506109066020840161082b565b90509250929050565b600181811c9082168061092357607f821691505b60208210810361095c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220556869bd33d6741656e444b7d99e56e0c3a9495b8426ba227d4f4af169660e8264736f6c634300081500330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f7420"; + "0x600480546001600160a01b03191633908117909155600e60809081526d11d85d195dd85e5155934b9cdbdb60921b60a05260e49190915261012361010452604460c090815261012460405260e080516001600160e01b0390811663485cc95560e01b179091526100719291906101f316565b600580546001600160a01b03929092166001600160a01b03199283168117909155600680549092161790553480156100a857600080fd5b5060065460045460016000556001600160a01b0391821691168115806100d557506001600160a01b038116155b156100f35760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b0319918216179091556002805492909316911617905560405161012b9061370b565b60408082526004908201819052631d195cdd60e21b606083015260806020830181905282015263151154d560e21b60a082015260c001604051809103906000f08015801561017d573d6000803e3d6000fd5b50600380546001600160a01b0319166001600160a01b0392831617905560065460405163ae7a3a6f60e01b815230600482015291169063ae7a3a6f90602401600060405180830381600087803b1580156101d657600080fd5b505af11580156101ea573d6000803e3d6000fd5b5050505061478c565b60006101fd613718565b610208848483610212565b9150505b92915050565b60008061021f858461028e565b90506102836040518060400160405280601d81526020017f4552433139363750726f78792e736f6c3a4552433139363750726f7879000000815250828660405160200161026d929190613821565b60408051601f198184030181529190528561029a565b9150505b9392505050565b600061028783836102ce565b60c081015151600090156102c4576102bd84848460c001516102ef60201b60201c565b9050610287565b6102bd8484610468565b60006102da8383610535565b6102878383602001518461029a60201b60201c565b6000806102fa610545565b9050600061030886836105df565b905060006103258260600151836020015185610a0260201b60201c565b9050600061033583838989610bb7565b9050600061034282611833565b602081015181519192509060030b1561039b5789826040015160405160200161036c929190613845565b60408051601f198184030181529082905262461bcd60e51b8252610392916004016138ab565b60405180910390fd5b60006103e46040518060400160405280601581526020017f4465706c6f79656420746f20616464726573733a2000000000000000000000008152508360016119ca60201b60201c565b60405163c6ce059d60e01b81529091506000805160206162118339815191529063c6ce059d906104189084906004016138ab565b602060405180830381865afa158015610435573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045991906138be565b9b9a5050505050505050505050565b604051638d1cc92560e01b8152600090819060008051602061621183398151915290638d1cc9259061049e9087906004016138ab565b600060405180830381865afa1580156104bb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104e391908101906139b3565b9050600061051282856040516020016104fd9291906139e7565b60408051601f19818403018152919052611b6a565b90506001600160a01b03811661020857848460405160200161036c929190613a16565b61054182826000611b7d565b5050565b60408051808201825260038152621bdd5d60ea1b602082015290516334515cdb60e21b815260609160008051602061621183398151915291829063d145736c90610593908490600401613aa5565b600060405180830381865afa1580156105b0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105d89190810190613ada565b9250505090565b6106116040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b600060008051602061621183398151915290506106566040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b61065f85611c57565b6020820152600061066f86611eac565b90506000836001600160a01b031663d930a0e66040518163ffffffff1660e01b8152600401600060405180830381865afa1580156106b1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106d99190810190613ada565b868385602001516040516020016106f39493929190613b22565b60408051601f19818403018152908290526360f9bb1160e01b825291506000906001600160a01b038616906360f9bb11906107329085906004016138ab565b600060405180830381865afa15801561074f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107779190810190613ada565b604051636da11afb60e11b81529091506001600160a01b0386169063db4235f6906107a6908490600401613bba565b602060405180830381865afa1580156107c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e79190613bf3565b6107fc578160405160200161036c9190613c15565b6040516309389f5960e31b81526001600160a01b038616906349c4fac890610828908490600401613c8c565b600060405180830381865afa158015610845573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261086d9190810190613ada565b8452604051636da11afb60e11b81526001600160a01b0386169063db4235f69061089b908490600401613cd2565b602060405180830381865afa1580156108b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108dc9190613bf3565b15610958576040516309389f5960e31b81526001600160a01b038616906349c4fac89061090d908490600401613cd2565b600060405180830381865afa15801561092a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109529190810190613ada565b60408501525b846001600160a01b03166349c4fac882866000015160405160200161097d9190613d13565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016109a9929190613d6e565b600060405180830381865afa1580156109c6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109ee9190810190613ada565b606085015250608083015250949350505050565b60408051600480825260a0820190925260609160009190816020015b6060815260200190600190039081610a1e579050509050604051806040016040528060048152602001630677265760e41b81525081600081518110610a6557610a65613d93565b6020026020010181905250604051806040016040528060038152602001620b5c9b60ea1b81525081600181518110610a9f57610a9f613d93565b602002602001018190525084604051602001610abb9190613da9565b60405160208183030381529060405281600281518110610add57610add613d93565b602002602001018190525082604051602001610af99190613dde565b60405160208183030381529060405281600381518110610b1b57610b1b613d93565b60209081029190910101526000610b3182611833565b9050600081602001519050610b98610b6b60405180604001604052806005815260200164173539b7b760d91b81525061202f60201b60201c565b6040805180820182526000808252602091820152815180830190925284518252808501908201529061205c565b610bad578560405160200161036c9190613e0d565b9695505050505050565b60a08101516040805180820182526000808252602091820152815180830190925282518083529281019101526060906000805160206162118339815191529015610c01565b511590565b610d1d57826020015115610c915760405162461bcd60e51b8152602060048201526058602482015260008051602061623183398151915260448201527f62652075736564207768656e207468652060736b6970566572696679536f757260648201527f6365436f646560206f7074696f6e206973206074727565600000000000000000608482015260a401610392565b8260c0015115610d1d5760405162461bcd60e51b8152602060048201526053602482015260008051602061623183398151915260448201527f62652075736564207768656e207468652060736b69704c6963656e736554797060648201527f6560206f7074696f6e2069732060747275656000000000000000000000000000608482015260a401610392565b6040805160ff8082526120008201909252600091816020015b6060815260200190600190039081610d365790505090506000604051806040016040528060038152602001620dce0f60eb1b815250828280610d7790613ea2565b935060ff1681518110610d8c57610d8c613d93565b60200260200101819052506040518060400160405280600d81526020016c302e302e312d616c7068612e3760981b815250604051602001610dcd9190613ec1565b604051602081830303815290604052828280610de890613ea2565b935060ff1681518110610dfd57610dfd613d93565b6020026020010181905250604051806040016040528060068152602001656465706c6f7960d01b815250828280610e3390613ea2565b935060ff1681518110610e4857610e48613d93565b60200260200101819052506040518060400160405280600e81526020016d2d2d636f6e74726163744e616d6560901b815250828280610e8690613ea2565b935060ff1681518110610e9b57610e9b613d93565b60200260200101819052508760200151828280610eb790613ea2565b935060ff1681518110610ecc57610ecc613d93565b60200260200101819052506040518060400160405280600e81526020016d05a5ac6dedce8e4c2c6e8a0c2e8d60931b815250828280610f0a90613ea2565b935060ff1681518110610f1f57610f1f613d93565b602090810291909101015287518282610f3781613ea2565b935060ff1681518110610f4c57610f4c613d93565b6020026020010181905250604051806040016040528060098152602001680b4b58da185a5b925960ba1b815250828280610f8590613ea2565b935060ff1681518110610f9a57610f9a613d93565b6020908102919091010152610fae466120bd565b8282610fb981613ea2565b935060ff1681518110610fce57610fce613d93565b60200260200101819052506040518060400160405280600f81526020016e2d2d6275696c64496e666f46696c6560881b81525082828061100d90613ea2565b935060ff168151811061102257611022613d93565b60200260200101819052508682828061103a90613ea2565b935060ff168151811061104f5761104f613d93565b602090810291909101015285511561115d5760408051808201909152601581527f2d2d636f6e7374727563746f7242797465636f64650000000000000000000000602082015282826110a081613ea2565b935060ff16815181106110b5576110b5613d93565b60209081029190910101526040516371aad10d60e01b81526001600160a01b038416906371aad10d906110ec9089906004016138ab565b600060405180830381865afa158015611109573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111319190810190613ada565b828261113c81613ea2565b935060ff168151811061115157611151613d93565b60200260200101819052505b84602001511561120a576040805180820190915260128152712d2d766572696679536f75726365436f646560701b6020820152828261119b81613ea2565b935060ff16815181106111b0576111b0613d93565b60200260200101819052506040518060400160405280600581526020016466616c736560d81b8152508282806111e590613ea2565b935060ff16815181106111fa576111fa613d93565b6020026020010181905250611371565b611220610bfc8660a0015161202f60201b60201c565b6112a35760408051808201909152600d81526c2d2d6c6963656e73655479706560981b6020820152828261125381613ea2565b935060ff168151811061126857611268613d93565b60200260200101819052508460a001516040516020016112889190613da9565b6040516020818303038152906040528282806111e590613ea2565b8460c001511580156112c857506112c6610bfc896040015161202f60201b60201c565b155b156113715760408051808201909152600d81526c2d2d6c6963656e73655479706560981b602082015282826112fc81613ea2565b935060ff168151811061131157611311613d93565b60209081029190910101526113258861214f565b6040516020016113359190613da9565b60405160208183030381529060405282828061135090613ea2565b935060ff168151811061136557611365613d93565b60200260200101819052505b611387610bfc866040015161202f60201b60201c565b61140a5760408051808201909152600b81526a0b4b5c995b185e595c925960aa1b602082015282826113b881613ea2565b935060ff16815181106113cd576113cd613d93565b602002602001018190525084604001518282806113e990613ea2565b935060ff16815181106113fe576113fe613d93565b60200260200101819052505b6060850151156114fb576040805180820190915260068152650b4b5cd85b1d60d21b6020820152828261143c81613ea2565b935060ff168151811061145157611451613d93565b60209081029190910101526060850151604051631623433d60e31b815260048101919091526001600160a01b0384169063b11a19e890602401600060405180830381865afa1580156114a7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526114cf9190810190613ada565b82826114da81613ea2565b935060ff16815181106114ef576114ef613d93565b60200260200101819052505b60e0850151511561158d5760408051808201909152600a8152690b4b59d85cd31a5b5a5d60b21b6020820152828261153281613ea2565b935060ff168151811061154757611547613d93565b602090810291909101015260e085015151611561906120bd565b828261156c81613ea2565b935060ff168151811061158157611581613d93565b60200260200101819052505b60e0850151602001511561162a5760408051808201909152600a8152692d2d676173507269636560b01b602082015282826115c781613ea2565b935060ff16815181106115dc576115dc613d93565b60200260200101819052506115fe8560e00151602001516120bd60201b60201c565b828261160981613ea2565b935060ff168151811061161e5761161e613d93565b60200260200101819052505b60e085015160400151156116cb5760408051808201909152600e81526d2d2d6d617846656550657247617360901b6020820152828261166881613ea2565b935060ff168151811061167d5761167d613d93565b602002602001018190525061169f8560e00151604001516120bd60201b60201c565b82826116aa81613ea2565b935060ff16815181106116bf576116bf613d93565b60200260200101819052505b60e0850151606001511561177b5760408051808201909152601681527f2d2d6d61785072696f72697479466565506572476173000000000000000000006020820152828261171881613ea2565b935060ff168151811061172d5761172d613d93565b602002602001018190525061174f8560e00151606001516120bd60201b60201c565b828261175a81613ea2565b935060ff168151811061176f5761176f613d93565b60200260200101819052505b60008160ff166001600160401b03811115611798576117986138e7565b6040519080825280602002602001820160405280156117cb57816020015b60608152602001906001900390816117b65790505b50905060005b8260ff168160ff16101561182457838160ff16815181106117f4576117f4613d93565b6020026020010151828260ff168151811061181157611811613d93565b60209081029190910101526001016117d1565b5093505050505b949350505050565b61185a6040518060600160405280600060030b815260200160608152602001606081525090565b6040805180820182526004808252630c4c2e6d60e31b602083015291516334515cdb60e21b815260008051602061621183398151915292600091849163d145736c916118a891869101613f18565b600060405180830381865afa1580156118c5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526118ed9190810190613ada565b905060006118fb8683612805565b90506000846001600160a01b031663f45c1ce7836040518263ffffffff1660e01b815260040161192b9190613f5f565b6000604051808303816000875af115801561194a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119729190810190613fc4565b805190915060030b1580159061198b5750602081015151155b801561199a5750604081015151155b15610bad57816000815181106119b2576119b2613d93565b602002602001015160405160200161036c9190614077565b606060006119ff8560408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b604080518082018252600080825260209182015281518083019092528651825280870190820152909150611a369082905b9061293f565b15611b33576000611ab382611aad81611aa7611a798a60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6040805180820182526000808252602091820152815180830190925282518252918201519181019190915290565b90612966565b906129c3565b9050611ae7611ae0604051806040016040528060018152602001600560f91b81525061202f60201b60201c565b829061293f565b15611b2157611b1e611b17604051806040016040528060018152602001600560f91b81525061202f60201b60201c565b8290612a48565b90505b611b2a81612a6e565b92505050610287565b8215611b4c57848460405160200161036c929190614247565b5050604080516020810190915260008152610287565b509392505050565b6000808251602084016000f09392505050565b8160a0015115611b8c57505050565b6000611b99848484612ad3565b90506000611ba682611833565b602081015181519192509060030b158015611c195750611c19611bed604051806040016040528060078152602001665355434345535360c81b81525061202f60201b60201c565b604080518082018252600080825260209182015281518083019092528451825280850190820152611a30565b15611c2657505050505050565b60408201515115611c4657816040015160405160200161036c91906142c2565b8060405160200161036c919061430c565b60606000611c8c8360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b9050611cc3611cbc604051806040016040528060048152602001630b9cdbdb60e21b81525061202f60201b60201c565b829061205c565b15611d0557610287611d00611cf9604051806040016040528060048152602001630b9cdbdb60e21b81525061202f60201b60201c565b8390612fe6565b612a6e565b611d37611d30604051806040016040528060018152602001601d60f91b81525061202f60201b60201c565b8290613070565b600103611d9f57611d69611b17604051806040016040528060018152602001601d60f91b81525061202f60201b60201c565b50610287611d00611d98604051806040016040528060018152602001601d60f91b81525061202f60201b60201c565b8390612a48565b611dce611cbc60405180604001604052806005815260200164173539b7b760d91b81525061202f60201b60201c565b15611e9b576000611e0682611e01604051806040016040528060018152602001602f60f81b81525061202f60201b60201c565b613105565b905060008160018351611e19919061435c565b81518110611e2957611e29613d93565b60200260200101519050611e92611d00611e6560405180604001604052806005815260200164173539b7b760d91b81525061202f60201b60201c565b60408051808201825260008082526020918201528151808301909252855182528086019082015290612fe6565b95945050505050565b8260405160200161036c919061436f565b60606000611ee18360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b9050611f11611cbc604051806040016040528060048152602001630b9cdbdb60e21b81525061202f60201b60201c565b15611f1f5761028781612a6e565b611f4a611d30604051806040016040528060018152602001601d60f91b81525061202f60201b60201c565b600103611f7f57610287611d00611d98604051806040016040528060018152602001601d60f91b81525061202f60201b60201c565b611fae611cbc60405180604001604052806005815260200164173539b7b760d91b81525061202f60201b60201c565b15611e9b576000611fe182611e01604051806040016040528060018152602001602f60f81b81525061202f60201b60201c565b905060018151111561201d578060028251611ffc919061435c565b8151811061200c5761200c613d93565b602002602001015192505050919050565b508260405160200161036c919061436f565b60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b8051825160009111156120715750600061020c565b8151835160208501516000929161208791614429565b612091919061435c565b9050826020015181036120a857600191505061020c565b82516020840151819020912014905092915050565b606060006120ca836131a9565b60010190506000816001600160401b038111156120e9576120e96138e7565b6040519080825280601f01601f191660200182016040528015612113576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461211d57509392505050565b60606000612166836040015161202f60201b60201c565b90506121a361219c6040518060400160405280600a8152602001691553931250d15394d15160b21b81525061202f60201b60201c565b829061328b565b156121ca5750506040805180820190915260048152634e6f6e6560e01b6020820152919050565b6121fd61219c60405180604001604052806009815260200168556e6c6963656e736560b81b81525061202f60201b60201c565b15612229575050604080518082019091526009815268556e6c6963656e736560b81b6020820152919050565b61225661219c6040518060400160405280600381526020016213525560ea1b81525061202f60201b60201c565b1561227c57505060408051808201909152600381526213525560ea1b6020820152919050565b6122b261219c6040518060400160405280600c81526020016b47504c2d322e302d6f6e6c7960a01b81525061202f60201b60201c565b806122f257506122f261219c6040518060400160405280601081526020016f23a8261699171816b7b916b630ba32b960811b81525061202f60201b60201c565b1561231e57505060408051808201909152600981526823a72a9023a8263b1960b91b6020820152919050565b61235461219c6040518060400160405280600c81526020016b47504c2d332e302d6f6e6c7960a01b81525061202f60201b60201c565b80612394575061239461219c6040518060400160405280601081526020016f23a8261699971816b7b916b630ba32b960811b81525061202f60201b60201c565b156123c0575050604080518082019091526009815268474e552047504c763360b81b6020820152919050565b6123f761219c6040518060400160405280600d81526020016c4c47504c2d322e312d6f6e6c7960981b81525061202f60201b60201c565b80612438575061243861219c604051806040016040528060118152602001702623a8261699171896b7b916b630ba32b960791b81525061202f60201b60201c565b1561246757505060408051808201909152600c81526b474e55204c47504c76322e3160a01b6020820152919050565b61249e61219c6040518060400160405280600d81526020016c4c47504c2d332e302d6f6e6c7960981b81525061202f60201b60201c565b806124df57506124df61219c604051806040016040528060118152602001702623a8261699971816b7b916b630ba32b960791b81525061202f60201b60201c565b1561250c57505060408051808201909152600a815269474e55204c47504c763360b01b6020820152919050565b61254261219c6040518060400160405280600c81526020016b4253442d322d436c6175736560a01b81525061202f60201b60201c565b1561257157505060408051808201909152600c81526b4253442d322d436c6175736560a01b6020820152919050565b6125a761219c6040518060400160405280600c81526020016b4253442d332d436c6175736560a01b81525061202f60201b60201c565b156125d657505060408051808201909152600c81526b4253442d332d436c6175736560a01b6020820152919050565b61260761219c6040518060400160405280600781526020016604d504c2d322e360cc1b81525061202f60201b60201c565b1561263157505060408051808201909152600781526604d504c2d322e360cc1b6020820152919050565b61266261219c6040518060400160405280600781526020016604f534c2d332e360cc1b81525061202f60201b60201c565b1561268c57505060408051808201909152600781526604f534c2d332e360cc1b6020820152919050565b6126c061219c6040518060400160405280600a81526020016904170616368652d322e360b41b81525061202f60201b60201c565b156126ed57505060408051808201909152600a81526904170616368652d322e360b41b6020820152919050565b61272461219c6040518060400160405280600d81526020016c4147504c2d332e302d6f6e6c7960981b81525061202f60201b60201c565b80612765575061276561219c6040518060400160405280601181526020017020a3a8261699971816b7b916b630ba32b960791b81525061202f60201b60201c565b1561279257505060408051808201909152600a815269474e55204147504c763360b01b6020820152919050565b6127c461219c604051806040016040528060088152602001674255534c2d312e3160c01b81525061202f60201b60201c565b156127ee57505060408051808201909152600781526642534c20312e3160c81b6020820152919050565b6040808401518451915161036c929060200161443c565b60608060005b8451811015612890578185828151811061282757612827613d93565b60200260200101516040516020016128409291906139e7565b60405160208183030381529060405291506001855161285f919061435c565b81146128885781604051602001612876919061458c565b60405160208183030381529060405291505b60010161280b565b5060408051600380825260808201909252600091816020015b60608152602001906001900390816128a957905050905083816000815181106128d4576128d4613d93565b6020026020010181905250604051806040016040528060028152602001612d6360f01b8152508160018151811061290d5761290d613d93565b6020026020010181905250818160028151811061292c5761292c613d93565b6020908102919091010152949350505050565b602080830151835183519284015160009361295d929184919061329f565b14159392505050565b604080518082019091526000808252602080830182905284518582015185519286015161299393906133b0565b90508360200151816129a5919061435c565b845185906129b490839061435c565b90525060208401525090919050565b60408051808201909152600080825260208201528151835110156129e857508161020c565b6020808301519084015160019114612a0f5750815160208481015190840151829020919020145b8015612a4057825184518590612a2690839061435c565b9052508251602085018051612a3c908390614429565b9052505b509192915050565b6040805180820190915260008082526020820152612a678383836134d0565b5092915050565b6060600082600001516001600160401b03811115612a8e57612a8e6138e7565b6040519080825280601f01601f191660200182016040528015612ab8576020820181803683370190505b50602084810151855192935090830191612a67918391613576565b60606000612adf610545565b6040805160ff808252612000820190925291925060009190816020015b6060815260200190600190039081612afc5790505090506000604051806040016040528060038152602001620dce0f60eb1b815250828280612b3d90613ea2565b935060ff1681518110612b5257612b52613d93565b6020026020010181905250604051806040016040528060078152602001665e312e33322e3360c81b815250604051602001612b8d91906145b1565b604051602081830303815290604052828280612ba890613ea2565b935060ff1681518110612bbd57612bbd613d93565b60200260200101819052506040518060400160405280600881526020016776616c696461746560c01b815250828280612bf590613ea2565b935060ff1681518110612c0a57612c0a613d93565b602002602001018190525082604051602001612c269190613dde565b604051602081830303815290604052828280612c4190613ea2565b935060ff1681518110612c5657612c56613d93565b60200260200101819052506040518060400160405280600a8152602001690b4b58dbdb9d1c9858dd60b21b815250828280612c9090613ea2565b935060ff1681518110612ca557612ca5613d93565b6020908102919091010152612cba87846135f0565b8282612cc581613ea2565b935060ff1681518110612cda57612cda613d93565b602090810291909101015285515115612d725760408051808201909152600b81526a2d2d7265666572656e636560a81b60208201528282612d1a81613ea2565b935060ff1681518110612d2f57612d2f613d93565b60209081029190910101528551612d4690846135f0565b8282612d5181613ea2565b935060ff1681518110612d6657612d66613d93565b60200260200101819052505b856080015115612de05760408051808201909152601881527f2d2d756e73616665536b697053746f72616765436865636b000000000000000060208201528282612dbb81613ea2565b935060ff1681518110612dd057612dd0613d93565b6020026020010181905250612e3b565b8415612e3b576040805180820190915260128152712d2d726571756972655265666572656e636560701b60208201528282612e1a81613ea2565b935060ff1681518110612e2f57612e2f613d93565b60200260200101819052505b60408601515115612ec75760408051808201909152600d81526c2d2d756e73616665416c6c6f7760981b60208201528282612e7581613ea2565b935060ff1681518110612e8a57612e8a613d93565b60200260200101819052508560400151828280612ea690613ea2565b935060ff1681518110612ebb57612ebb613d93565b60200260200101819052505b856060015115612f315760408051808201909152601481527f2d2d756e73616665416c6c6f7752656e616d657300000000000000000000000060208201528282612f1081613ea2565b935060ff1681518110612f2557612f25613d93565b60200260200101819052505b60008160ff166001600160401b03811115612f4e57612f4e6138e7565b604051908082528060200260200182016040528015612f8157816020015b6060815260200190600190039081612f6c5790505b50905060005b8260ff168160ff161015612fda57838160ff1681518110612faa57612faa613d93565b6020026020010151828260ff1681518110612fc757612fc7613d93565b6020908102919091010152600101612f87565b50979650505050505050565b604080518082019091526000808252602082015281518351101561300b57508161020c565b8151835160208501516000929161302191614429565b61302b919061435c565b6020840151909150600190821461304c575082516020840151819020908220145b80156130675783518551869061306390839061435c565b9052505b50929392505050565b8051825160208085015190840151600093849390926130909284906133b0565b61309a9190614429565b90505b835160208501516130ae9190614429565b8111612a6757816130be816145f6565b92505082600001516130f48560200151836130d9919061435c565b86516130e5919061435c565b855160208701518591906133b0565b6130fe9190614429565b905061309d565b606060006131138484613070565b61311e906001614429565b6001600160401b03811115613135576131356138e7565b60405190808252806020026020018201604052801561316857816020015b60608152602001906001900390816131535790505b50905060005b8151811015611b6257613184611d008686612a48565b82828151811061319657613196613d93565b602090810291909101015260010161316e565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106131f2577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef8100000000831061321e576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061323c57662386f26fc10000830492506010015b6305f5e1008310613254576305f5e100830492506008015b612710831061326857612710830492506004015b6064831061327a576064830492506002015b600a831061020c5760010192915050565b60006132978383613630565b159392505050565b6000808584116133a6576020841161335257600084156132ea5760016132c686602061435c565b6132d190600861460f565b6132dc90600261470d565b6132e6919061435c565b1990505b83518116856132f98989614429565b613303919061435c565b805190935082165b81811461333d57878411613325578794505050505061182b565b8361332f81614719565b94505082845116905061330b565b6133478785614429565b94505050505061182b565b83832061335f858861435c565b6133699087614429565b91505b8582106133a457848220808203613391576133878684614429565b935050505061182b565b61339c60018461435c565b92505061336c565b505b5092949350505050565b600083818685116134bb576020851161346a57600085156133fc5760016133d887602061435c565b6133e390600861460f565b6133ee90600261470d565b6133f8919061435c565b1990505b8451811660008761340d8b8b614429565b613417919061435c565b855190915083165b82811461345c57818610613444576134378b8b614429565b965050505050505061182b565b8561344e816145f6565b96505083865116905061341f565b85965050505050505061182b565b508383206000905b61347c868961435c565b82116134b957858320808203613498578394505050505061182b565b6134a3600185614429565b93505081806134b1906145f6565b925050613472565b505b6134c58787614429565b979650505050505050565b60408051808201909152600080825260208083018290528551868201518651928701516134fd93906133b0565b602080870180519186019190915251909150613519908261435c565b83528451602086015161352c9190614429565b810361353b576000855261356d565b835183516135499190614429565b8551869061355890839061435c565b90525083516135679082614429565b60208601525b50909392505050565b602081106135ae578151835261358d602084614429565b925061359a602083614429565b91506135a760208261435c565b9050613576565b60001981156135dd5760016135c483602061435c565b6135d09061010061470d565b6135da919061435c565b90505b9151835183169219169190911790915250565b606060006135fe84846105df565b805160208083015160405193945061361893909101614730565b60405160208183030381529060405291505092915050565b8151815160009190811115613643575081515b6020808501519084015160005b838110156136fc57825182518082146136cc5760001960208710156136ab5760018461367d89602061435c565b6136879190614429565b61369290600861460f565b61369d90600261470d565b6136a7919061435c565b1990505b81811683821681810391146136c957975061020c9650505050505050565b50505b6136d7602086614429565b94506136e4602085614429565b935050506020816136f59190614429565b9050613650565b5084518651610bad919061476c565b610c9f8061557283390190565b6040518060e0016040528060608152602001606081526020016060815260200160001515815260200160001515815260200160001515815260200161375b613760565b905290565b6040518061010001604052806000151581526020016000151581526020016060815260200160008019168152602001606081526020016060815260200160001515815260200161375b6040518060800160405280600081526020016000815260200160008152602001600081525090565b60005b838110156137ec5781810151838201526020016137d4565b50506000910152565b6000815180845261380d8160208601602086016137d1565b601f01601f19169290920160200192915050565b6001600160a01b038316815260406020820181905260009061182b908301846137f5565b7f4661696c656420746f206465706c6f7920636f6e74726163742000000000000081526000835161387d81601a8501602088016137d1565b6101d160f51b601a91840191820152835161389f81601c8401602088016137d1565b01601c01949350505050565b60208152600061028760208301846137f5565b6000602082840312156138d057600080fd5b81516001600160a01b038116811461028757600080fd5b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561391f5761391f6138e7565b60405290565b6000806001600160401b0384111561393f5761393f6138e7565b50604051601f19601f85018116603f011681018181106001600160401b038211171561396d5761396d6138e7565b60405283815290508082840185101561398557600080fd5b611b628460208301856137d1565b600082601f8301126139a457600080fd5b61028783835160208501613925565b6000602082840312156139c557600080fd5b81516001600160401b038111156139db57600080fd5b61020884828501613993565b600083516139f98184602088016137d1565b835190830190613a0d8183602088016137d1565b01949350505050565b7f4661696c656420746f206465706c6f7920636f6e747261637420000000000000815260008351613a4e81601a8501602088016137d1565b7f207573696e6720636f6e7374727563746f722064617461202200000000000000601a918401918201528351613a8b8160338401602088016137d1565b601160f91b60339290910191820152603401949350505050565b60408152600b60408201526a1193d55391149657d3d55560aa1b606082015260806020820152600061028760808301846137f5565b600060208284031215613aec57600080fd5b81516001600160401b03811115613b0257600080fd5b8201601f81018413613b1357600080fd5b61020884825160208401613925565b60008551613b34818460208a016137d1565b602f60f81b9083019081528551613b52816001840160208a016137d1565b602f60f81b600192909101918201528451613b748160028401602089016137d1565b600181830101915050602f60f81b60018201528351613b9a8160028401602088016137d1565b64173539b7b760d91b600292909101918201526007019695505050505050565b604081526000613bcd60408301846137f5565b828103602084015260048152630b985cdd60e21b60208201526040810191505092915050565b600060208284031215613c0557600080fd5b8151801515811461028757600080fd5b7f436f756c64206e6f742066696e642041535420696e2061727469666163742000815260008251613c4d81601f8501602087016137d1565b7f2e205365742060617374203d20747275656020696e20666f756e6472792e746f601f939091019283015250611b5b60f21b603f820152604101919050565b604081526000613c9f60408301846137f5565b8281036020840152601181527005cc2e6e85cc2c4e6ded8eae8caa0c2e8d607b1b60208201526040810191505092915050565b604081526000613ce560408301846137f5565b8281036020840152600c81526b2e6173742e6c6963656e736560a01b60208201526040810191505092915050565b7f2e6d657461646174612e736f75726365732e5b27000000000000000000000000815260008251613d4b8160148501602087016137d1565b6b13ae9735b2b1b1b0b5991a9b60a11b6014939091019283015250602001919050565b604081526000613d8160408301856137f5565b828103602084015261028381856137f5565b634e487b7160e01b600052603260045260246000fd5b601160f91b81528151600090613dc68160018501602087016137d1565b601160f91b6001939091019283015250600201919050565b60008251613df08184602087016137d1565b6a2f6275696c642d696e666f60a81b920191825250600b01919050565b7f436f756c64206e6f742066696e64206275696c642d696e666f2066696c65207781527f697468206d61746368696e6720736f7572636520636f6465206861736820666f60208201526a0391031b7b73a3930b1ba160ad1b604082015260008251613e7f81604b8501602087016137d1565b91909101604b0192915050565b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff8103613eb857613eb8613e8c565b60010192915050565b7f406f70656e7a657070656c696e2f646566656e6465722d6465706c6f792d636c81526801a595b9d0b58db1a560be1b602082015260008251613f0b8160298501602087016137d1565b9190910160290192915050565b60408152601660408201527f4f50454e5a455050454c494e5f424153485f5041544800000000000000000000606082015260806020820152600061028760808301846137f5565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015613fb857603f19878603018452613fa38583516137f5565b94506020938401939190910190600101613f87565b50929695505050505050565b600060208284031215613fd657600080fd5b81516001600160401b03811115613fec57600080fd5b820160608185031215613ffe57600080fd5b6140066138fd565b81518060030b811461401757600080fd5b815260208201516001600160401b0381111561403257600080fd5b61403e86828501613993565b60208301525060408201516001600160401b0381111561405d57600080fd5b61406986828501613993565b604083015250949350505050565b7f4661696c656420746f2072756e206261736820636f6d6d616e642077697468208152601160f91b6020820152600082516140b98160218501602087016137d1565b7f222e20496620796f7520617265207573696e672057696e646f77732c2073657460219390910192830152507f20746865204f50454e5a455050454c494e5f424153485f5041544820656e766960418201527f726f6e6d656e74207661726961626c6520746f207468652066756c6c7920717560618201527f616c69666965642070617468206f66207468652062617368206578656375746160818201527f626c652e20466f72206578616d706c652c20696620796f75206172652075736960a18201527f6e672047697420666f722057696e646f77732c206164642074686520666f6c6c60c18201527f6f77696e67206c696e6520696e20746865202e656e762066696c65206f66207960e18201527f6f75722070726f6a65637420287573696e6720666f727761726420736c6173686101018201527f6573293a0a4f50454e5a455050454c494e5f424153485f504154483d22433a2f6101218201527f50726f6772616d2046696c65732f4769742f62696e2f6261736822000000000061014182015261015c01919050565b7f4661696c656420746f2066696e64206c696e65207769746820707265666978208152602760f81b6020820152600083516142898160218501602088016137d1565b6c0139034b71037baba383aba1d1609d1b60219184019182015283516142b681602e8401602088016137d1565b01602e01949350505050565b7f4661696c656420746f2072756e2075706772616465207361666574792076616c815268034b230ba34b7b71d160bd1b602082015260008251613f0b8160298501602087016137d1565b7f55706772616465207361666574792076616c69646174696f6e206661696c65648152611d0560f11b60208201526000825161434f8160228501602087016137d1565b9190910160220192915050565b8181038181111561020c5761020c613e8c565b6d021b7b73a3930b1ba103730b6b2960951b81526000825161439881600e8501602087016137d1565b7f206d75737420626520696e2074686520666f726d6174204d79436f6e74726163600e9390910192830152507f742e736f6c3a4d79436f6e7472616374206f72204d79436f6e74726163742e73602e8201527f6f6c206f72206f75742f4d79436f6e74726163742e736f6c2f4d79436f6e7472604e8201526730b1ba173539b7b760c11b606e820152607601919050565b8082018082111561020c5761020c613e8c565b7f53504458206c6963656e7365206964656e7469666965722000000000000000008152600083516144748160188501602088016137d1565b6301034b7160e51b601891840191820152835161449881601c8401602088016137d1565b7f20646f6573206e6f74206c6f6f6b206c696b65206120737570706f7274656420601c92909101918201527f6c6963656e736520666f7220626c6f636b206578706c6f726572207665726966603c8201527f69636174696f6e2e205573652074686520606c6963656e73655479706560206f605c8201527f7074696f6e20746f20737065636966792061206c6963656e736520747970652c607c8201527f206f7220736574207468652060736b69704c6963656e73655479706560206f70609c8201527f74696f6e20746f2060747275656020746f20736b69702e00000000000000000060bc82015260d301949350505050565b6000825161459e8184602087016137d1565b600160fd1b920191825250600101919050565b7f406f70656e7a657070656c696e2f75706772616465732d636f726540000000008152600082516145e981601c8501602087016137d1565b91909101601c0192915050565b60006001820161460857614608613e8c565b5060010190565b808202811582820484141761020c5761020c613e8c565b6001815b60018411156146615780850481111561464557614645613e8c565b600184161561465357908102905b60019390931c92800261462a565b935093915050565b6000826146785750600161020c565b816146855750600061020c565b816001811461469b57600281146146a5576146c1565b600191505061020c565b60ff8411156146b6576146b6613e8c565b50506001821b61020c565b5060208310610133831016604e8410600b84101617156146e4575081810a61020c565b6146f16000198484614626565b806000190482111561470557614705613e8c565b029392505050565b60006102878383614669565b60008161472857614728613e8c565b506000190190565b600083516147428184602088016137d1565b601d60f91b90830190815283516147608160018401602088016137d1565b01600101949350505050565b8181036000831280158383131683831282161715612a6757612a67613e8c565b610dd78061479b6000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80636133b4bb1161005b5780636133b4bb1461012b57806381100bf01461013e578063c8a023621461015e578063d9caed121461017157600080fd5b8063116191b61461008d57806321fc65f2146100d65780633c2f05a8146100eb5780635b1125911461010b575b600080fd5b6001546100ad9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100e96100e4366004610aff565b610184565b005b6003546100ad9073ffffffffffffffffffffffffffffffffffffffff1681565b6002546100ad9073ffffffffffffffffffffffffffffffffffffffff1681565b6100e9610139366004610b6e565b61030e565b6004546100ad9073ffffffffffffffffffffffffffffffffffffffff1681565b6100e961016c366004610aff565b61052a565b6100e961017f366004610bc8565b61069b565b61018c61078b565b60025473ffffffffffffffffffffffffffffffffffffffff1633146101dd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546102049073ffffffffffffffffffffffffffffffffffffffff8781169116856107ce565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906102629088908890889088908890600401610c4e565b600060405180830381600087803b15801561027c57600080fd5b505af1158015610290573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102f593929190610cab565b60405180910390a36103076001600055565b5050505050565b60035473ffffffffffffffffffffffffffffffffffffffff166340c10f1930610338866005610cce565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401600060405180830381600087803b1580156103a357600080fd5b505af11580156103b7573d6000803e3d6000fd5b50506003546006546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152600560248201529116925063a9059cbb91506044016020604051808303816000875af1158015610436573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045a9190610d08565b506003546104819073ffffffffffffffffffffffffffffffffffffffff1685858585610184565b6003546001546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201529116906370a0823190602401602060405180830381865afa1580156104f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105179190610d2a565b1561052457610524610d43565b50505050565b61053261078b565b60025473ffffffffffffffffffffffffffffffffffffffff163314610583576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546105aa9073ffffffffffffffffffffffffffffffffffffffff8781169116856107ce565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906106089088908890889088908890600401610c4e565b600060405180830381600087803b15801561062257600080fd5b505af1158015610636573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102f593929190610cab565b6106a361078b565b60025473ffffffffffffffffffffffffffffffffffffffff1633146106f4576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61071573ffffffffffffffffffffffffffffffffffffffff841683836107ce565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8360405161077491815260200190565b60405180910390a36107866001600055565b505050565b6002600054036107c7576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261078691859190600090610867908416836108e0565b9050805160001415801561088c57508080602001905181019061088a9190610d08565b155b15610786576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606108ee838360006108f7565b90505b92915050565b606081471015610935576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016108d7565b6000808573ffffffffffffffffffffffffffffffffffffffff16848660405161095e9190610d72565b60006040518083038185875af1925050503d806000811461099b576040519150601f19603f3d011682016040523d82523d6000602084013e6109a0565b606091505b50915091506109b08683836109bc565b925050505b9392505050565b6060826109d1576109cc82610a4b565b6109b5565b81511580156109f5575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610a44576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016108d7565b50806109b5565b805115610a5b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610ab157600080fd5b919050565b60008083601f840112610ac857600080fd5b50813567ffffffffffffffff811115610ae057600080fd5b602083019150836020828501011115610af857600080fd5b9250929050565b600080600080600060808688031215610b1757600080fd5b610b2086610a8d565b9450610b2e60208701610a8d565b935060408601359250606086013567ffffffffffffffff811115610b5157600080fd5b610b5d88828901610ab6565b969995985093965092949392505050565b60008060008060608587031215610b8457600080fd5b610b8d85610a8d565b935060208501359250604085013567ffffffffffffffff811115610bb057600080fd5b610bbc87828801610ab6565b95989497509550505050565b600080600060608486031215610bdd57600080fd5b610be684610a8d565b9250610bf460208501610a8d565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff85166020820152836040820152608060608201526000610ca0608083018486610c05565b979650505050505050565b838152604060208201526000610cc5604083018486610c05565b95945050505050565b808201808211156108f1577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060208284031215610d1a57600080fd5b815180151581146109b557600080fd5b600060208284031215610d3c57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000825160005b81811015610d935760208186018101518583015201610d79565b50600092019182525091905056fea2646970667358221220b0a7bb2e0e1fca0564f282b7e276b762b03ff9d51eb208ba06692fe22a5d3e1664736f6c634300081a0033608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a00330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d54686520606c6963656e73655479706560206f7074696f6e2063616e6e6f7420"; type ERC20CustodyNewEchidnaTestConstructorParams = | [signer?: Signer] diff --git a/v2/typechain-types/factories/ERC20CustodyNew__factory.ts b/v2/typechain-types/factories/ERC20CustodyNew__factory.ts index d506fbfc..14d94ff9 100644 --- a/v2/typechain-types/factories/ERC20CustodyNew__factory.ts +++ b/v2/typechain-types/factories/ERC20CustodyNew__factory.ts @@ -284,7 +284,7 @@ const _abi = [ ] as const; const _bytecode = - "0x608060405234801561001057600080fd5b50604051610b35380380610b3583398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a37806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bd565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610942565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102819392919061098d565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610942565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102819392919061098d565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109b0565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109d2565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff8082111561087557600080fd5b818801915088601f83011261088957600080fd5b81358181111561089857600080fd5b8960208285010111156108aa57600080fd5b9699959850939650602001949392505050565b6000806000606084860312156108d257600080fd5b6108db846107f9565b92506108e9602085016107f9565b9150604084013590509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109826080830184866108f9565b979650505050505050565b8381526040602082015260006109a76040830184866108f9565b95945050505050565b6000602082840312156109c257600080fd5b8151801515811461065e57600080fd5b6000825160005b818110156109f357602081860181015185830152016109d9565b50600092019182525091905056fea2646970667358221220add5c975d5cd9c8b4afe35ea370aed6f4c4571bcc8cfe91b243cc9add705e36664736f6c63430008150033"; + "0x608060405234801561001057600080fd5b50604051610b4a380380610b4a83398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a4c806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bf565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610945565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e858585604051610281939291906109a2565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610945565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8858585604051610281939291906109a2565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109c5565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109e7565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff81111561087457600080fd5b8601601f8101881361088557600080fd5b803567ffffffffffffffff81111561089c57600080fd5b8860208284010111156108ae57600080fd5b959894975092955050506020019190565b6000806000606084860312156108d457600080fd5b6108dd846107f9565b92506108eb602085016107f9565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006109976080830184866108fc565b979650505050505050565b8381526040602082015260006109bc6040830184866108fc565b95945050505050565b6000602082840312156109d757600080fd5b8151801515811461065e57600080fd5b6000825160005b81811015610a0857602081860181015185830152016109ee565b50600092019182525091905056fea264697066735822122041336b1568f49be1aa3dcd208e804b373772741e9b7e1726a8869e99fced60c764736f6c634300081a0033"; type ERC20CustodyNewConstructorParams = | [signer?: Signer] diff --git a/v2/typechain-types/factories/GatewayEVMEchidnaTest__factory.ts b/v2/typechain-types/factories/GatewayEVMEchidnaTest__factory.ts index e9382894..91c6d73a 100644 --- a/v2/typechain-types/factories/GatewayEVMEchidnaTest__factory.ts +++ b/v2/typechain-types/factories/GatewayEVMEchidnaTest__factory.ts @@ -809,7 +809,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a060405230608052600580546001600160a01b031916331790553480156200002757600080fd5b506200003262000153565b600554600180546001600160a01b039092166001600160a01b0319928316179055600280546101239216919091179055604051620000709062000207565b60408082526004908201819052631d195cdd60e21b606083015260806020830181905282015263151154d560e21b60a082015260c001604051809103906000f080158015620000c3573d6000803e3d6000fd5b50600480546001600160a01b0319166001600160a01b0392831617905560015460405130929190911690620000f89062000215565b6001600160a01b03928316815291166020820152604001604051809103906000f0801580156200012c573d6000803e3d6000fd5b50600080546001600160a01b0319166001600160a01b039290921691909117905562000223565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620001a45760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620002045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b610cca8062002a2783390190565b610b3580620036f183390190565b6080516127da6200024d600039600081816116ad015281816116d60152611b1c01526127da6000f3fe6080604052600436106101965760003560e01c80635b112591116100e1578063ad3cb1cc1161008a578063dda79b7511610064578063dda79b7514610475578063f2fde38b14610495578063f340fa01146104b5578063f45346dc146104c857600080fd5b8063ad3cb1cc146103ec578063ae7a3a6f14610435578063b8969bd41461045557600080fd5b806381100bf0116100bb57806381100bf01461036f5780638c6f037f1461038f5780638da5cb5b146103af57600080fd5b80635b1125911461031a5780636ab90f9b1461033a578063715018a61461035a57600080fd5b80633c2f05a8116101435780635131ab591161011d5780635131ab59146102b757806352d1902d146102d757806357bec62f146102fa57600080fd5b80633c2f05a814610264578063485cc955146102845780634f1ef286146102a457600080fd5b806321e093b11161017457806321e093b11461020657806329c59b5d1461023e57806335c018db1461025157600080fd5b806310188aef1461019b5780631b8b921d146101bd5780631cff79cd146101dd575b600080fd5b3480156101a757600080fd5b506101bb6101b6366004612295565b6104e8565b005b3480156101c957600080fd5b506101bb6101d83660046122f9565b6105e9565b6101f06101eb3660046122f9565b61063b565b6040516101fd91906123ba565b60405180910390f35b34801561021257600080fd5b50600354610226906001600160a01b031681565b6040516001600160a01b0390911681526020016101fd565b6101bb61024c3660046122f9565b6106e0565b6101bb61025f3660046122f9565b610805565b34801561027057600080fd5b50600454610226906001600160a01b031681565b34801561029057600080fd5b506101bb61029f3660046123cd565b61099d565b6101bb6102b236600461242f565b610bca565b3480156102c357600080fd5b506101bb6102d236600461250f565b610be9565b3480156102e357600080fd5b506102ec610ef0565b6040519081526020016101fd565b34801561030657600080fd5b50600254610226906001600160a01b031681565b34801561032657600080fd5b50600154610226906001600160a01b031681565b34801561034657600080fd5b506101bb61035536600461257e565b610f1f565b34801561036657600080fd5b506101bb611050565b34801561037b57600080fd5b50600554610226906001600160a01b031681565b34801561039b57600080fd5b506101bb6103aa3660046125d8565b611064565b3480156103bb57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610226565b3480156103f857600080fd5b506101f06040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b34801561044157600080fd5b506101bb610450366004612295565b611101565b34801561046157600080fd5b506101bb61047036600461250f565b611202565b34801561048157600080fd5b50600054610226906001600160a01b031681565b3480156104a157600080fd5b506101bb6104b0366004612295565b6113a6565b6101bb6104c3366004612295565b611402565b3480156104d457600080fd5b506101bb6104e336600461262a565b611527565b6001546001600160a01b0316331461052c576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b03161561056f576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0381166105af576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3848460405161062e9291906126af565b60405180910390a3505050565b6001546060906001600160a01b03163314610682576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061068f8585856115d2565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f3486866040516106ce939291906126cb565b60405180910390a290505b9392505050565b3460000361071a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114610767576040519150601f19603f3d011682016040523d82523d6000602084013e61076c565b606091505b50909150508015156000036107ad576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a434600087876040516107f794939291906126e5565b60405180910390a350505050565b6001546001600160a01b03163314610849576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610897576040519150601f19603f3d011682016040523d82523d6000602084013e61089c565b606091505b5091509150816108d8576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061091f90879087906004016126af565b600060405180830381600087803b15801561093957600080fd5b505af115801561094d573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161098e939291906126cb565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109e85750825b905060008267ffffffffffffffff166001148015610a055750303b155b905081158015610a13575080155b15610a4a576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610aab5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610ac857506001600160a01b038616155b15610aff576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b0833611679565b610b1061168a565b610b18611692565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610bc15784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610bd26116a2565b610bdb82611772565b610be5828261177a565b5050565b610bf161189e565b6000546001600160a01b03163314801590610c1757506002546001600160a01b03163314155b15610c4e576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c88576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c92858561191f565b610cc8576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610d30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d54919061270e565b610d8a576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d978584846115d2565b9050610da3868661191f565b610dd9576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610e39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e5d9190612730565b90508015610e6f57610e6f87826119af565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610eb6939291906126cb565b60405180910390a35050610ee960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610efa611b11565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600480546040517f40c10f190000000000000000000000000000000000000000000000000000000081523092810192909252602482018590526001600160a01b0316906340c10f1990604401600060405180830381600087803b158015610f8557600080fd5b505af1158015610f99573d6000803e3d6000fd5b5050600454610fb792506001600160a01b0316905085858585610be9565b600480546040517f70a0823100000000000000000000000000000000000000000000000000000000815230928101929092526001600160a01b0316906370a0823190602401602060405180830381865afa158015611019573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103d9190612730565b1561104a5761104a612749565b50505050565b611058611b73565b6110626000611be7565b565b8360000361109e576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110a9338486611c70565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4868686866040516110f294939291906126e5565b60405180910390a35050505050565b6001546001600160a01b03163314611145576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615611188576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0381166111c8576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b61120a61189e565b6000546001600160a01b0316331480159061123057506002546001600160a01b03163314155b15611267576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036112a1576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112b56001600160a01b0386168585611dbb565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b5906112fc90859085906004016126af565b600060405180830381600087803b15801561131657600080fd5b505af115801561132a573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda7858585604051611375939291906126cb565b60405180910390a3610ee960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6113ae611b73565b6001600160a01b0381166113f6576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6113ff81611be7565b50565b3460000361143c576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114611489576040519150601f19603f3d011682016040523d82523d6000602084013e61148e565b606091505b50909150508015156000036114cf576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b81600003611561576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61156c338284611c70565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4848460405161062e9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b03163486866040516115f2929190612778565b60006040518083038185875af1925050503d806000811461162f576040519150601f19603f3d011682016040523d82523d6000602084013e611634565b606091505b509150915081611670576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b611681611e2f565b6113ff81611e96565b611062611e2f565b61169a611e2f565b611062611e9e565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061173b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661172f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15611062576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ff611b73565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156117f2575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526117ef91810190612730565b60015b611833576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024016113ed565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461188f576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016113ed565b6118998383611ea6565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611919576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af115801561198b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d9919061270e565b6003546001600160a01b0390811690831603611ad1576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611a31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a55919061270e565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611ab557600080fd5b505af1158015611ac9573d6000803e3d6000fd5b505050505050565b600054610be5906001600160a01b03848116911683611dbb565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611062576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33611ba57f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614611062576040517f118cdaa70000000000000000000000000000000000000000000000000000000081523360048201526024016113ed565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611d9f57611c9b6001600160a01b038316843084611efc565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611d07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2b919061270e565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611d8b57600080fd5b505af1158015610bc1573d6000803e3d6000fd5b600054611899906001600160a01b038481169186911684611efc565b6040516001600160a01b0383811660248301526044820183905261189991859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611f35565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611062576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ae611e2f565b611aeb611e2f565b611eaf82611fb1565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611ef4576118998282612059565b610be56120c6565b6040516001600160a01b03848116602483015283811660448301526064820183905261104a9186918216906323b872dd90608401611de8565b6000611f4a6001600160a01b038416836120fe565b90508051600014158015611f6f575080806020019051810190611f6d919061270e565b155b15611899576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016113ed565b806001600160a01b03163b600003612000576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016113ed565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516120769190612788565b600060405180830381855af49150503d80600081146120b1576040519150601f19603f3d011682016040523d82523d6000602084013e6120b6565b606091505b509150915061167085838361210c565b3415611062576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60606106d983836000612181565b6060826121215761211c82612237565b6106d9565b815115801561213857506001600160a01b0384163b155b1561217a576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016113ed565b50806106d9565b6060814710156121bf576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016113ed565b600080856001600160a01b031684866040516121db9190612788565b60006040518083038185875af1925050503d8060008114612218576040519150601f19603f3d011682016040523d82523d6000602084013e61221d565b606091505b509150915061222d86838361210c565b9695505050505050565b8051156122475780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b038116811461229057600080fd5b919050565b6000602082840312156122a757600080fd5b6106d982612279565b60008083601f8401126122c257600080fd5b50813567ffffffffffffffff8111156122da57600080fd5b6020830191508360208285010111156122f257600080fd5b9250929050565b60008060006040848603121561230e57600080fd5b61231784612279565b9250602084013567ffffffffffffffff81111561233357600080fd5b61233f868287016122b0565b9497909650939450505050565b60005b8381101561236757818101518382015260200161234f565b50506000910152565b6000815180845261238881602086016020860161234c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006106d96020830184612370565b600080604083850312156123e057600080fd5b6123e983612279565b91506123f760208401612279565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561244257600080fd5b61244b83612279565b9150602083013567ffffffffffffffff8082111561246857600080fd5b818501915085601f83011261247c57600080fd5b81358181111561248e5761248e612400565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156124d4576124d4612400565b816040528281528860208487010111156124ed57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060008060006080868803121561252757600080fd5b61253086612279565b945061253e60208701612279565b935060408601359250606086013567ffffffffffffffff81111561256157600080fd5b61256d888289016122b0565b969995985093965092949392505050565b6000806000806060858703121561259457600080fd5b61259d85612279565b935060208501359250604085013567ffffffffffffffff8111156125c057600080fd5b6125cc878288016122b0565b95989497509550505050565b6000806000806000608086880312156125f057600080fd5b6125f986612279565b94506020860135935061260e60408701612279565b9250606086013567ffffffffffffffff81111561256157600080fd5b60008060006060848603121561263f57600080fd5b61264884612279565b92506020840135915061265d60408501612279565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006126c3602083018486612666565b949350505050565b838152604060208201526000611670604083018486612666565b8481526001600160a01b038416602082015260606040820152600061222d606083018486612666565b60006020828403121561272057600080fd5b815180151581146106d957600080fd5b60006020828403121561274257600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b8183823760009101908152919050565b6000825161279a81846020870161234c565b919091019291505056fea2646970667358221220ccaa44ae6a6f89f20a2cc4669af6715a57945a17c158cfad4882682113e1253764736f6c6343000815003360806040523480156200001157600080fd5b5060405162000cca38038062000cca833981016040819052620000349162000123565b818160036200004483826200021c565b5060046200005382826200021c565b5050505050620002e8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008657600080fd5b81516001600160401b0380821115620000a357620000a36200005e565b604051601f8301601f19908116603f01168101908282118183101715620000ce57620000ce6200005e565b81604052838152602092508683858801011115620000eb57600080fd5b600091505b838210156200010f5785820183015181830184015290820190620000f0565b600093810190920192909252949350505050565b600080604083850312156200013757600080fd5b82516001600160401b03808211156200014f57600080fd5b6200015d8683870162000074565b935060208501519150808211156200017457600080fd5b50620001838582860162000074565b9150509250929050565b600181811c90821680620001a257607f821691505b602082108103620001c357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021757600081815260208120601f850160051c81016020861015620001f25750805b601f850160051c820191505b818110156200021357828155600101620001fe565b5050505b505050565b81516001600160401b038111156200023857620002386200005e565b62000250816200024984546200018d565b84620001c9565b602080601f8311600181146200028857600084156200026f5750858301515b600019600386901b1c1916600185901b17855562000213565b600085815260208120601f198616915b82811015620002b95788860151825594840194600190910190840162000298565b5085821015620002d85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6109d280620002f86000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108ba565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dc565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f39061090f565b80601f016020809104026020016040519081016040528092919081815260200182805461021f9061090f565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f39061090f565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610962565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b600060208083528351808285015260005b818110156107ec578581018301518582016040015282016107d0565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b9150604084013590509250925092565b6000602082840312156108cc57600080fd5b6108d58261082b565b9392505050565b600080604083850312156108ef57600080fd5b6108f88361082b565b91506109066020840161082b565b90509250929050565b600181811c9082168061092357607f821691505b60208210810361095c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220556869bd33d6741656e444b7d99e56e0c3a9495b8426ba227d4f4af169660e8264736f6c63430008150033608060405234801561001057600080fd5b50604051610b35380380610b3583398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a37806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bd565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610942565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e8585856040516102819392919061098d565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610942565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c88585856040516102819392919061098d565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109b0565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109d2565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff8082111561087557600080fd5b818801915088601f83011261088957600080fd5b81358181111561089857600080fd5b8960208285010111156108aa57600080fd5b9699959850939650602001949392505050565b6000806000606084860312156108d257600080fd5b6108db846107f9565b92506108e9602085016107f9565b9150604084013590509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526109826080830184866108f9565b979650505050505050565b8381526040602082015260006109a76040830184866108f9565b95945050505050565b6000602082840312156109c257600080fd5b8151801515811461065e57600080fd5b6000825160005b818110156109f357602081860181015185830152016109d9565b50600092019182525091905056fea2646970667358221220add5c975d5cd9c8b4afe35ea370aed6f4c4571bcc8cfe91b243cc9add705e36664736f6c63430008150033"; + "0x60a060405230608052600580546001600160a01b0319163317905534801561002657600080fd5b5061002f610149565b600554600180546001600160a01b039092166001600160a01b031992831617905560028054610123921691909117905560405161006b906101fb565b60408082526004908201819052631d195cdd60e21b606083015260806020830181905282015263151154d560e21b60a082015260c001604051809103906000f0801580156100bd573d6000803e3d6000fd5b50600480546001600160a01b0319166001600160a01b03928316179055600154604051309291909116906100f090610208565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015610123573d6000803e3d6000fd5b50600080546001600160a01b0319166001600160a01b0392909216919091179055610215565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156101995760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101f85780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b610c9f80612a3f83390190565b610b4a806136de83390190565b60805161280161023e600039600081816116ad015281816116d60152611b1c01526128016000f3fe6080604052600436106101965760003560e01c80635b112591116100e1578063ad3cb1cc1161008a578063dda79b7511610064578063dda79b7514610475578063f2fde38b14610495578063f340fa01146104b5578063f45346dc146104c857600080fd5b8063ad3cb1cc146103ec578063ae7a3a6f14610435578063b8969bd41461045557600080fd5b806381100bf0116100bb57806381100bf01461036f5780638c6f037f1461038f5780638da5cb5b146103af57600080fd5b80635b1125911461031a5780636ab90f9b1461033a578063715018a61461035a57600080fd5b80633c2f05a8116101435780635131ab591161011d5780635131ab59146102b757806352d1902d146102d757806357bec62f146102fa57600080fd5b80633c2f05a814610264578063485cc955146102845780634f1ef286146102a457600080fd5b806321e093b11161017457806321e093b11461020657806329c59b5d1461023e57806335c018db1461025157600080fd5b806310188aef1461019b5780631b8b921d146101bd5780631cff79cd146101dd575b600080fd5b3480156101a757600080fd5b506101bb6101b6366004612295565b6104e8565b005b3480156101c957600080fd5b506101bb6101d83660046122f9565b6105e9565b6101f06101eb3660046122f9565b61063b565b6040516101fd91906123ba565b60405180910390f35b34801561021257600080fd5b50600354610226906001600160a01b031681565b6040516001600160a01b0390911681526020016101fd565b6101bb61024c3660046122f9565b6106e0565b6101bb61025f3660046122f9565b610805565b34801561027057600080fd5b50600454610226906001600160a01b031681565b34801561029057600080fd5b506101bb61029f3660046123cd565b61099d565b6101bb6102b236600461242f565b610bca565b3480156102c357600080fd5b506101bb6102d2366004612536565b610be9565b3480156102e357600080fd5b506102ec610ef0565b6040519081526020016101fd565b34801561030657600080fd5b50600254610226906001600160a01b031681565b34801561032657600080fd5b50600154610226906001600160a01b031681565b34801561034657600080fd5b506101bb6103553660046125a5565b610f1f565b34801561036657600080fd5b506101bb611050565b34801561037b57600080fd5b50600554610226906001600160a01b031681565b34801561039b57600080fd5b506101bb6103aa3660046125ff565b611064565b3480156103bb57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610226565b3480156103f857600080fd5b506101f06040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b34801561044157600080fd5b506101bb610450366004612295565b611101565b34801561046157600080fd5b506101bb610470366004612536565b611202565b34801561048157600080fd5b50600054610226906001600160a01b031681565b3480156104a157600080fd5b506101bb6104b0366004612295565b6113a6565b6101bb6104c3366004612295565b611402565b3480156104d457600080fd5b506101bb6104e3366004612651565b611527565b6001546001600160a01b0316331461052c576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b03161561056f576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0381166105af576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde3848460405161062e9291906126d6565b60405180910390a3505050565b6001546060906001600160a01b03163314610682576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061068f8585856115d2565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f3486866040516106ce939291906126f2565b60405180910390a290505b9392505050565b3460000361071a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114610767576040519150601f19603f3d011682016040523d82523d6000602084013e61076c565b606091505b50909150508015156000036107ad576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a434600087876040516107f7949392919061270c565b60405180910390a350505050565b6001546001600160a01b03163314610849576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610897576040519150601f19603f3d011682016040523d82523d6000602084013e61089c565b606091505b5091509150816108d8576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061091f90879087906004016126d6565b600060405180830381600087803b15801561093957600080fd5b505af115801561094d573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161098e939291906126f2565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109e85750825b905060008267ffffffffffffffff166001148015610a055750303b155b905081158015610a13575080155b15610a4a576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610aab5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610ac857506001600160a01b038616155b15610aff576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b0833611679565b610b1061168a565b610b18611692565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610bc15784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610bd26116a2565b610bdb82611772565b610be5828261177a565b5050565b610bf161189e565b6000546001600160a01b03163314801590610c1757506002546001600160a01b03163314155b15610c4e576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c88576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c92858561191f565b610cc8576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610d30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d549190612735565b610d8a576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d978584846115d2565b9050610da3868661191f565b610dd9576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610e39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e5d9190612757565b90508015610e6f57610e6f87826119af565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610eb6939291906126f2565b60405180910390a35050610ee960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610efa611b11565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600480546040517f40c10f190000000000000000000000000000000000000000000000000000000081523092810192909252602482018590526001600160a01b0316906340c10f1990604401600060405180830381600087803b158015610f8557600080fd5b505af1158015610f99573d6000803e3d6000fd5b5050600454610fb792506001600160a01b0316905085858585610be9565b600480546040517f70a0823100000000000000000000000000000000000000000000000000000000815230928101929092526001600160a01b0316906370a0823190602401602060405180830381865afa158015611019573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103d9190612757565b1561104a5761104a612770565b50505050565b611058611b73565b6110626000611be7565b565b8360000361109e576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110a9338486611c70565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4868686866040516110f2949392919061270c565b60405180910390a35050505050565b6001546001600160a01b03163314611145576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615611188576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0381166111c8576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b61120a61189e565b6000546001600160a01b0316331480159061123057506002546001600160a01b03163314155b15611267576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036112a1576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112b56001600160a01b0386168585611dbb565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b5906112fc90859085906004016126d6565b600060405180830381600087803b15801561131657600080fd5b505af115801561132a573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda7858585604051611375939291906126f2565b60405180910390a3610ee960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6113ae611b73565b6001600160a01b0381166113f6576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6113ff81611be7565b50565b3460000361143c576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114611489576040519150601f19603f3d011682016040523d82523d6000602084013e61148e565b606091505b50909150508015156000036114cf576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b81600003611561576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61156c338284611c70565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4848460405161062e9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b03163486866040516115f292919061279f565b60006040518083038185875af1925050503d806000811461162f576040519150601f19603f3d011682016040523d82523d6000602084013e611634565b606091505b509150915081611670576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b611681611e2f565b6113ff81611e96565b611062611e2f565b61169a611e2f565b611062611e9e565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061173b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661172f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15611062576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ff611b73565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156117f2575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526117ef91810190612757565b60015b611833576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024016113ed565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461188f576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016113ed565b6118998383611ea6565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611919576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af115801561198b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d99190612735565b6003546001600160a01b0390811690831603611ad1576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611a31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a559190612735565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611ab557600080fd5b505af1158015611ac9573d6000803e3d6000fd5b505050505050565b600054610be5906001600160a01b03848116911683611dbb565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611062576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33611ba57f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614611062576040517f118cdaa70000000000000000000000000000000000000000000000000000000081523360048201526024016113ed565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611d9f57611c9b6001600160a01b038316843084611efc565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611d07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2b9190612735565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611d8b57600080fd5b505af1158015610bc1573d6000803e3d6000fd5b600054611899906001600160a01b038481169186911684611efc565b6040516001600160a01b0383811660248301526044820183905261189991859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611f35565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611062576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ae611e2f565b611aeb611e2f565b611eaf82611fb1565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611ef4576118998282612059565b610be56120c6565b6040516001600160a01b03848116602483015283811660448301526064820183905261104a9186918216906323b872dd90608401611de8565b6000611f4a6001600160a01b038416836120fe565b90508051600014158015611f6f575080806020019051810190611f6d9190612735565b155b15611899576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016113ed565b806001600160a01b03163b600003612000576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016113ed565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161207691906127af565b600060405180830381855af49150503d80600081146120b1576040519150601f19603f3d011682016040523d82523d6000602084013e6120b6565b606091505b509150915061167085838361210c565b3415611062576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60606106d983836000612181565b6060826121215761211c82612237565b6106d9565b815115801561213857506001600160a01b0384163b155b1561217a576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016113ed565b50806106d9565b6060814710156121bf576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016113ed565b600080856001600160a01b031684866040516121db91906127af565b60006040518083038185875af1925050503d8060008114612218576040519150601f19603f3d011682016040523d82523d6000602084013e61221d565b606091505b509150915061222d86838361210c565b9695505050505050565b8051156122475780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b038116811461229057600080fd5b919050565b6000602082840312156122a757600080fd5b6106d982612279565b60008083601f8401126122c257600080fd5b50813567ffffffffffffffff8111156122da57600080fd5b6020830191508360208285010111156122f257600080fd5b9250929050565b60008060006040848603121561230e57600080fd5b61231784612279565b9250602084013567ffffffffffffffff81111561233357600080fd5b61233f868287016122b0565b9497909650939450505050565b60005b8381101561236757818101518382015260200161234f565b50506000910152565b6000815180845261238881602086016020860161234c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006106d96020830184612370565b600080604083850312156123e057600080fd5b6123e983612279565b91506123f760208401612279565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561244257600080fd5b61244b83612279565b9150602083013567ffffffffffffffff81111561246757600080fd5b8301601f8101851361247857600080fd5b803567ffffffffffffffff81111561249257612492612400565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156124fe576124fe612400565b60405281815282820160200187101561251657600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008060008060006080868803121561254e57600080fd5b61255786612279565b945061256560208701612279565b935060408601359250606086013567ffffffffffffffff81111561258857600080fd5b612594888289016122b0565b969995985093965092949392505050565b600080600080606085870312156125bb57600080fd5b6125c485612279565b935060208501359250604085013567ffffffffffffffff8111156125e757600080fd5b6125f3878288016122b0565b95989497509550505050565b60008060008060006080868803121561261757600080fd5b61262086612279565b94506020860135935061263560408701612279565b9250606086013567ffffffffffffffff81111561258857600080fd5b60008060006060848603121561266657600080fd5b61266f84612279565b92506020840135915061268460408501612279565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006126ea60208301848661268d565b949350505050565b83815260406020820152600061167060408301848661268d565b8481526001600160a01b038416602082015260606040820152600061222d60608301848661268d565b60006020828403121561274757600080fd5b815180151581146106d957600080fd5b60006020828403121561276957600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b8183823760009101908152919050565b600082516127c181846020870161234c565b919091019291505056fea26469706673582212208320883bd4bfae2ca3d75ca12c286d744989c1c031265ae8356454d2eac5070964736f6c634300081a0033608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a0033608060405234801561001057600080fd5b50604051610b4a380380610b4a83398101604081905261002f916100bc565b60016000556001600160a01b038216158061005157506001600160a01b038116155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100ef565b80516001600160a01b03811681146100b757600080fd5b919050565b600080604083850312156100cf57600080fd5b6100d8836100a0565b91506100e6602084016100a0565b90509250929050565b610a4c806100fe6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635b112591116100505780635b112591146100ca578063c8a02362146100ea578063d9caed12146100fd57600080fd5b8063116191b61461006c57806321fc65f2146100b5575b600080fd5b60015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100c86100c3366004610822565b610110565b005b60025461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b6100c86100f8366004610822565b61029a565b6100c861010b3660046108bf565b61040b565b6101186104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610169576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546101909073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690635131ab59906101ee9088908890889088908890600401610945565b600060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f85b5be9cf454e05e0bddf49315178102227c312078eefa3c00294fb4d912ae4e858585604051610281939291906109a2565b60405180910390a36102936001600055565b5050505050565b6102a26104fb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102f3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015461031a9073ffffffffffffffffffffffffffffffffffffffff87811691168561053e565b6001546040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b8969bd4906103789088908890889088908890600401610945565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fb9d4efa96044e5f5e03e696fa9ae2ff66911cc27e8a637c3627c75bc5b2241c8858585604051610281939291906109a2565b6104136104fb565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61048573ffffffffffffffffffffffffffffffffffffffff8416838361053e565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb836040516104e491815260200190565b60405180910390a36104f66001600055565b505050565b600260005403610537576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104f6918591906000906105d790841683610650565b905080516000141580156105fc5750808060200190518101906105fa91906109c5565b155b156104f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b606061065e83836000610665565b9392505050565b6060814710156106a3576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610647565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516106cc91906109e7565b60006040518083038185875af1925050503d8060008114610709576040519150601f19603f3d011682016040523d82523d6000602084013e61070e565b606091505b509150915061071e868383610728565b9695505050505050565b60608261073d57610738826107b7565b61065e565b8151158015610761575073ffffffffffffffffffffffffffffffffffffffff84163b155b156107b0576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610647565b508061065e565b8051156107c75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461081d57600080fd5b919050565b60008060008060006080868803121561083a57600080fd5b610843866107f9565b9450610851602087016107f9565b935060408601359250606086013567ffffffffffffffff81111561087457600080fd5b8601601f8101881361088557600080fd5b803567ffffffffffffffff81111561089c57600080fd5b8860208284010111156108ae57600080fd5b959894975092955050506020019190565b6000806000606084860312156108d457600080fd5b6108dd846107f9565b92506108eb602085016107f9565b929592945050506040919091013590565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff851660208201528360408201526080606082015260006109976080830184866108fc565b979650505050505050565b8381526040602082015260006109bc6040830184866108fc565b95945050505050565b6000602082840312156109d757600080fd5b8151801515811461065e57600080fd5b6000825160005b81811015610a0857602081860181015185830152016109ee565b50600092019182525091905056fea264697066735822122041336b1568f49be1aa3dcd208e804b373772741e9b7e1726a8869e99fced60c764736f6c634300081a0033"; type GatewayEVMEchidnaTestConstructorParams = | [signer?: Signer] diff --git a/v2/typechain-types/factories/GatewayEVMUpgradeTest__factory.ts b/v2/typechain-types/factories/GatewayEVMUpgradeTest__factory.ts index f66492cb..041b83fc 100644 --- a/v2/typechain-types/factories/GatewayEVMUpgradeTest__factory.ts +++ b/v2/typechain-types/factories/GatewayEVMUpgradeTest__factory.ts @@ -785,7 +785,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a06040523060805234801561001457600080fd5b5060805161251d61003e600039600081816114730152818161149c01526118e2015261251d6000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a610195366004612061565b610467565b005b3480156101a857600080fd5b5061019a6101b73660046120c5565b610524565b6101cf6101ca3660046120c5565b610576565b6040516101dc9190612186565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b3660046120c5565b61061b565b61019a61023e3660046120c5565b610740565b34801561024f57600080fd5b5061019a61025e366004612199565b6108d8565b61019a6102713660046121fb565b610b05565b34801561028257600080fd5b5061019a6102913660046122db565b610b24565b3480156102a257600080fd5b506102ab610e2b565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e5a565b34801561031a57600080fd5b5061019a61032936600461234a565b610e6e565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf366004612061565b610f0b565b3480156103e057600080fd5b5061019a6103ef3660046122db565b610fc8565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f366004612061565b61116c565b61019a610442366004612061565b6111c8565b34801561045357600080fd5b5061019a61046236600461239c565b6112ed565b6002546001600160a01b0316156104aa576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0381166104ea576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde38484604051610569929190612421565b60405180910390a3505050565b6001546060906001600160a01b031633146105bd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006105ca858585611398565b9050846001600160a01b03167f373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e85463486866040516106099392919061243d565b60405180910390a290505b9392505050565b34600003610655576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106a2576040519150601f19603f3d011682016040523d82523d6000602084013e6106a7565b606091505b50909150508015156000036106e8576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a434600087876040516107329493929190612457565b60405180910390a350505050565b6001546001600160a01b03163314610784576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d80600081146107d2576040519150601f19603f3d011682016040523d82523d6000602084013e6107d7565b606091505b509150915081610813576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061085a9087908790600401612421565b600060405180830381600087803b15801561087457600080fd5b505af1158015610888573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c3486866040516108c99392919061243d565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109235750825b905060008267ffffffffffffffff1660011480156109405750303b155b90508115801561094e575080155b15610985576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156109e65784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a0357506001600160a01b038616155b15610a3a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a433361143f565b610a4b611450565b610a53611458565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610afc5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b0d611468565b610b1682611538565b610b208282611540565b5050565b610b2c611664565b6000546001600160a01b03163314801590610b5257506002546001600160a01b03163314155b15610b89576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610bc3576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bcd85856116e5565b610c03576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610c6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8f9190612480565b610cc5576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610cd2858484611398565b9050610cde86866116e5565b610d14576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610d74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9891906124a2565b90508015610daa57610daa8782611775565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610df19392919061243d565b60405180910390a35050610e2460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e356118d7565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610e62611939565b610e6c60006119ad565b565b83600003610ea8576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610eb3338486611a36565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610efc9493929190612457565b60405180910390a35050505050565b6000546001600160a01b031615610f4e576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116610f8e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b610fd0611664565b6000546001600160a01b03163314801590610ff657506002546001600160a01b03163314155b1561102d576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003611067576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61107b6001600160a01b0386168585611b81565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b5906110c29085908590600401612421565b600060405180830381600087803b1580156110dc57600080fd5b505af11580156110f0573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda785858560405161113b9392919061243d565b60405180910390a3610e2460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b611174611939565b6001600160a01b0381166111bc576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6111c5816119ad565b50565b34600003611202576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d806000811461124f576040519150601f19603f3d011682016040523d82523d6000602084013e611254565b606091505b5090915050801515600003611295576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b81600003611327576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611332338284611a36565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105699291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b03163486866040516113b89291906124bb565b60006040518083038185875af1925050503d80600081146113f5576040519150601f19603f3d011682016040523d82523d6000602084013e6113fa565b606091505b509150915081611436576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b611447611bf5565b6111c581611c5c565b610e6c611bf5565b611460611bf5565b610e6c611c64565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061150157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166114f57f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610e6c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111c5611939565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156115b8575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526115b5918101906124a2565b60015b6115f9576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024016111b3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611655576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016111b3565b61165f8383611c6c565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016116df576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af1158015611751573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106149190612480565b6003546001600160a01b0390811690831603611897576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af11580156117f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061181b9190612480565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561187b57600080fd5b505af115801561188f573d6000803e3d6000fd5b505050505050565b600054610b20906001600160a01b03848116911683611b81565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610e6c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3361196b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610e6c576040517f118cdaa70000000000000000000000000000000000000000000000000000000081523360048201526024016111b3565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611b6557611a616001600160a01b038316843084611cc2565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611acd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af19190612480565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611b5157600080fd5b505af1158015610afc573d6000803e3d6000fd5b60005461165f906001600160a01b038481169186911684611cc2565b6040516001600160a01b0383811660248301526044820183905261165f91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d01565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610e6c576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611174611bf5565b6118b1611bf5565b611c7582611d7d565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611cba5761165f8282611e25565b610b20611e92565b6040516001600160a01b038481166024830152838116604483015260648201839052611cfb9186918216906323b872dd90608401611bae565b50505050565b6000611d166001600160a01b03841683611eca565b90508051600014158015611d3b575080806020019051810190611d399190612480565b155b1561165f576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016111b3565b806001600160a01b03163b600003611dcc576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016111b3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611e4291906124cb565b600060405180830381855af49150503d8060008114611e7d576040519150601f19603f3d011682016040523d82523d6000602084013e611e82565b606091505b5091509150611436858383611ed8565b3415610e6c576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061061483836000611f4d565b606082611eed57611ee882612003565b610614565b8151158015611f0457506001600160a01b0384163b155b15611f46576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016111b3565b5080610614565b606081471015611f8b576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016111b3565b600080856001600160a01b03168486604051611fa791906124cb565b60006040518083038185875af1925050503d8060008114611fe4576040519150601f19603f3d011682016040523d82523d6000602084013e611fe9565b606091505b5091509150611ff9868383611ed8565b9695505050505050565b8051156120135780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b038116811461205c57600080fd5b919050565b60006020828403121561207357600080fd5b61061482612045565b60008083601f84011261208e57600080fd5b50813567ffffffffffffffff8111156120a657600080fd5b6020830191508360208285010111156120be57600080fd5b9250929050565b6000806000604084860312156120da57600080fd5b6120e384612045565b9250602084013567ffffffffffffffff8111156120ff57600080fd5b61210b8682870161207c565b9497909650939450505050565b60005b8381101561213357818101518382015260200161211b565b50506000910152565b60008151808452612154816020860160208601612118565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610614602083018461213c565b600080604083850312156121ac57600080fd5b6121b583612045565b91506121c360208401612045565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561220e57600080fd5b61221783612045565b9150602083013567ffffffffffffffff8082111561223457600080fd5b818501915085601f83011261224857600080fd5b81358181111561225a5761225a6121cc565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156122a0576122a06121cc565b816040528281528860208487010111156122b957600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000806000806000608086880312156122f357600080fd5b6122fc86612045565b945061230a60208701612045565b935060408601359250606086013567ffffffffffffffff81111561232d57600080fd5b6123398882890161207c565b969995985093965092949392505050565b60008060008060006080868803121561236257600080fd5b61236b86612045565b94506020860135935061238060408701612045565b9250606086013567ffffffffffffffff81111561232d57600080fd5b6000806000606084860312156123b157600080fd5b6123ba84612045565b9250602084013591506123cf60408501612045565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006124356020830184866123d8565b949350505050565b8381526040602082015260006114366040830184866123d8565b8481526001600160a01b0384166020820152606060408201526000611ff96060830184866123d8565b60006020828403121561249257600080fd5b8151801515811461061457600080fd5b6000602082840312156124b457600080fd5b5051919050565b8183823760009101908152919050565b600082516124dd818460208701612118565b919091019291505056fea2646970667358221220382399a935ec4c09e9c58a6b1ebef2472bb7d59558afed45c2caf83933a5ff4064736f6c63430008150033"; + "0x60a060405230608052348015601357600080fd5b5060805161254461003d600039600081816114730152818161149c01526118e201526125446000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a610195366004612061565b610467565b005b3480156101a857600080fd5b5061019a6101b73660046120c5565b610524565b6101cf6101ca3660046120c5565b610576565b6040516101dc9190612186565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b3660046120c5565b61061b565b61019a61023e3660046120c5565b610740565b34801561024f57600080fd5b5061019a61025e366004612199565b6108d8565b61019a6102713660046121fb565b610b05565b34801561028257600080fd5b5061019a610291366004612302565b610b24565b3480156102a257600080fd5b506102ab610e2b565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e5a565b34801561031a57600080fd5b5061019a610329366004612371565b610e6e565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf366004612061565b610f0b565b3480156103e057600080fd5b5061019a6103ef366004612302565b610fc8565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f366004612061565b61116c565b61019a610442366004612061565b6111c8565b34801561045357600080fd5b5061019a6104623660046123c3565b6112ed565b6002546001600160a01b0316156104aa576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0381166104ea576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde38484604051610569929190612448565b60405180910390a3505050565b6001546060906001600160a01b031633146105bd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006105ca858585611398565b9050846001600160a01b03167f373df382b9c587826f3de13f16d67f8d99f28ee947fc0924c6ef2d6d2c7e854634868660405161060993929190612464565b60405180910390a290505b9392505050565b34600003610655576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106a2576040519150601f19603f3d011682016040523d82523d6000602084013e6106a7565b606091505b50909150508015156000036106e8576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a43460008787604051610732949392919061247e565b60405180910390a350505050565b6001546001600160a01b03163314610784576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d80600081146107d2576040519150601f19603f3d011682016040523d82523d6000602084013e6107d7565b606091505b509150915081610813576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061085a9087908790600401612448565b600060405180830381600087803b15801561087457600080fd5b505af1158015610888573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c3486866040516108c993929190612464565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109235750825b905060008267ffffffffffffffff1660011480156109405750303b155b90508115801561094e575080155b15610985576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156109e65784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a0357506001600160a01b038616155b15610a3a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a433361143f565b610a4b611450565b610a53611458565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610afc5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b0d611468565b610b1682611538565b610b208282611540565b5050565b610b2c611664565b6000546001600160a01b03163314801590610b5257506002546001600160a01b03163314155b15610b89576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610bc3576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bcd85856116e5565b610c03576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610c6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8f91906124a7565b610cc5576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610cd2858484611398565b9050610cde86866116e5565b610d14576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610d74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9891906124c9565b90508015610daa57610daa8782611775565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610df193929190612464565b60405180910390a35050610e2460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e356118d7565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610e62611939565b610e6c60006119ad565b565b83600003610ea8576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610eb3338486611a36565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610efc949392919061247e565b60405180910390a35050505050565b6000546001600160a01b031615610f4e576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116610f8e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b610fd0611664565b6000546001600160a01b03163314801590610ff657506002546001600160a01b03163314155b1561102d576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003611067576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61107b6001600160a01b0386168585611b81565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b5906110c29085908590600401612448565b600060405180830381600087803b1580156110dc57600080fd5b505af11580156110f0573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda785858560405161113b93929190612464565b60405180910390a3610e2460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b611174611939565b6001600160a01b0381166111bc576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6111c5816119ad565b50565b34600003611202576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d806000811461124f576040519150601f19603f3d011682016040523d82523d6000602084013e611254565b606091505b5090915050801515600003611295576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b81600003611327576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611332338284611a36565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105699291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b03163486866040516113b89291906124e2565b60006040518083038185875af1925050503d80600081146113f5576040519150601f19603f3d011682016040523d82523d6000602084013e6113fa565b606091505b509150915081611436576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b611447611bf5565b6111c581611c5c565b610e6c611bf5565b611460611bf5565b610e6c611c64565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061150157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166114f57f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610e6c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111c5611939565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156115b8575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526115b5918101906124c9565b60015b6115f9576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024016111b3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611655576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016111b3565b61165f8383611c6c565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016116df576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af1158015611751573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061491906124a7565b6003546001600160a01b0390811690831603611897576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af11580156117f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061181b91906124a7565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561187b57600080fd5b505af115801561188f573d6000803e3d6000fd5b505050505050565b600054610b20906001600160a01b03848116911683611b81565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610e6c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3361196b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610e6c576040517f118cdaa70000000000000000000000000000000000000000000000000000000081523360048201526024016111b3565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611b6557611a616001600160a01b038316843084611cc2565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611acd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af191906124a7565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611b5157600080fd5b505af1158015610afc573d6000803e3d6000fd5b60005461165f906001600160a01b038481169186911684611cc2565b6040516001600160a01b0383811660248301526044820183905261165f91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d01565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610e6c576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611174611bf5565b6118b1611bf5565b611c7582611d7d565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611cba5761165f8282611e25565b610b20611e92565b6040516001600160a01b038481166024830152838116604483015260648201839052611cfb9186918216906323b872dd90608401611bae565b50505050565b6000611d166001600160a01b03841683611eca565b90508051600014158015611d3b575080806020019051810190611d3991906124a7565b155b1561165f576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016111b3565b806001600160a01b03163b600003611dcc576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016111b3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611e4291906124f2565b600060405180830381855af49150503d8060008114611e7d576040519150601f19603f3d011682016040523d82523d6000602084013e611e82565b606091505b5091509150611436858383611ed8565b3415610e6c576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061061483836000611f4d565b606082611eed57611ee882612003565b610614565b8151158015611f0457506001600160a01b0384163b155b15611f46576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016111b3565b5080610614565b606081471015611f8b576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016111b3565b600080856001600160a01b03168486604051611fa791906124f2565b60006040518083038185875af1925050503d8060008114611fe4576040519150601f19603f3d011682016040523d82523d6000602084013e611fe9565b606091505b5091509150611ff9868383611ed8565b9695505050505050565b8051156120135780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b038116811461205c57600080fd5b919050565b60006020828403121561207357600080fd5b61061482612045565b60008083601f84011261208e57600080fd5b50813567ffffffffffffffff8111156120a657600080fd5b6020830191508360208285010111156120be57600080fd5b9250929050565b6000806000604084860312156120da57600080fd5b6120e384612045565b9250602084013567ffffffffffffffff8111156120ff57600080fd5b61210b8682870161207c565b9497909650939450505050565b60005b8381101561213357818101518382015260200161211b565b50506000910152565b60008151808452612154816020860160208601612118565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610614602083018461213c565b600080604083850312156121ac57600080fd5b6121b583612045565b91506121c360208401612045565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561220e57600080fd5b61221783612045565b9150602083013567ffffffffffffffff81111561223357600080fd5b8301601f8101851361224457600080fd5b803567ffffffffffffffff81111561225e5761225e6121cc565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156122ca576122ca6121cc565b6040528181528282016020018710156122e257600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008060008060006080868803121561231a57600080fd5b61232386612045565b945061233160208701612045565b935060408601359250606086013567ffffffffffffffff81111561235457600080fd5b6123608882890161207c565b969995985093965092949392505050565b60008060008060006080868803121561238957600080fd5b61239286612045565b9450602086013593506123a760408701612045565b9250606086013567ffffffffffffffff81111561235457600080fd5b6000806000606084860312156123d857600080fd5b6123e184612045565b9250602084013591506123f660408501612045565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60208152600061245c6020830184866123ff565b949350505050565b8381526040602082015260006114366040830184866123ff565b8481526001600160a01b0384166020820152606060408201526000611ff96060830184866123ff565b6000602082840312156124b957600080fd5b8151801515811461061457600080fd5b6000602082840312156124db57600080fd5b5051919050565b8183823760009101908152919050565b60008251612504818460208701612118565b919091019291505056fea2646970667358221220de349acfc8741efa6db137df12b279146aa84392e947dfc852fc83fbe89954ff64736f6c634300081a0033"; type GatewayEVMUpgradeTestConstructorParams = | [signer?: Signer] diff --git a/v2/typechain-types/factories/GatewayEVM__factory.ts b/v2/typechain-types/factories/GatewayEVM__factory.ts index d9b0f7d9..59f29d9f 100644 --- a/v2/typechain-types/factories/GatewayEVM__factory.ts +++ b/v2/typechain-types/factories/GatewayEVM__factory.ts @@ -757,7 +757,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125a562000104600039600081816114fb01528181611524015261196a01526125a56000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a6101953660046120e9565b610467565b005b3480156101a857600080fd5b5061019a6101b736600461214d565b610568565b6101cf6101ca36600461214d565b6105ba565b6040516101dc919061220e565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b36600461214d565b61065f565b61019a61023e36600461214d565b610784565b34801561024f57600080fd5b5061019a61025e366004612221565b61091c565b61019a610271366004612283565b610b49565b34801561028257600080fd5b5061019a610291366004612363565b610b68565b3480156102a257600080fd5b506102ab610e6f565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e9e565b34801561031a57600080fd5b5061019a6103293660046123d2565b610eb2565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf3660046120e9565b610f4f565b3480156103e057600080fd5b5061019a6103ef366004612363565b611050565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f3660046120e9565b6111f4565b61019a6104423660046120e9565b611250565b34801561045357600080fd5b5061019a610462366004612424565b611375565b6001546001600160a01b031633146104ab576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b0316156104ee576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661052e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516105ad9291906124a9565b60405180910390a3505050565b6001546060906001600160a01b03163314610601576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061060e858585611420565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161064d939291906124c5565b60405180910390a290505b9392505050565b34600003610699576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106e6576040519150601f19603f3d011682016040523d82523d6000602084013e6106eb565b606091505b509091505080151560000361072c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a4346000878760405161077694939291906124df565b60405180910390a350505050565b6001546001600160a01b031633146107c8576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610816576040519150601f19603f3d011682016040523d82523d6000602084013e61081b565b606091505b509150915081610857576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061089e90879087906004016124a9565b600060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161090d939291906124c5565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109675750825b905060008267ffffffffffffffff1660011480156109845750303b155b905081158015610992575080155b156109c9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610a2a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a4757506001600160a01b038616155b15610a7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a87336114c7565b610a8f6114d8565b610a976114e0565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610b405784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b516114f0565b610b5a826115c0565b610b6482826115c8565b5050565b610b706116ec565b6000546001600160a01b03163314801590610b9657506002546001600160a01b03163314155b15610bcd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c07576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c11858561176d565b610c47576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd39190612508565b610d09576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d16858484611420565b9050610d22868661176d565b610d58576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc919061252a565b90508015610dee57610dee87826117fd565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610e35939291906124c5565b60405180910390a35050610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e7961195f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610ea66119c1565b610eb06000611a35565b565b83600003610eec576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef7338486611abe565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610f4094939291906124df565b60405180910390a35050505050565b6001546001600160a01b03163314610f93576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615610fd6576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611016576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6110586116ec565b6000546001600160a01b0316331480159061107e57506002546001600160a01b03163314155b156110b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036110ef576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111036001600160a01b0386168585611c09565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b59061114a90859085906004016124a9565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516111c3939291906124c5565b60405180910390a3610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6111fc6119c1565b6001600160a01b038116611244576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61124d81611a35565b50565b3460000361128a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146112d7576040519150601f19603f3d011682016040523d82523d6000602084013e6112dc565b606091505b509091505080151560000361131d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b816000036113af576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ba338284611abe565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105ad9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b0316348686604051611440929190612543565b60006040518083038185875af1925050503d806000811461147d576040519150601f19603f3d011682016040523d82523d6000602084013e611482565b606091505b5091509150816114be576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b6114cf611c7d565b61124d81611ce4565b610eb0611c7d565b6114e8611c7d565b610eb0611cec565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061158957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661157d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124d6119c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611640575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163d9181019061252a565b60015b611681576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146116dd576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161123b565b6116e78383611cf4565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611767576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190612508565b6003546001600160a01b039081169083160361191f576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a39190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b505050505050565b600054610b64906001600160a01b03848116911683611c09565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336119f37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610eb0576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161123b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611bed57611ae96001600160a01b038316843084611d4a565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b799190612508565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611bd957600080fd5b505af1158015610b40573d6000803e3d6000fd5b6000546116e7906001600160a01b038481169186911684611d4a565b6040516001600160a01b038381166024830152604482018390526116e791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d89565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610eb0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc611c7d565b611939611c7d565b611cfd82611e05565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d42576116e78282611ead565b610b64611f1a565b6040516001600160a01b038481166024830152838116604483015260648201839052611d839186918216906323b872dd90608401611c36565b50505050565b6000611d9e6001600160a01b03841683611f52565b90508051600014158015611dc3575080806020019051810190611dc19190612508565b155b156116e7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161123b565b806001600160a01b03163b600003611e54576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611eca9190612553565b600060405180830381855af49150503d8060008114611f05576040519150601f19603f3d011682016040523d82523d6000602084013e611f0a565b606091505b50915091506114be858383611f60565b3415610eb0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061065883836000611fd5565b606082611f7557611f708261208b565b610658565b8151158015611f8c57506001600160a01b0384163b155b15611fce576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161123b565b5080610658565b606081471015612013576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161123b565b600080856001600160a01b0316848660405161202f9190612553565b60006040518083038185875af1925050503d806000811461206c576040519150601f19603f3d011682016040523d82523d6000602084013e612071565b606091505b5091509150612081868383611f60565b9695505050505050565b80511561209b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b03811681146120e457600080fd5b919050565b6000602082840312156120fb57600080fd5b610658826120cd565b60008083601f84011261211657600080fd5b50813567ffffffffffffffff81111561212e57600080fd5b60208301915083602082850101111561214657600080fd5b9250929050565b60008060006040848603121561216257600080fd5b61216b846120cd565b9250602084013567ffffffffffffffff81111561218757600080fd5b61219386828701612104565b9497909650939450505050565b60005b838110156121bb5781810151838201526020016121a3565b50506000910152565b600081518084526121dc8160208601602086016121a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061065860208301846121c4565b6000806040838503121561223457600080fd5b61223d836120cd565b915061224b602084016120cd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561229657600080fd5b61229f836120cd565b9150602083013567ffffffffffffffff808211156122bc57600080fd5b818501915085601f8301126122d057600080fd5b8135818111156122e2576122e2612254565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561232857612328612254565b8160405282815288602084870101111561234157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060008060006080868803121561237b57600080fd5b612384866120cd565b9450612392602087016120cd565b935060408601359250606086013567ffffffffffffffff8111156123b557600080fd5b6123c188828901612104565b969995985093965092949392505050565b6000806000806000608086880312156123ea57600080fd5b6123f3866120cd565b945060208601359350612408604087016120cd565b9250606086013567ffffffffffffffff8111156123b557600080fd5b60008060006060848603121561243957600080fd5b612442846120cd565b925060208401359150612457604085016120cd565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006124bd602083018486612460565b949350505050565b8381526040602082015260006114be604083018486612460565b8481526001600160a01b0384166020820152606060408201526000612081606083018486612460565b60006020828403121561251a57600080fd5b8151801515811461065857600080fd5b60006020828403121561253c57600080fd5b5051919050565b8183823760009101908152919050565b600082516125658184602087016121a0565b919091019291505056fea2646970667358221220cfb0cd8f88c89af68defecd56673162e00d93537392524753b2d72f45706700c64736f6c63430008150033"; + "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125cc6100fd600039600081816114fb01528181611524015261196a01526125cc6000f3fe6080604052600436106101755760003560e01c80635b112591116100cb578063ae7a3a6f1161007f578063f2fde38b11610059578063f2fde38b14610414578063f340fa0114610434578063f45346dc1461044757600080fd5b8063ae7a3a6f146103b4578063b8969bd4146103d4578063dda79b75146103f457600080fd5b80638c6f037f116100b05780638c6f037f1461030e5780638da5cb5b1461032e578063ad3cb1cc1461036b57600080fd5b80635b112591146102d9578063715018a6146102f957600080fd5b806335c018db1161012d5780635131ab59116101075780635131ab591461027657806352d1902d1461029657806357bec62f146102b957600080fd5b806335c018db14610230578063485cc955146102435780634f1ef2861461026357600080fd5b80631cff79cd1161015e5780631cff79cd146101bc57806321e093b1146101e557806329c59b5d1461021d57600080fd5b806310188aef1461017a5780631b8b921d1461019c575b600080fd5b34801561018657600080fd5b5061019a6101953660046120e9565b610467565b005b3480156101a857600080fd5b5061019a6101b736600461214d565b610568565b6101cf6101ca36600461214d565b6105ba565b6040516101dc919061220e565b60405180910390f35b3480156101f157600080fd5b50600354610205906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b61019a61022b36600461214d565b61065f565b61019a61023e36600461214d565b610784565b34801561024f57600080fd5b5061019a61025e366004612221565b61091c565b61019a610271366004612283565b610b49565b34801561028257600080fd5b5061019a61029136600461238a565b610b68565b3480156102a257600080fd5b506102ab610e6f565b6040519081526020016101dc565b3480156102c557600080fd5b50600254610205906001600160a01b031681565b3480156102e557600080fd5b50600154610205906001600160a01b031681565b34801561030557600080fd5b5061019a610e9e565b34801561031a57600080fd5b5061019a6103293660046123f9565b610eb2565b34801561033a57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610205565b34801561037757600080fd5b506101cf6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156103c057600080fd5b5061019a6103cf3660046120e9565b610f4f565b3480156103e057600080fd5b5061019a6103ef36600461238a565b611050565b34801561040057600080fd5b50600054610205906001600160a01b031681565b34801561042057600080fd5b5061019a61042f3660046120e9565b6111f4565b61019a6104423660046120e9565b611250565b34801561045357600080fd5b5061019a61046236600461244b565b611375565b6001546001600160a01b031633146104ab576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b0316156104ee576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661052e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b826001600160a01b0316336001600160a01b03167f2a21062ee9199c2e205622999eeb7c3da73153674f36a0acd3f74fa6af67bde384846040516105ad9291906124d0565b60405180910390a3505050565b6001546060906001600160a01b03163314610601576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061060e858585611420565b9050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f34868660405161064d939291906124ec565b60405180910390a290505b9392505050565b34600003610699576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146106e6576040519150601f19603f3d011682016040523d82523d6000602084013e6106eb565b606091505b509091505080151560000361072c576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a434600087876040516107769493929190612506565b60405180910390a350505050565b6001546001600160a01b031633146107c8576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080846001600160a01b03163460405160006040518083038185875af1925050503d8060008114610816576040519150601f19603f3d011682016040523d82523d6000602084013e61081b565b606091505b509150915081610857576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03861690638fcaa0b59061089e90879087906004016124d0565b600060405180830381600087803b1580156108b857600080fd5b505af11580156108cc573d6000803e3d6000fd5b50505050846001600160a01b03167fd5d7616b1678354a0dea9d7e57e6a090bff5babe9f8d6381fdbad16e89ba311c34868660405161090d939291906124ec565b60405180910390a25050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109675750825b905060008267ffffffffffffffff1660011480156109845750303b155b905081158015610992575080155b156109c9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610a2a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b0387161580610a4757506001600160a01b038616155b15610a7e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a87336114c7565b610a8f6114d8565b610a976114e0565b600180546001600160a01b03808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560038054928916929091169190911790558315610b405784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610b516114f0565b610b5a826115c0565b610b6482826115c8565b5050565b610b706116ec565b6000546001600160a01b03163314801590610b9657506002546001600160a01b03163314155b15610bcd576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003610c07576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c11858561176d565b610c47576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820185905286169063095ea7b3906044016020604051808303816000875af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd3919061252f565b610d09576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d16858484611420565b9050610d22868661176d565b610d58576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc9190612551565b90508015610dee57610dee87826117fd565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610e35939291906124ec565b60405180910390a35050610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b6000610e7961195f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610ea66119c1565b610eb06000611a35565b565b83600003610eec576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ef7338486611abe565b846001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a486868686604051610f409493929190612506565b60405180910390a35050505050565b6001546001600160a01b03163314610f93576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615610fd6576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611016576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6110586116ec565b6000546001600160a01b0316331480159061107e57506002546001600160a01b03163314155b156110b5576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036110ef576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111036001600160a01b0386168585611c09565b6040517f8fcaa0b50000000000000000000000000000000000000000000000000000000081526001600160a01b03851690638fcaa0b59061114a90859085906004016124d0565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b03167f723fc7be2448075379e4fdf1e6bf5fead954d2668d2da05dcb44ccfec4beeda78585856040516111c3939291906124ec565b60405180910390a3610e6860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6111fc6119c1565b6001600160a01b038116611244576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61124d81611a35565b50565b3460000361128a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d80600081146112d7576040519150601f19603f3d011682016040523d82523d6000602084013e6112dc565b606091505b509091505080151560000361131d576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051348152600060208201819052606082840181905282015290516001600160a01b0384169133917f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a49181900360800190a35050565b816000036113af576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113ba338284611abe565b826001600160a01b0316336001600160a01b03167f2103daedac6c1eee9e5bfbd02064d751c9ec3c03fb9bc3e4f94ca41afa38c1a484846040516105ad9291909182526001600160a01b0316602082015260606040820181905260009082015260800190565b6060600080856001600160a01b031634868660405161144092919061256a565b60006040518083038185875af1925050503d806000811461147d576040519150601f19603f3d011682016040523d82523d6000602084013e611482565b606091505b5091509150816114be576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b95945050505050565b6114cf611c7d565b61124d81611ce4565b610eb0611c7d565b6114e8611c7d565b610eb0611cec565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061158957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661157d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124d6119c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611640575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163d91810190612551565b60015b611681576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146116dd576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161123b565b6116e78383611cf4565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611767576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610658919061252f565b6003546001600160a01b039081169083160361191f576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af115801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a3919061252f565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b505050505050565b600054610b64906001600160a01b03848116911683611c09565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336119f37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610eb0576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161123b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546001600160a01b0390811690831603611bed57611ae96001600160a01b038316843084611d4a565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b79919061252f565b506002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611bd957600080fd5b505af1158015610b40573d6000803e3d6000fd5b6000546116e7906001600160a01b038481169186911684611d4a565b6040516001600160a01b038381166024830152604482018390526116e791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d89565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610eb0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc611c7d565b611939611c7d565b611cfd82611e05565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d42576116e78282611ead565b610b64611f1a565b6040516001600160a01b038481166024830152838116604483015260648201839052611d839186918216906323b872dd90608401611c36565b50505050565b6000611d9e6001600160a01b03841683611f52565b90508051600014158015611dc3575080806020019051810190611dc1919061252f565b155b156116e7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161123b565b806001600160a01b03163b600003611e54576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161123b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611eca919061257a565b600060405180830381855af49150503d8060008114611f05576040519150601f19603f3d011682016040523d82523d6000602084013e611f0a565b606091505b50915091506114be858383611f60565b3415610eb0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061065883836000611fd5565b606082611f7557611f708261208b565b610658565b8151158015611f8c57506001600160a01b0384163b155b15611fce576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161123b565b5080610658565b606081471015612013576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161123b565b600080856001600160a01b0316848660405161202f919061257a565b60006040518083038185875af1925050503d806000811461206c576040519150601f19603f3d011682016040523d82523d6000602084013e612071565b606091505b5091509150612081868383611f60565b9695505050505050565b80511561209b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b03811681146120e457600080fd5b919050565b6000602082840312156120fb57600080fd5b610658826120cd565b60008083601f84011261211657600080fd5b50813567ffffffffffffffff81111561212e57600080fd5b60208301915083602082850101111561214657600080fd5b9250929050565b60008060006040848603121561216257600080fd5b61216b846120cd565b9250602084013567ffffffffffffffff81111561218757600080fd5b61219386828701612104565b9497909650939450505050565b60005b838110156121bb5781810151838201526020016121a3565b50506000910152565b600081518084526121dc8160208601602086016121a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061065860208301846121c4565b6000806040838503121561223457600080fd5b61223d836120cd565b915061224b602084016120cd565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561229657600080fd5b61229f836120cd565b9150602083013567ffffffffffffffff8111156122bb57600080fd5b8301601f810185136122cc57600080fd5b803567ffffffffffffffff8111156122e6576122e6612254565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561235257612352612254565b60405281815282820160200187101561236a57600080fd5b816020840160208301376000602083830101528093505050509250929050565b6000806000806000608086880312156123a257600080fd5b6123ab866120cd565b94506123b9602087016120cd565b935060408601359250606086013567ffffffffffffffff8111156123dc57600080fd5b6123e888828901612104565b969995985093965092949392505050565b60008060008060006080868803121561241157600080fd5b61241a866120cd565b94506020860135935061242f604087016120cd565b9250606086013567ffffffffffffffff8111156123dc57600080fd5b60008060006060848603121561246057600080fd5b612469846120cd565b92506020840135915061247e604085016120cd565b90509250925092565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006124e4602083018486612487565b949350505050565b8381526040602082015260006114be604083018486612487565b8481526001600160a01b0384166020820152606060408201526000612081606083018486612487565b60006020828403121561254157600080fd5b8151801515811461065857600080fd5b60006020828403121561256357600080fd5b5051919050565b8183823760009101908152919050565b6000825161258c8184602087016121a0565b919091019291505056fea2646970667358221220e61dbe900f49590d1bcc0dbd88158d680a474b3ee3da9c5f5d8252f09253a6d964736f6c634300081a0033"; type GatewayEVMConstructorParams = | [signer?: Signer] diff --git a/v2/typechain-types/factories/GatewayZEVM__factory.ts b/v2/typechain-types/factories/GatewayZEVM__factory.ts index 018389e4..d1a8225b 100644 --- a/v2/typechain-types/factories/GatewayZEVM__factory.ts +++ b/v2/typechain-types/factories/GatewayZEVM__factory.ts @@ -762,7 +762,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161255462000104600039600081816117c7015281816117f001526119a001526125546000f3fe6080604052600436106101635760003560e01c80635af65967116100c0578063bcf7f32b11610074578063c4d66de811610059578063c4d66de814610458578063f2fde38b14610478578063f45346dc1461049857600080fd5b8063bcf7f32b14610418578063c39aca371461043857600080fd5b80637993c1e0116100a55780637993c1e0146103655780638da5cb5b14610385578063ad3cb1cc146103c257600080fd5b80635af6596714610330578063715018a61461035057600080fd5b80632e1a7d4d116101175780633ce4a5bc116100fc5780633ce4a5bc146102d25780634f1ef286146102fa57806352d1902d1461030d57600080fd5b80632e1a7d4d14610292578063309f5004146102b257600080fd5b806321501a951161014857806321501a951461021557806321e093b114610235578063267e75a01461027257600080fd5b80630ac7c44c146101d5578063135390f9146101f557600080fd5b366101d0576000546001600160a01b0316331480159061019757503373735b14bb79463307aacbed86daf3322b1e6226ab14155b156101ce576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b3480156101e157600080fd5b506101ce6101f0366004611eff565b6104b8565b34801561020157600080fd5b506101ce610210366004611f7d565b610533565b34801561022157600080fd5b506101ce610230366004611ff0565b61061d565b34801561024157600080fd5b50600054610255906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561027e57600080fd5b506101ce61028d366004612079565b610768565b34801561029e57600080fd5b506101ce6102ad3660046120b8565b610813565b3480156102be57600080fd5b506101ce6102cd3660046120d1565b6108ee565b3480156102de57600080fd5b5061025573735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce61030836600461216e565b6109c2565b34801561031957600080fd5b506103226109e1565b604051908152602001610269565b34801561033c57600080fd5b506101ce61034b3660046120d1565b610a10565b34801561035c57600080fd5b506101ce610ba1565b34801561037157600080fd5b506101ce6103803660046121be565b610bb5565b34801561039157600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610255565b3480156103ce57600080fd5b5061040b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b604051610269919061224a565b34801561042457600080fd5b506101ce6104333660046120d1565b610caa565b34801561044457600080fd5b506101ce6104533660046120d1565b610d44565b34801561046457600080fd5b506101ce61047336600461225d565b610ed5565b34801561048457600080fd5b506101ce61049336600461225d565b6110d8565b3480156104a457600080fd5b506101ce6104b336600461227a565b611131565b6104c061127a565b336001600160a01b03167f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f8484846040516104fd939291906122dc565b60405180910390a261052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b61053b61127a565b60006105478383611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771683868685876001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105da919061230c565b6040516105eb959493929190612325565b60405180910390a25061052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461066a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061069d57506001600160a01b03831630145b156106d4576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106de84846115ee565b6000546040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169263de43156e9261072f928a921690899088908890600401612416565b600060405180830381600087803b15801561074957600080fd5b505af115801561075d573d6000803e3d6000fd5b505050505050505050565b61077061127a565b61078e8373735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526104fd9291889060009081908a908a9061245d565b61081b61127a565b6108398173735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526108ba929186906000908190612325565b60405180910390a26108eb60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461093b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b600060405180830381600087803b1580156109a257600080fd5b505af11580156109b6573d6000803e3d6000fd5b50505050505050505050565b6109ca6117bc565b6109d38261188c565b6109dd8282611894565b5050565b60006109eb611995565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a5d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610a9057506001600160a01b03831630145b15610ac7576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5391906124b2565b506040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612416565b610ba96119f7565b610bb36000611a6b565b565b610bbd61127a565b6000610bc98585611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771685888885896001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5c919061230c565b8989604051610c71979695949392919061245d565b60405180910390a250610ca360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cf7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d91576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610dc457506001600160a01b03831630145b15610dfb576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610e63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8791906124b2565b506040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612416565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610f205750825b905060008267ffffffffffffffff166001148015610f3d5750303b155b905081158015610f4b575080155b15610f82576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fe35784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038616611023576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61102c33611af4565b611034611b05565b61103c611b0d565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03881617905583156110d05784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6110e06119f7565b6001600160a01b038116611128576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6108eb81611a6b565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461117e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab14806111b157506001600160a01b03811630145b156111e8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af1158015611250573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127491906124b2565b50505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016112f5576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000806000836001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa158015611363573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138791906124d4565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af115801561140c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143091906124b2565b611466576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526001600160a01b038516906323b872dd906064016020604051808303816000875af11580156114d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f691906124b2565b61152c576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b038516906342966c68906024016020604051808303816000875af115801561158c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b091906124b2565b6115e6576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801561165e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168291906124b2565b6116b8576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561171757600080fd5b505af115801561172b573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d806000811461177c576040519150601f19603f3d011682016040523d82523d6000602084013e611781565b606091505b505090508061052e576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061185557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166118497f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108eb6119f7565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118ee575060408051601f3d908101601f191682019092526118eb9181019061230c565b60015b61192f576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461198b576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161111f565b61052e8383611b1d565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33611a297f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610bb3576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161111f565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b611afc611b73565b6108eb81611bda565b610bb3611b73565b611b15611b73565b610bb3611be2565b611b2682611bea565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611b6b5761052e8282611c92565b6109dd611d08565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610bb3576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110e0611b73565b6112fb611b73565b806001600160a01b03163b600003611c39576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611caf9190612502565b600060405180830381855af49150503d8060008114611cea576040519150601f19603f3d011682016040523d82523d6000602084013e611cef565b606091505b5091509150611cff858383611d40565b95945050505050565b3415610bb3576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082611d5557611d5082611db8565b611db1565b8151158015611d6c57506001600160a01b0384163b155b15611dae576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161111f565b50805b9392505050565b805115611dc85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112611e3a57600080fd5b813567ffffffffffffffff80821115611e5557611e55611dfa565b604051601f8301601f19908116603f01168101908282118183101715611e7d57611e7d611dfa565b81604052838152866020858801011115611e9657600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008083601f840112611ec857600080fd5b50813567ffffffffffffffff811115611ee057600080fd5b602083019150836020828501011115611ef857600080fd5b9250929050565b600080600060408486031215611f1457600080fd5b833567ffffffffffffffff80821115611f2c57600080fd5b611f3887838801611e29565b94506020860135915080821115611f4e57600080fd5b50611f5b86828701611eb6565b9497909650939450505050565b6001600160a01b03811681146108eb57600080fd5b600080600060608486031215611f9257600080fd5b833567ffffffffffffffff811115611fa957600080fd5b611fb586828701611e29565b935050602084013591506040840135611fcd81611f68565b809150509250925092565b600060608284031215611fea57600080fd5b50919050565b60008060008060006080868803121561200857600080fd5b853567ffffffffffffffff8082111561202057600080fd5b61202c89838a01611fd8565b9650602088013595506040880135915061204582611f68565b9093506060870135908082111561205b57600080fd5b5061206888828901611eb6565b969995985093965092949392505050565b60008060006040848603121561208e57600080fd5b83359250602084013567ffffffffffffffff8111156120ac57600080fd5b611f5b86828701611eb6565b6000602082840312156120ca57600080fd5b5035919050565b60008060008060008060a087890312156120ea57600080fd5b863567ffffffffffffffff8082111561210257600080fd5b61210e8a838b01611fd8565b97506020890135915061212082611f68565b9095506040880135945060608801359061213982611f68565b9093506080880135908082111561214f57600080fd5b5061215c89828a01611eb6565b979a9699509497509295939492505050565b6000806040838503121561218157600080fd5b823561218c81611f68565b9150602083013567ffffffffffffffff8111156121a857600080fd5b6121b485828601611e29565b9150509250929050565b6000806000806000608086880312156121d657600080fd5b853567ffffffffffffffff808211156121ee57600080fd5b61202c89838a01611e29565b60005b838110156122155781810151838201526020016121fd565b50506000910152565b600081518084526122368160208601602086016121fa565b601f01601f19169290920160200192915050565b602081526000611db1602083018461221e565b60006020828403121561226f57600080fd5b8135611db181611f68565b60008060006060848603121561228f57600080fd5b833561229a81611f68565b9250602084013591506040840135611fcd81611f68565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6040815260006122ef604083018661221e565b82810360208401526123028185876122b1565b9695505050505050565b60006020828403121561231e57600080fd5b5051919050565b6001600160a01b038616815260c06020820152600061234760c083018761221e565b6040830195909552506060810192909252608082015280820360a0909101526000815260200192915050565b600081357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18336030181126123a757600080fd5b820160208101903567ffffffffffffffff8111156123c457600080fd5b8036038213156123d357600080fd5b606085526123e56060860182846122b1565b91505060208301356123f681611f68565b6001600160a01b0316602085015260409283013592909301919091525090565b6080815260006124296080830188612373565b6001600160a01b038716602084015285604084015282810360608401526124518185876122b1565b98975050505050505050565b6001600160a01b038816815260c06020820152600061247f60c083018961221e565b87604084015286606084015285608084015282810360a08401526124a48185876122b1565b9a9950505050505050505050565b6000602082840312156124c457600080fd5b81518015158114611db157600080fd5b600080604083850312156124e757600080fd5b82516124f281611f68565b6020939093015192949293505050565b600082516125148184602087016121fa565b919091019291505056fea2646970667358221220a0aac54cd913d91847e5c215b40b796f82134b073fa197d13d1207e7019546ea64736f6c63430008150033"; + "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516125536100fd600039600081816117c7015281816117f001526119a001526125536000f3fe6080604052600436106101635760003560e01c80635af65967116100c0578063bcf7f32b11610074578063c4d66de811610059578063c4d66de814610458578063f2fde38b14610478578063f45346dc1461049857600080fd5b8063bcf7f32b14610418578063c39aca371461043857600080fd5b80637993c1e0116100a55780637993c1e0146103655780638da5cb5b14610385578063ad3cb1cc146103c257600080fd5b80635af6596714610330578063715018a61461035057600080fd5b80632e1a7d4d116101175780633ce4a5bc116100fc5780633ce4a5bc146102d25780634f1ef286146102fa57806352d1902d1461030d57600080fd5b80632e1a7d4d14610292578063309f5004146102b257600080fd5b806321501a951161014857806321501a951461021557806321e093b114610235578063267e75a01461027257600080fd5b80630ac7c44c146101d5578063135390f9146101f557600080fd5b366101d0576000546001600160a01b0316331480159061019757503373735b14bb79463307aacbed86daf3322b1e6226ab14155b156101ce576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b3480156101e157600080fd5b506101ce6101f0366004611f02565b6104b8565b34801561020157600080fd5b506101ce610210366004611f85565b610533565b34801561022157600080fd5b506101ce610230366004611ff8565b61061d565b34801561024157600080fd5b50600054610255906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561027e57600080fd5b506101ce61028d366004612084565b610768565b34801561029e57600080fd5b506101ce6102ad3660046120b7565b610813565b3480156102be57600080fd5b506101ce6102cd3660046120d0565b6108ee565b3480156102de57600080fd5b5061025573735b14bb79463307aacbed86daf3322b1e6226ab81565b6101ce61030836600461216e565b6109c2565b34801561031957600080fd5b506103226109e1565b604051908152602001610269565b34801561033c57600080fd5b506101ce61034b3660046120d0565b610a10565b34801561035c57600080fd5b506101ce610ba1565b34801561037157600080fd5b506101ce6103803660046121be565b610bb5565b34801561039157600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610255565b3480156103ce57600080fd5b5061040b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516102699190612249565b34801561042457600080fd5b506101ce6104333660046120d0565b610caa565b34801561044457600080fd5b506101ce6104533660046120d0565b610d44565b34801561046457600080fd5b506101ce61047336600461225c565b610ed5565b34801561048457600080fd5b506101ce61049336600461225c565b6110d8565b3480156104a457600080fd5b506101ce6104b3366004612279565b611131565b6104c061127a565b336001600160a01b03167f2b5af078ce280d812dc2241658dc5435c93408020e5418eef55a2b536de51c0f8484846040516104fd939291906122db565b60405180910390a261052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b61053b61127a565b60006105478383611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771683868685876001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105da919061230b565b6040516105eb959493929190612324565b60405180910390a25061052e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461066a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab148061069d57506001600160a01b03831630145b156106d4576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106de84846115ee565b6000546040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169263de43156e9261072f928a921690899088908890600401612415565b600060405180830381600087803b15801561074957600080fd5b505af115801561075d573d6000803e3d6000fd5b505050505050505050565b61077061127a565b61078e8373735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526104fd9291889060009081908a908a9061245c565b61081b61127a565b6108398173735b14bb79463307aacbed86daf3322b1e6226ab6115ee565b6000546040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015233917f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc57716916001600160a01b039091169060340160408051601f19818403018152908290526108ba929186906000908190612324565b60405180910390a26108eb60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461093b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612415565b600060405180830381600087803b1580156109a257600080fd5b505af11580156109b6573d6000803e3d6000fd5b50505050505050505050565b6109ca6117bc565b6109d38261188c565b6109dd8282611894565b5050565b60006109eb611995565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a5d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610a9057506001600160a01b03831630145b15610ac7576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5391906124b1565b506040517f69582bee0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906369582bee906109889089908990899088908890600401612415565b610ba96119f7565b610bb36000611a6b565b565b610bbd61127a565b6000610bc98585611321565b9050336001600160a01b03167f2265ce9ec38ea098a1143406678482665a6e1ccd82ab22d37eea3a78abc5771685888885896001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5c919061230b565b8989604051610c71979695949392919061245c565b60405180910390a250610ca360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610cf7576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612415565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610d91576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610dc457506001600160a01b03831630145b15610dfb576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610e63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8791906124b1565b506040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e906109889089908990899088908890600401612415565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610f205750825b905060008267ffffffffffffffff166001148015610f3d5750303b155b905081158015610f4b575080155b15610f82576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fe35784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038616611023576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61102c33611af4565b611034611b05565b61103c611b0d565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03881617905583156110d05784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6110e06119f7565b6001600160a01b038116611128576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6108eb81611a6b565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461117e576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab14806111b157506001600160a01b03811630145b156111e8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af1158015611250573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127491906124b1565b50505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016112f5576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000806000836001600160a01b031663d9eeebed6040518163ffffffff1660e01b81526004016040805180830381865afa158015611363573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138791906124d3565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af115801561140c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143091906124b1565b611466576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526001600160a01b038516906323b872dd906064016020604051808303816000875af11580156114d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f691906124b1565b61152c576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b038516906342966c68906024016020604051808303816000875af115801561158c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b091906124b1565b6115e6576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801561165e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168291906124b1565b6116b8576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561171757600080fd5b505af115801561172b573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d806000811461177c576040519150601f19603f3d011682016040523d82523d6000602084013e611781565b606091505b505090508061052e576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061185557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166118497f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108eb6119f7565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118ee575060408051601f3d908101601f191682019092526118eb9181019061230b565b60015b61192f576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461198b576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161111f565b61052e8383611b1d565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bb3576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33611a297f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610bb3576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161111f565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b611afc611b73565b6108eb81611bda565b610bb3611b73565b611b15611b73565b610bb3611be2565b611b2682611bea565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611b6b5761052e8282611c92565b6109dd611d08565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610bb3576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110e0611b73565b6112fb611b73565b806001600160a01b03163b600003611c39576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161111f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611caf9190612501565b600060405180830381855af49150503d8060008114611cea576040519150601f19603f3d011682016040523d82523d6000602084013e611cef565b606091505b5091509150611cff858383611d40565b95945050505050565b3415610bb3576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082611d5557611d5082611db8565b611db1565b8151158015611d6c57506001600160a01b0384163b155b15611dae576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161111f565b50805b9392505050565b805115611dc85780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112611e3a57600080fd5b813567ffffffffffffffff811115611e5457611e54611dfa565b604051601f19603f601f19601f8501160116810181811067ffffffffffffffff82111715611e8457611e84611dfa565b604052818152838201602001851015611e9c57600080fd5b816020850160208301376000918101602001919091529392505050565b60008083601f840112611ecb57600080fd5b50813567ffffffffffffffff811115611ee357600080fd5b602083019150836020828501011115611efb57600080fd5b9250929050565b600080600060408486031215611f1757600080fd5b833567ffffffffffffffff811115611f2e57600080fd5b611f3a86828701611e29565b935050602084013567ffffffffffffffff811115611f5757600080fd5b611f6386828701611eb9565b9497909650939450505050565b6001600160a01b03811681146108eb57600080fd5b600080600060608486031215611f9a57600080fd5b833567ffffffffffffffff811115611fb157600080fd5b611fbd86828701611e29565b935050602084013591506040840135611fd581611f70565b809150509250925092565b600060608284031215611ff257600080fd5b50919050565b60008060008060006080868803121561201057600080fd5b853567ffffffffffffffff81111561202757600080fd5b61203388828901611fe0565b95505060208601359350604086013561204b81611f70565b9250606086013567ffffffffffffffff81111561206757600080fd5b61207388828901611eb9565b969995985093965092949392505050565b60008060006040848603121561209957600080fd5b83359250602084013567ffffffffffffffff811115611f5757600080fd5b6000602082840312156120c957600080fd5b5035919050565b60008060008060008060a087890312156120e957600080fd5b863567ffffffffffffffff81111561210057600080fd5b61210c89828a01611fe0565b965050602087013561211d81611f70565b945060408701359350606087013561213481611f70565b9250608087013567ffffffffffffffff81111561215057600080fd5b61215c89828a01611eb9565b979a9699509497509295939492505050565b6000806040838503121561218157600080fd5b823561218c81611f70565b9150602083013567ffffffffffffffff8111156121a857600080fd5b6121b485828601611e29565b9150509250929050565b6000806000806000608086880312156121d657600080fd5b853567ffffffffffffffff8111156121ed57600080fd5b61203388828901611e29565b60005b838110156122145781810151838201526020016121fc565b50506000910152565b600081518084526122358160208601602086016121f9565b601f01601f19169290920160200192915050565b602081526000611db1602083018461221d565b60006020828403121561226e57600080fd5b8135611db181611f70565b60008060006060848603121561228e57600080fd5b833561229981611f70565b9250602084013591506040840135611fd581611f70565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6040815260006122ee604083018661221d565b82810360208401526123018185876122b0565b9695505050505050565b60006020828403121561231d57600080fd5b5051919050565b6001600160a01b038616815260c06020820152600061234660c083018761221d565b6040830195909552506060810192909252608082015280820360a0909101526000815260200192915050565b600081357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18336030181126123a657600080fd5b820160208101903567ffffffffffffffff8111156123c357600080fd5b8036038213156123d257600080fd5b606085526123e46060860182846122b0565b91505060208301356123f581611f70565b6001600160a01b0316602085015260409283013592909301919091525090565b6080815260006124286080830188612372565b6001600160a01b038716602084015285604084015282810360608401526124508185876122b0565b98975050505050505050565b6001600160a01b038816815260c06020820152600061247e60c083018961221d565b87604084015286606084015285608084015282810360a08401526124a38185876122b0565b9a9950505050505050505050565b6000602082840312156124c357600080fd5b81518015158114611db157600080fd5b600080604083850312156124e657600080fd5b82516124f181611f70565b6020939093015192949293505050565b600082516125138184602087016121f9565b919091019291505056fea2646970667358221220d8d50a67f6aea88515e2af6733e3b64f97273a2f0b00d518adc713b4a35c370164736f6c634300081a0033"; type GatewayZEVMConstructorParams = | [signer?: Signer] diff --git a/v2/typechain-types/factories/Math__factory.ts b/v2/typechain-types/factories/Math__factory.ts index 0bd23ac0..77764d8f 100644 --- a/v2/typechain-types/factories/Math__factory.ts +++ b/v2/typechain-types/factories/Math__factory.ts @@ -20,7 +20,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203c4f2836b31fe7e54eb8bf5e5e1f07ead4bdb2465c1768b5ef03739d4539c0f264736f6c63430008150033"; + "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c0b270b0be59fe690f25903756d3c17b6ea12af9948ddfe45caafa979d407cf964736f6c634300081a0033"; type MathConstructorParams = | [signer?: Signer] diff --git a/v2/typechain-types/factories/MockERC20__factory.ts b/v2/typechain-types/factories/MockERC20__factory.ts index 0b1e6530..5effecad 100644 --- a/v2/typechain-types/factories/MockERC20__factory.ts +++ b/v2/typechain-types/factories/MockERC20__factory.ts @@ -335,7 +335,7 @@ const _abi = [ ] as const; const _bytecode = - "0x608060405234801561001057600080fd5b506111cc806100206000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80633644e5151161008c57806395d89b411161006657806395d89b41146101d2578063a9059cbb146101da578063d505accf146101ed578063dd62ed3e1461020057600080fd5b80633644e5151461017457806370a082311461017c5780637ecebe00146101b257600080fd5b806318160ddd116100bd57806318160ddd1461013a57806323b872dd1461014c578063313ce5671461015f57600080fd5b806306fdde03146100e4578063095ea7b3146101025780631624f6c614610125575b600080fd5b6100ec610246565b6040516100f99190610ba7565b60405180910390f35b610115610110366004610c3c565b6102d8565b60405190151581526020016100f9565b610138610133366004610d51565b610352565b005b6003545b6040519081526020016100f9565b61011561015a366004610dc5565b610451565b60025460405160ff90911681526020016100f9565b61013e6105c5565b61013e61018a366004610e01565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b61013e6101c0366004610e01565b60086020526000908152604090205481565b6100ec6105eb565b6101156101e8366004610c3c565b6105fa565b6101386101fb366004610e1c565b6106ab565b61013e61020e366004610e86565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b60606000805461025590610eb9565b80601f016020809104026020016040519081016040528092919081815260200182805461028190610eb9565b80156102ce5780601f106102a3576101008083540402835291602001916102ce565b820191906000526020600020905b8154815290600101906020018083116102b157829003601f168201915b5050505050905090565b33600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103409086815260200190565b60405180910390a35060015b92915050565b60095460ff16156103c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f414c52454144595f494e495449414c495a45440000000000000000000000000060448201526064015b60405180910390fd5b60006103d08482610f5b565b5060016103dd8382610f5b565b50600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff83161790556104136109f1565b60065561041e610a0a565b6007555050600980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905550565b73ffffffffffffffffffffffffffffffffffffffff831660009081526005602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146104e5576104b38184610aad565b73ffffffffffffffffffffffffffffffffffffffff861660009081526005602090815260408083203384529091529020555b73ffffffffffffffffffffffffffffffffffffffff85166000908152600460205260409020546105159084610aad565b73ffffffffffffffffffffffffffffffffffffffff80871660009081526004602052604080822093909355908616815220546105519084610b2a565b73ffffffffffffffffffffffffffffffffffffffff80861660008181526004602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906105b29087815260200190565b60405180910390a3506001949350505050565b60006006546105d26109f1565b146105e4576105df610a0a565b905090565b5060075490565b60606001805461025590610eb9565b336000908152600460205260408120546106149083610aad565b336000908152600460205260408082209290925573ffffffffffffffffffffffffffffffffffffffff85168152205461064d9083610b2a565b73ffffffffffffffffffffffffffffffffffffffff84166000818152600460205260409081902092909255905133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906103409086815260200190565b42841015610715576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064016103bb565b600060016107216105c5565b73ffffffffffffffffffffffffffffffffffffffff8a16600090815260086020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9928d928d928d9290919061077c836110a4565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810188905260e0016040516020818303038152906040528051906020012060405160200161081d9291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015610899573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061091457508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b61097a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f494e56414c49445f5349474e455200000000000000000000000000000000000060448201526064016103bb565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526005602090815260408083208b8516808552908352928190208a90555189815291928b16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35050505050505050565b6000610ba380610a0363ffffffff8216565b9250505090565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6000604051610a3c91906110dc565b60405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6610a6d6109f1565b604080516020810195909552840192909252606083015260808201523060a082015260c00160405160208183030381529060405280519060200120905090565b600081831015610b19576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f45524332303a207375627472616374696f6e20756e646572666c6f770000000060448201526064016103bb565b610b238284611170565b9392505050565b600080610b378385611183565b905083811015610b23576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45524332303a206164646974696f6e206f766572666c6f77000000000000000060448201526064016103bb565b4690565b600060208083528351808285015260005b81811015610bd457858101830151858201604001528201610bb8565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c3757600080fd5b919050565b60008060408385031215610c4f57600080fd5b610c5883610c13565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112610ca657600080fd5b813567ffffffffffffffff80821115610cc157610cc1610c66565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715610d0757610d07610c66565b81604052838152866020858801011115610d2057600080fd5b836020870160208301376000602085830101528094505050505092915050565b803560ff81168114610c3757600080fd5b600080600060608486031215610d6657600080fd5b833567ffffffffffffffff80821115610d7e57600080fd5b610d8a87838801610c95565b94506020860135915080821115610da057600080fd5b50610dad86828701610c95565b925050610dbc60408501610d40565b90509250925092565b600080600060608486031215610dda57600080fd5b610de384610c13565b9250610df160208501610c13565b9150604084013590509250925092565b600060208284031215610e1357600080fd5b610b2382610c13565b600080600080600080600060e0888a031215610e3757600080fd5b610e4088610c13565b9650610e4e60208901610c13565b95506040880135945060608801359350610e6a60808901610d40565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215610e9957600080fd5b610ea283610c13565b9150610eb060208401610c13565b90509250929050565b600181811c90821680610ecd57607f821691505b602082108103610f06577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f821115610f5657600081815260208120601f850160051c81016020861015610f335750805b601f850160051c820191505b81811015610f5257828155600101610f3f565b5050505b505050565b815167ffffffffffffffff811115610f7557610f75610c66565b610f8981610f838454610eb9565b84610f0c565b602080601f831160018114610fdc5760008415610fa65750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555610f52565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b828110156110295788860151825594840194600190910190840161100a565b508582101561106557878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036110d5576110d5611075565b5060010190565b60008083546110ea81610eb9565b60018281168015611102576001811461113557611164565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084168752821515830287019450611164565b8760005260208060002060005b8581101561115b5781548a820152908401908201611142565b50505082870194505b50929695505050505050565b8181038181111561034c5761034c611075565b8082018082111561034c5761034c61107556fea2646970667358221220e8122d9d65fd41722ae8694f08bfc13b22d510d8903be511c80fcee8c0e8368c64736f6c63430008150033"; + "0x6080604052348015600f57600080fd5b5061113e8061001f6000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80633644e5151161008c57806395d89b411161006657806395d89b41146101d2578063a9059cbb146101da578063d505accf146101ed578063dd62ed3e1461020057600080fd5b80633644e5151461017457806370a082311461017c5780637ecebe00146101b257600080fd5b806318160ddd116100bd57806318160ddd1461013a57806323b872dd1461014c578063313ce5671461015f57600080fd5b806306fdde03146100e4578063095ea7b3146101025780631624f6c614610125575b600080fd5b6100ec610246565b6040516100f99190610b6b565b60405180910390f35b610115610110366004610be2565b6102d8565b60405190151581526020016100f9565b610138610133366004610cdc565b610352565b005b6003545b6040519081526020016100f9565b61011561015a366004610d55565b610451565b60025460405160ff90911681526020016100f9565b61013e6105c5565b61013e61018a366004610d92565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b61013e6101c0366004610d92565b60086020526000908152604090205481565b6100ec6105eb565b6101156101e8366004610be2565b6105fa565b6101386101fb366004610dad565b6106ab565b61013e61020e366004610e18565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b60606000805461025590610e4b565b80601f016020809104026020016040519081016040528092919081815260200182805461028190610e4b565b80156102ce5780601f106102a3576101008083540402835291602001916102ce565b820191906000526020600020905b8154815290600101906020018083116102b157829003601f168201915b5050505050905090565b33600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103409086815260200190565b60405180910390a35060015b92915050565b60095460ff16156103c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f414c52454144595f494e495449414c495a45440000000000000000000000000060448201526064015b60405180910390fd5b60006103d08482610eed565b5060016103dd8382610eed565b50600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff83161790556104136109b5565b60065561041e6109ce565b6007555050600980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905550565b73ffffffffffffffffffffffffffffffffffffffff831660009081526005602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146104e5576104b38184610a71565b73ffffffffffffffffffffffffffffffffffffffff861660009081526005602090815260408083203384529091529020555b73ffffffffffffffffffffffffffffffffffffffff85166000908152600460205260409020546105159084610a71565b73ffffffffffffffffffffffffffffffffffffffff80871660009081526004602052604080822093909355908616815220546105519084610aee565b73ffffffffffffffffffffffffffffffffffffffff80861660008181526004602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906105b29087815260200190565b60405180910390a3506001949350505050565b60006006546105d26109b5565b146105e4576105df6109ce565b905090565b5060075490565b60606001805461025590610e4b565b336000908152600460205260408120546106149083610a71565b336000908152600460205260408082209290925573ffffffffffffffffffffffffffffffffffffffff85168152205461064d9083610aee565b73ffffffffffffffffffffffffffffffffffffffff84166000818152600460205260409081902092909255905133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906103409086815260200190565b42841015610715576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064016103bb565b600060016107216105c5565b73ffffffffffffffffffffffffffffffffffffffff8a16600090815260086020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9928d928d928d9290919061077c83611017565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810188905260e0016040516020818303038152906040528051906020012060405160200161081d9291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa15801561087b573d6000803e3d6000fd5b5050604051601f19015191505073ffffffffffffffffffffffffffffffffffffffff8116158015906108d857508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b61093e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f494e56414c49445f5349474e455200000000000000000000000000000000000060448201526064016103bb565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526005602090815260408083208b8516808552908352928190208a90555189815291928b16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35050505050505050565b6000610b67806109c763ffffffff8216565b9250505090565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6000604051610a00919061104f565b60405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6610a316109b5565b604080516020810195909552840192909252606083015260808201523060a082015260c00160405160208183030381529060405280519060200120905090565b600081831015610add576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f45524332303a207375627472616374696f6e20756e646572666c6f770000000060448201526064016103bb565b610ae782846110e2565b9392505050565b600080610afb83856110f5565b905083811015610ae7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45524332303a206164646974696f6e206f766572666c6f77000000000000000060448201526064016103bb565b4690565b602081526000825180602084015260005b81811015610b995760208186018101516040868401015201610b7c565b506000604082850101526040601f19601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610bdd57600080fd5b919050565b60008060408385031215610bf557600080fd5b610bfe83610bb9565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112610c4c57600080fd5b813567ffffffffffffffff811115610c6657610c66610c0c565b604051601f19603f601f19601f8501160116810181811067ffffffffffffffff82111715610c9657610c96610c0c565b604052818152838201602001851015610cae57600080fd5b816020850160208301376000918101602001919091529392505050565b803560ff81168114610bdd57600080fd5b600080600060608486031215610cf157600080fd5b833567ffffffffffffffff811115610d0857600080fd5b610d1486828701610c3b565b935050602084013567ffffffffffffffff811115610d3157600080fd5b610d3d86828701610c3b565b925050610d4c60408501610ccb565b90509250925092565b600080600060608486031215610d6a57600080fd5b610d7384610bb9565b9250610d8160208501610bb9565b929592945050506040919091013590565b600060208284031215610da457600080fd5b610ae782610bb9565b600080600080600080600060e0888a031215610dc857600080fd5b610dd188610bb9565b9650610ddf60208901610bb9565b95506040880135945060608801359350610dfb60808901610ccb565b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610e2b57600080fd5b610e3483610bb9565b9150610e4260208401610bb9565b90509250929050565b600181811c90821680610e5f57607f821691505b602082108103610e98577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f821115610ee857806000526020600020601f840160051c81016020851015610ec55750805b601f840160051c820191505b81811015610ee55760008155600101610ed1565b50505b505050565b815167ffffffffffffffff811115610f0757610f07610c0c565b610f1b81610f158454610e4b565b84610e9e565b6020601f821160018114610f6d5760008315610f375750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455610ee5565b600084815260208120601f198516915b82811015610f9d5787850151825560209485019460019092019101610f7d565b5084821015610fd957868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361104857611048610fe8565b5060010190565b600080835461105d81610e4b565b60018216801561107457600181146110a7576110d7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00831686528115158202860193506110d7565b86600052602060002060005b838110156110cf578154888201526001909101906020016110b3565b505081860193505b509195945050505050565b8181038181111561034c5761034c610fe8565b8082018082111561034c5761034c610fe856fea2646970667358221220851d97dae90e79fa61b9e1ffe627628587a83f0e58ff9e31aa3727a08c88fd7d64736f6c634300081a0033"; type MockERC20ConstructorParams = | [signer?: Signer] diff --git a/v2/typechain-types/factories/MockERC721__factory.ts b/v2/typechain-types/factories/MockERC721__factory.ts index 34817e39..60e495a3 100644 --- a/v2/typechain-types/factories/MockERC721__factory.ts +++ b/v2/typechain-types/factories/MockERC721__factory.ts @@ -363,7 +363,7 @@ const _abi = [ ] as const; const _bytecode = - "0x608060405234801561001057600080fd5b5061149d806100206000396000f3fe6080604052600436106100dd5760003560e01c80636352211e1161007f578063a22cb46511610059578063a22cb4651461025f578063b88d4fde1461027f578063c87b56dd14610292578063e985e9c5146102b357600080fd5b80636352211e146101fc57806370a082311461021c57806395d89b411461024a57600080fd5b8063095ea7b3116100bb578063095ea7b3146101a157806323b872dd146101b657806342842e0e146101c95780634cd88b76146101dc57600080fd5b806301ffc9a7146100e257806306fdde0314610117578063081812fc14610139575b600080fd5b3480156100ee57600080fd5b506101026100fd366004610e1f565b610309565b60405190151581526020015b60405180910390f35b34801561012357600080fd5b5061012c6103ee565b60405161010e9190610ea7565b34801561014557600080fd5b5061017c610154366004610eba565b60009081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161010e565b6101b46101af366004610ef7565b610480565b005b6101b46101c4366004610f21565b6105cf565b6101b46101d7366004610f21565b6108c4565b3480156101e857600080fd5b506101b46101f7366004611040565b610a18565b34801561020857600080fd5b5061017c610217366004610eba565b610ace565b34801561022857600080fd5b5061023c6102373660046110a4565b610b5f565b60405190815260200161010e565b34801561025657600080fd5b5061012c610c07565b34801561026b57600080fd5b506101b461027a3660046110bf565b610c16565b6101b461028d3660046110fb565b610cad565b34801561029e57600080fd5b5061012c6102ad366004610eba565b50606090565b3480156102bf57600080fd5b506101026102ce366004611177565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061039c57507f80ac58cd000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b806103e857507f5b5e139f000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6060600080546103fd906111aa565b80601f0160208091040260200160405190810160405280929190818152602001828054610429906111aa565b80156104765780601f1061044b57610100808354040283529160200191610476565b820191906000526020600020905b81548152906001019060200180831161045957829003601f168201915b5050505050905090565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16338114806104e3575073ffffffffffffffffffffffffffffffffffffffff8116600090815260056020908152604080832033845290915290205460ff165b61054e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a454400000000000000000000000000000000000060448201526064015b60405180910390fd5b60008281526004602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff84811691161461065f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f57524f4e475f46524f4d000000000000000000000000000000000000000000006044820152606401610545565b73ffffffffffffffffffffffffffffffffffffffff82166106dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e540000000000000000000000000000006044820152606401610545565b3373ffffffffffffffffffffffffffffffffffffffff84161480610730575073ffffffffffffffffffffffffffffffffffffffff8316600090815260056020908152604080832033845290915290205460ff165b8061075e575060008181526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1633145b6107c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610545565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081208054916107f58361122c565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260036020526040812080549161082b83611261565b90915550506000818152600260209081526040808320805473ffffffffffffffffffffffffffffffffffffffff8088167fffffffffffffffffffffffff000000000000000000000000000000000000000092831681179093556004909452828520805490911690559051849391928716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6108cf8383836105cf565b813b15806109ad57506040517f150b7a020000000000000000000000000000000000000000000000000000000080825233600483015273ffffffffffffffffffffffffffffffffffffffff858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a4016020604051808303816000875af1158015610965573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109899190611299565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b610a13576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610545565b505050565b60065460ff1615610a85576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f414c52454144595f494e495449414c495a4544000000000000000000000000006044820152606401610545565b6000610a918382611304565b506001610a9e8282611304565b5050600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905550565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1680610b5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4d494e544544000000000000000000000000000000000000000000006044820152606401610545565b919050565b600073ffffffffffffffffffffffffffffffffffffffff8216610bde576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4144445245535300000000000000000000000000000000000000006044820152606401610545565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6060600180546103fd906111aa565b33600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610cb88484846105cf565b823b1580610d8257506040517f150b7a02000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff85169063150b7a0290610d1b90339089908890889060040161141e565b6020604051808303816000875af1158015610d3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5e9190611299565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b610de8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610545565b50505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610e1c57600080fd5b50565b600060208284031215610e3157600080fd5b8135610e3c81610dee565b9392505050565b6000815180845260005b81811015610e6957602081850181015186830182015201610e4d565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081526000610e3c6020830184610e43565b600060208284031215610ecc57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610b5a57600080fd5b60008060408385031215610f0a57600080fd5b610f1383610ed3565b946020939093013593505050565b600080600060608486031215610f3657600080fd5b610f3f84610ed3565b9250610f4d60208501610ed3565b9150604084013590509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600067ffffffffffffffff80841115610fa757610fa7610f5d565b604051601f85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715610fed57610fed610f5d565b8160405280935085815286868601111561100657600080fd5b858560208301376000602087830101525050509392505050565b600082601f83011261103157600080fd5b610e3c83833560208501610f8c565b6000806040838503121561105357600080fd5b823567ffffffffffffffff8082111561106b57600080fd5b61107786838701611020565b9350602085013591508082111561108d57600080fd5b5061109a85828601611020565b9150509250929050565b6000602082840312156110b657600080fd5b610e3c82610ed3565b600080604083850312156110d257600080fd5b6110db83610ed3565b9150602083013580151581146110f057600080fd5b809150509250929050565b6000806000806080858703121561111157600080fd5b61111a85610ed3565b935061112860208601610ed3565b925060408501359150606085013567ffffffffffffffff81111561114b57600080fd5b8501601f8101871361115c57600080fd5b61116b87823560208401610f8c565b91505092959194509250565b6000806040838503121561118a57600080fd5b61119383610ed3565b91506111a160208401610ed3565b90509250929050565b600181811c908216806111be57607f821691505b6020821081036111f7577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008161123b5761123b6111fd565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611292576112926111fd565b5060010190565b6000602082840312156112ab57600080fd5b8151610e3c81610dee565b601f821115610a1357600081815260208120601f850160051c810160208610156112dd5750805b601f850160051c820191505b818110156112fc578281556001016112e9565b505050505050565b815167ffffffffffffffff81111561131e5761131e610f5d565b6113328161132c84546111aa565b846112b6565b602080601f831160018114611385576000841561134f5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b1785556112fc565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b828110156113d2578886015182559484019460019091019084016113b3565b508582101561140e57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b600073ffffffffffffffffffffffffffffffffffffffff80871683528086166020840152508360408301526080606083015261145d6080830184610e43565b969550505050505056fea26469706673582212201102f53c6ed66d541915b39d172490bf4f0b0ee78ce9c28c7754a608c4935d8864736f6c63430008150033"; + "0x6080604052348015600f57600080fd5b506114b88061001f6000396000f3fe6080604052600436106100dd5760003560e01c80636352211e1161007f578063a22cb46511610059578063a22cb4651461025f578063b88d4fde1461027f578063c87b56dd14610292578063e985e9c5146102b357600080fd5b80636352211e146101fc57806370a082311461021c57806395d89b411461024a57600080fd5b8063095ea7b3116100bb578063095ea7b3146101a157806323b872dd146101b657806342842e0e146101c95780634cd88b76146101dc57600080fd5b806301ffc9a7146100e257806306fdde0314610117578063081812fc14610139575b600080fd5b3480156100ee57600080fd5b506101026100fd366004610e1f565b610309565b60405190151581526020015b60405180910390f35b34801561012357600080fd5b5061012c6103ee565b60405161010e9190610ea7565b34801561014557600080fd5b5061017c610154366004610eba565b60009081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161010e565b6101b46101af366004610ef7565b610480565b005b6101b46101c4366004610f21565b6105cf565b6101b46101d7366004610f21565b6108c4565b3480156101e857600080fd5b506101b46101f7366004611045565b610a18565b34801561020857600080fd5b5061017c610217366004610eba565b610ace565b34801561022857600080fd5b5061023c6102373660046110ae565b610b5f565b60405190815260200161010e565b34801561025657600080fd5b5061012c610c07565b34801561026b57600080fd5b506101b461027a3660046110c9565b610c16565b6101b461028d366004611105565b610cad565b34801561029e57600080fd5b5061012c6102ad366004610eba565b50606090565b3480156102bf57600080fd5b506101026102ce366004611181565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061039c57507f80ac58cd000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b806103e857507f5b5e139f000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6060600080546103fd906111b4565b80601f0160208091040260200160405190810160405280929190818152602001828054610429906111b4565b80156104765780601f1061044b57610100808354040283529160200191610476565b820191906000526020600020905b81548152906001019060200180831161045957829003601f168201915b5050505050905090565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16338114806104e3575073ffffffffffffffffffffffffffffffffffffffff8116600090815260056020908152604080832033845290915290205460ff165b61054e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a454400000000000000000000000000000000000060448201526064015b60405180910390fd5b60008281526004602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff84811691161461065f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f57524f4e475f46524f4d000000000000000000000000000000000000000000006044820152606401610545565b73ffffffffffffffffffffffffffffffffffffffff82166106dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e540000000000000000000000000000006044820152606401610545565b3373ffffffffffffffffffffffffffffffffffffffff84161480610730575073ffffffffffffffffffffffffffffffffffffffff8316600090815260056020908152604080832033845290915290205460ff165b8061075e575060008181526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1633145b6107c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610545565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081208054916107f583611236565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260036020526040812080549161082b8361126b565b90915550506000818152600260209081526040808320805473ffffffffffffffffffffffffffffffffffffffff8088167fffffffffffffffffffffffff000000000000000000000000000000000000000092831681179093556004909452828520805490911690559051849391928716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6108cf8383836105cf565b813b15806109ad57506040517f150b7a020000000000000000000000000000000000000000000000000000000080825233600483015273ffffffffffffffffffffffffffffffffffffffff858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a4016020604051808303816000875af1158015610965573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098991906112a3565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b610a13576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610545565b505050565b60065460ff1615610a85576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f414c52454144595f494e495449414c495a4544000000000000000000000000006044820152606401610545565b6000610a91838261130e565b506001610a9e828261130e565b5050600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905550565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1680610b5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4d494e544544000000000000000000000000000000000000000000006044820152606401610545565b919050565b600073ffffffffffffffffffffffffffffffffffffffff8216610bde576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4144445245535300000000000000000000000000000000000000006044820152606401610545565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6060600180546103fd906111b4565b33600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610cb88484846105cf565b823b1580610d8257506040517f150b7a02000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff85169063150b7a0290610d1b903390899088908890600401611427565b6020604051808303816000875af1158015610d3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5e91906112a3565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b610de8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610545565b50505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610e1c57600080fd5b50565b600060208284031215610e3157600080fd5b8135610e3c81610dee565b9392505050565b6000815180845260005b81811015610e6957602081850181015186830182015201610e4d565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081526000610e3c6020830184610e43565b600060208284031215610ecc57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610b5a57600080fd5b60008060408385031215610f0a57600080fd5b610f1383610ed3565b946020939093013593505050565b600080600060608486031215610f3657600080fd5b610f3f84610ed3565b9250610f4d60208501610ed3565b929592945050506040919091013590565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008067ffffffffffffffff841115610fa857610fa8610f5e565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff82111715610ff557610ff5610f5e565b60405283815290508082840185101561100d57600080fd5b83836020830137600060208583010152509392505050565b600082601f83011261103657600080fd5b610e3c83833560208501610f8d565b6000806040838503121561105857600080fd5b823567ffffffffffffffff81111561106f57600080fd5b61107b85828601611025565b925050602083013567ffffffffffffffff81111561109857600080fd5b6110a485828601611025565b9150509250929050565b6000602082840312156110c057600080fd5b610e3c82610ed3565b600080604083850312156110dc57600080fd5b6110e583610ed3565b9150602083013580151581146110fa57600080fd5b809150509250929050565b6000806000806080858703121561111b57600080fd5b61112485610ed3565b935061113260208601610ed3565b925060408501359150606085013567ffffffffffffffff81111561115557600080fd5b8501601f8101871361116657600080fd5b61117587823560208401610f8d565b91505092959194509250565b6000806040838503121561119457600080fd5b61119d83610ed3565b91506111ab60208401610ed3565b90509250929050565b600181811c908216806111c857607f821691505b602082108103611201577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008161124557611245611207565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361129c5761129c611207565b5060010190565b6000602082840312156112b557600080fd5b8151610e3c81610dee565b601f821115610a1357806000526020600020601f840160051c810160208510156112e75750805b601f840160051c820191505b8181101561130757600081556001016112f3565b5050505050565b815167ffffffffffffffff81111561132857611328610f5e565b61133c8161133684546111b4565b846112c0565b6020601f82116001811461138e57600083156113585750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611307565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156113dc57878501518255602094850194600190920191016113bc565b508482101561141857868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b73ffffffffffffffffffffffffffffffffffffffff8516815273ffffffffffffffffffffffffffffffffffffffff841660208201528260408201526080606082015260006114786080830184610e43565b969550505050505056fea26469706673582212202332803a16bf7eaf4a68e83df79b845e756649c92da3b94bb9b4061f246da5be64736f6c634300081a0033"; type MockERC721ConstructorParams = | [signer?: Signer] diff --git a/v2/typechain-types/factories/ProxyAdmin__factory.ts b/v2/typechain-types/factories/ProxyAdmin__factory.ts index 23cfdd5c..f38082f3 100644 --- a/v2/typechain-types/factories/ProxyAdmin__factory.ts +++ b/v2/typechain-types/factories/ProxyAdmin__factory.ts @@ -141,7 +141,7 @@ const _abi = [ ] as const; const _bytecode = - "0x608060405234801561001057600080fd5b5060405161065d38038061065d83398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b610560806100fd6000396000f3fe60806040526004361061005a5760003560e01c80639623609d116100435780639623609d146100b0578063ad3cb1cc146100c3578063f2fde38b1461011957600080fd5b8063715018a61461005f5780638da5cb5b14610076575b600080fd5b34801561006b57600080fd5b50610074610139565b005b34801561008257600080fd5b5060005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100746100be366004610364565b61014d565b3480156100cf57600080fd5b5061010c6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100a791906104bc565b34801561012557600080fd5b506100746101343660046104d6565b6101e2565b61014161024b565b61014b600061029e565b565b61015561024b565b6040517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690634f1ef2869034906101ab90869086906004016104f3565b6000604051808303818588803b1580156101c457600080fd5b505af11580156101d8573d6000803e3d6000fd5b5050505050505050565b6101ea61024b565b73ffffffffffffffffffffffffffffffffffffffff811661023f576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6102488161029e565b50565b60005473ffffffffffffffffffffffffffffffffffffffff16331461014b576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610236565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff8116811461024857600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060006060848603121561037957600080fd5b833561038481610313565b9250602084013561039481610313565b9150604084013567ffffffffffffffff808211156103b157600080fd5b818601915086601f8301126103c557600080fd5b8135818111156103d7576103d7610335565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561041d5761041d610335565b8160405282815289602084870101111561043657600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000815180845260005b8181101561047e57602081850181015186830182015201610462565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006104cf6020830184610458565b9392505050565b6000602082840312156104e857600080fd5b81356104cf81610313565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006105226040830184610458565b94935050505056fea264697066735822122044608d1d803528cefebfe1257cad5290b32192fb478f6905d50044aec0ab2ef664736f6c63430008150033"; + "0x608060405234801561001057600080fd5b5060405161068438038061068483398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b610587806100fd6000396000f3fe60806040526004361061005a5760003560e01c80639623609d116100435780639623609d146100b0578063ad3cb1cc146100c3578063f2fde38b1461011957600080fd5b8063715018a61461005f5780638da5cb5b14610076575b600080fd5b34801561006b57600080fd5b50610074610139565b005b34801561008257600080fd5b5060005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100746100be366004610364565b61014d565b3480156100cf57600080fd5b5061010c6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100a791906104e3565b34801561012557600080fd5b506100746101343660046104fd565b6101e2565b61014161024b565b61014b600061029e565b565b61015561024b565b6040517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690634f1ef2869034906101ab908690869060040161051a565b6000604051808303818588803b1580156101c457600080fd5b505af11580156101d8573d6000803e3d6000fd5b5050505050505050565b6101ea61024b565b73ffffffffffffffffffffffffffffffffffffffff811661023f576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6102488161029e565b50565b60005473ffffffffffffffffffffffffffffffffffffffff16331461014b576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610236565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff8116811461024857600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060006060848603121561037957600080fd5b833561038481610313565b9250602084013561039481610313565b9150604084013567ffffffffffffffff8111156103b057600080fd5b8401601f810186136103c157600080fd5b803567ffffffffffffffff8111156103db576103db610335565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561044757610447610335565b60405281815282820160200188101561045f57600080fd5b816020840160208301376000602083830101528093505050509250925092565b6000815180845260005b818110156104a557602081850181015186830182015201610489565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006104f6602083018461047f565b9392505050565b60006020828403121561050f57600080fd5b81356104f681610313565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000610549604083018461047f565b94935050505056fea2646970667358221220b68ea0eca96d97adca0a037e1efb26b5d3e690e9fbc1913bb4a08e597cfc70f164736f6c634300081a0033"; type ProxyAdminConstructorParams = | [signer?: Signer] diff --git a/v2/typechain-types/factories/ReceiverEVM__factory.ts b/v2/typechain-types/factories/ReceiverEVM__factory.ts index c65c9d25..3cd1a430 100644 --- a/v2/typechain-types/factories/ReceiverEVM__factory.ts +++ b/v2/typechain-types/factories/ReceiverEVM__factory.ts @@ -314,7 +314,7 @@ const _abi = [ ] as const; const _bytecode = - "0x608060405234801561001057600080fd5b506001600055610d0c806100256000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610893565b6102f9565b34801561010057600080fd5b5061006a61010f36600461097d565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a58565b60405180910390a15050565b610226610372565b6000610233600285610ac2565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b6b565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610bb9565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610c9d565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610cba565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff8082111561072757600080fd5b818501915085601f83011261073b57600080fd5b81358181111561074a57600080fd5b86602082850101111561075c57600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e4576107e461076e565b604052919050565b600082601f8301126107fd57600080fd5b813567ffffffffffffffff8111156108175761081761076e565b61084860207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079d565b81815284602083860101111561085d57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087a565b6000806000606084860312156108a857600080fd5b833567ffffffffffffffff8111156108bf57600080fd5b6108cb868287016107ec565b9350506020840135915060408401356108e38161087a565b809150509250925092565b600067ffffffffffffffff8211156109085761090861076e565b5060051b60200190565b600082601f83011261092357600080fd5b81356020610938610933836108ee565b61079d565b82815260059290921b8401810191818101908684111561095757600080fd5b8286015b84811015610972578035835291830191830161095b565b509695505050505050565b60008060006060848603121561099257600080fd5b833567ffffffffffffffff808211156109aa57600080fd5b818601915086601f8301126109be57600080fd5b813560206109ce610933836108ee565b82815260059290921b8401810191818101908a8411156109ed57600080fd5b8286015b84811015610a2557803586811115610a095760008081fd5b610a178d86838b01016107ec565b8452509183019183016109f1565b5097505087013592505080821115610a3c57600080fd5b50610a4986828701610912565b9250506106f360408501610888565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610af8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b18578181015183820152602001610b00565b50506000910152565b60008151808452610b39816020860160208601610afd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610ba060a0830186610b21565b6060830194909452509015156080909101529392505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff87168352602060808185015281875180845260a08601915060a08160051b870101935082890160005b82811015610c49577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60888703018452610c37868351610b21565b95509284019290840190600101610bfd565b50505050838203604085015285518083528187019282019060005b81811015610c8057845183529383019391830191600101610c64565b505085151560608601529250610c94915050565b95945050505050565b600060208284031215610caf57600080fd5b81516104f98161087a565b60008251610ccc818460208701610afd565b919091019291505056fea26469706673582212203c78a9c62b9e8060d1fadf61a8e6e054c88d36bdb3ea73702c26bf13f718fad664736f6c63430008150033"; + "0x6080604052348015600f57600080fd5b506001600055610d3a806100246000396000f3fe6080604052600436106100635760003560e01c8063c513169111610040578063c5131691146100c1578063e04d4f97146100e1578063f05b6abf146100f457005b8063357fc5a21461006c5780636ed701691461008c5780638fcaa0b5146100a157005b3661006a57005b005b34801561007857600080fd5b5061006a6100873660046106c0565b610114565b34801561009857600080fd5b5061006a6101aa565b3480156100ad57600080fd5b5061006a6100bc3660046106fc565b6101df565b3480156100cd57600080fd5b5061006a6100dc3660046106c0565b61021e565b61006a6100ef366004610895565b6102f9565b34801561010057600080fd5b5061006a61010f366004610981565b61033d565b61011c610372565b61013e73ffffffffffffffffffffffffffffffffffffffff83163383866103b5565b604080513381526020810185905273ffffffffffffffffffffffffffffffffffffffff848116828401528316606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a16101a56001600055565b505050565b6040513381527fbcaadb46b82a48af60b608f58959ae6b8310d1b0a0d094c2e9ec3208ed39f2a09060200160405180910390a1565b7f0d3f65f00e631663aa85c96330b5c7a83bb29af3630c0063776f985edc3037aa33838360405161021293929190610a6b565b60405180910390a15050565b610226610372565b6000610233600285610ad5565b90508060000361026f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61029173ffffffffffffffffffffffffffffffffffffffff84163384846103b5565b604080513381526020810183905273ffffffffffffffffffffffffffffffffffffffff858116828401528416606082015290517f2b58128f24a9f59127cc5b5430d70542b22220f2d9adaa86e442b816ab98af609181900360800190a1506101a56001600055565b7f1f1ff1f5fb41346850b2f5c04e6c767e2f1c8a525c5c0c5cdb60cdf3ca5f62fa3334858585604051610330959493929190610b7e565b60405180910390a1505050565b7f74a53cd528a921fca7dbdee62f86819051d3cc98f214951f4238e8843f20b146338484846040516103309493929190610c08565b6002600054036103ae576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261044a908590610450565b50505050565b600061047273ffffffffffffffffffffffffffffffffffffffff8416836104eb565b905080516000141580156104975750808060200190518101906104959190610ccb565b155b156101a5576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606104f983836000610500565b9392505050565b60608147101561053e576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016104e2565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516105679190610ce8565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b50915091506105b98683836105c3565b9695505050505050565b6060826105d8576105d382610652565b6104f9565b81511580156105fc575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561064b576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016104e2565b50806104f9565b8051156106625780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff811681146106bb57600080fd5b919050565b6000806000606084860312156106d557600080fd5b833592506106e560208501610697565b91506106f360408501610697565b90509250925092565b6000806020838503121561070f57600080fd5b823567ffffffffffffffff81111561072657600080fd5b8301601f8101851361073757600080fd5b803567ffffffffffffffff81111561074e57600080fd5b85602082840101111561076057600080fd5b6020919091019590945092505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156107e6576107e6610770565b604052919050565b600082601f8301126107ff57600080fd5b813567ffffffffffffffff81111561081957610819610770565b61084a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161079f565b81815284602083860101111561085f57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461069457600080fd5b80356106bb8161087c565b6000806000606084860312156108aa57600080fd5b833567ffffffffffffffff8111156108c157600080fd5b6108cd868287016107ee565b9350506020840135915060408401356108e58161087c565b809150509250925092565b600067ffffffffffffffff82111561090a5761090a610770565b5060051b60200190565b600082601f83011261092557600080fd5b8135610938610933826108f0565b61079f565b8082825260208201915060208360051b86010192508583111561095a57600080fd5b602085015b8381101561097757803583526020928301920161095f565b5095945050505050565b60008060006060848603121561099657600080fd5b833567ffffffffffffffff8111156109ad57600080fd5b8401601f810186136109be57600080fd5b80356109cc610933826108f0565b8082825260208201915060208360051b8501019250888311156109ee57600080fd5b602084015b83811015610a3057803567ffffffffffffffff811115610a1257600080fd5b610a218b6020838901016107ee565b845250602092830192016109f3565b509550505050602084013567ffffffffffffffff811115610a5057600080fd5b610a5c86828701610914565b9250506106f36040850161088a565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b600082610b0b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60005b83811015610b2b578181015183820152602001610b13565b50506000910152565b60008151808452610b4c816020860160208601610b10565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260a060408201526000610bb360a0830186610b34565b6060830194909452509015156080909101529392505050565b600081518084526020840193506020830160005b82811015610bfe578151865260209586019590910190600101610be0565b5093949350505050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683526080602084015280865180835260a08501915060a08160051b86010192506020880160005b82811015610c9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60878603018452610c86858351610b34565b94506020938401939190910190600101610c4c565b505050508281036040840152610cb18186610bcc565b915050610cc2606083018415159052565b95945050505050565b600060208284031215610cdd57600080fd5b81516104f98161087c565b60008251610cfa818460208701610b10565b919091019291505056fea2646970667358221220556072e1abafc3c4063b8cce832228b4f309b93726aaa6a6dfab20cb880c6d1864736f6c634300081a0033"; type ReceiverEVMConstructorParams = | [signer?: Signer] diff --git a/v2/typechain-types/factories/SafeERC20__factory.ts b/v2/typechain-types/factories/SafeERC20__factory.ts index 7ed026a4..9740e0a3 100644 --- a/v2/typechain-types/factories/SafeERC20__factory.ts +++ b/v2/typechain-types/factories/SafeERC20__factory.ts @@ -47,7 +47,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122046102441a3eeb6e5a462b03c9c7513d93efc3227355025e84529f195fef9a90f64736f6c63430008150033"; + "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b149ed6660f3fbf5a50e73e0348cd9d9861a3fa7d998ed32eee66773e3cb05b864736f6c634300081a0033"; type SafeERC20ConstructorParams = | [signer?: Signer] diff --git a/v2/typechain-types/factories/SenderZEVM__factory.ts b/v2/typechain-types/factories/SenderZEVM__factory.ts index f1751dc3..4a7c1876 100644 --- a/v2/typechain-types/factories/SenderZEVM__factory.ts +++ b/v2/typechain-types/factories/SenderZEVM__factory.ts @@ -115,7 +115,7 @@ const _abi = [ ] as const; const _bytecode = - "0x608060405234801561001057600080fd5b506040516107eb3803806107eb83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b610758806100936000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063a0a1730b146100a4575b600080fd5b6100596100543660046104b8565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b2366004610570565b6102af565b60008383836040516024016100ce93929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061067e565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106a2565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610654565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f0ac7c44c00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690630ac7c44c9061039490889085906004016106f4565b600060405180830381600087803b1580156103ae57600080fd5b505af11580156103c2573d6000803e3d6000fd5b505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261040d57600080fd5b813567ffffffffffffffff80821115610428576104286103cd565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561046e5761046e6103cd565b8160405283815286602085880101111561048757600080fd5b836020870160208301376000602085830101528094505050505092915050565b80151581146104b557600080fd5b50565b60008060008060008060c087890312156104d157600080fd5b863567ffffffffffffffff808211156104e957600080fd5b6104f58a838b016103fc565b9750602089013596506040890135915073ffffffffffffffffffffffffffffffffffffffff8216821461052757600080fd5b9094506060880135908082111561053d57600080fd5b5061054a89828a016103fc565b9350506080870135915060a0870135610562816104a7565b809150509295509295509295565b6000806000806080858703121561058657600080fd5b843567ffffffffffffffff8082111561059e57600080fd5b6105aa888389016103fc565b955060208701359150808211156105c057600080fd5b506105cd878288016103fc565b9350506040850135915060608501356105e5816104a7565b939692955090935050565b6000815180845260005b81811015610616576020818501810151868301820152016105fa565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60608152600061066760608301866105f0565b602083019490945250901515604090910152919050565b60006020828403121561069057600080fd5b815161069b816104a7565b9392505050565b6080815260006106b560808301876105f0565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526106e981856105f0565b979650505050505050565b60408152600061070760408301856105f0565b828103602084015261071981856105f0565b9594505050505056fea2646970667358221220e92044c2cf71fdca139b2b32bfecac087bbcce9922fcdb35a853eeb2131c909c64736f6c63430008150033"; + "0x6080604052348015600f57600080fd5b506040516107f63803806107f6833981016040819052602c916050565b600080546001600160a01b0319166001600160a01b0392909216919091179055607e565b600060208284031215606157600080fd5b81516001600160a01b0381168114607757600080fd5b9392505050565b6107698061008d6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630abd890514610046578063116191b61461005b578063a0a1730b146100a4575b600080fd5b6100596100543660046104c1565b6100b7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b236600461057c565b6102af565b60008383836040516024016100ce93929190610665565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810189905291925086169063095ea7b3906044016020604051808303816000875af11580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e2919061068f565b610218576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f7993c1e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690637993c1e090610274908a908a908a9087906004016106b3565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050505050505050505050565b60008383836040516024016102c693929190610665565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe04d4f970000000000000000000000000000000000000000000000000000000017905260005490517f0ac7c44c00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690630ac7c44c906103949088908590600401610705565b600060405180830381600087803b1580156103ae57600080fd5b505af11580156103c2573d6000803e3d6000fd5b505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261040d57600080fd5b81356020830160008067ffffffffffffffff84111561042e5761042e6103cd565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff8211171561047b5761047b6103cd565b60405283815290508082840187101561049357600080fd5b838360208301376000602085830101528094505050505092915050565b80151581146104be57600080fd5b50565b60008060008060008060c087890312156104da57600080fd5b863567ffffffffffffffff8111156104f157600080fd5b6104fd89828a016103fc565b96505060208701359450604087013573ffffffffffffffffffffffffffffffffffffffff8116811461052e57600080fd5b9350606087013567ffffffffffffffff81111561054a57600080fd5b61055689828a016103fc565b9350506080870135915060a087013561056e816104b0565b809150509295509295509295565b6000806000806080858703121561059257600080fd5b843567ffffffffffffffff8111156105a957600080fd5b6105b5878288016103fc565b945050602085013567ffffffffffffffff8111156105d257600080fd5b6105de878288016103fc565b9350506040850135915060608501356105f6816104b0565b939692955090935050565b6000815180845260005b818110156106275760208185018101518683018201520161060b565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6060815260006106786060830186610601565b602083019490945250901515604090910152919050565b6000602082840312156106a157600080fd5b81516106ac816104b0565b9392505050565b6080815260006106c66080830187610601565b85602084015273ffffffffffffffffffffffffffffffffffffffff8516604084015282810360608401526106fa8185610601565b979650505050505050565b6040815260006107186040830185610601565b828103602084015261072a8185610601565b9594505050505056fea26469706673582212204babda0c6b9bc7b1d80b616dce92ddfbe79ae0bb96aad4f2c77ffb6a8c63da7f64736f6c634300081a0033"; type SenderZEVMConstructorParams = | [signer?: Signer] diff --git a/v2/typechain-types/factories/StdError.sol/StdError__factory.ts b/v2/typechain-types/factories/StdError.sol/StdError__factory.ts index 7a805000..6f702f39 100644 --- a/v2/typechain-types/factories/StdError.sol/StdError__factory.ts +++ b/v2/typechain-types/factories/StdError.sol/StdError__factory.ts @@ -132,7 +132,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6102c961003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100ad5760003560e01c8063986c5f6811610080578063b67689da11610065578063b67689da146100f8578063d160e4de14610100578063fa784a441461010857600080fd5b8063986c5f68146100e8578063b22dc54d146100f057600080fd5b806305ee8612146100b257806310332977146100d05780631de45560146100d85780638995290f146100e0575b600080fd5b6100ba610110565b6040516100c79190610227565b60405180910390f35b6100ba610197565b6100ba6101a9565b6100ba6101bb565b6100ba6101cd565b6100ba6101df565b6100ba6101f1565b6100ba610203565b6100ba610215565b604051603260248201526044015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f4e487b710000000000000000000000000000000000000000000000000000000017905281565b6040516001602482015260440161011e565b6040516021602482015260440161011e565b6040516011602482015260440161011e565b6040516041602482015260440161011e565b6040516031602482015260440161011e565b6040516051602482015260440161011e565b6040516022602482015260440161011e565b6040516012602482015260440161011e565b600060208083528351808285015260005b8181101561025457858101830151858201604001528201610238565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116850101925050509291505056fea2646970667358221220c10828917d53d50bb057fd7c67f4feba9c543cb1535000dcf35cb200adfbf44d64736f6c63430008150033"; + "0x6102c9610039600b82828239805160001a607314602c57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100ad5760003560e01c8063986c5f6811610080578063b67689da11610065578063b67689da146100f8578063d160e4de14610100578063fa784a441461010857600080fd5b8063986c5f68146100e8578063b22dc54d146100f057600080fd5b806305ee8612146100b257806310332977146100d05780631de45560146100d85780638995290f146100e0575b600080fd5b6100ba610110565b6040516100c79190610227565b60405180910390f35b6100ba610197565b6100ba6101a9565b6100ba6101bb565b6100ba6101cd565b6100ba6101df565b6100ba6101f1565b6100ba610203565b6100ba610215565b604051603260248201526044015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f4e487b710000000000000000000000000000000000000000000000000000000017905281565b6040516001602482015260440161011e565b6040516021602482015260440161011e565b6040516011602482015260440161011e565b6040516041602482015260440161011e565b6040516031602482015260440161011e565b6040516051602482015260440161011e565b6040516022602482015260440161011e565b6040516012602482015260440161011e565b602081526000825180602084015260005b818110156102555760208186018101516040868401015201610238565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168401019150509291505056fea26469706673582212209d55015f4a99eb82983bead015f4946ac9e7ee7d323094e4fb909dc07bb134c164736f6c634300081a0033"; type StdErrorConstructorParams = | [signer?: Signer] diff --git a/v2/typechain-types/factories/StdStorage.sol/StdStorageSafe__factory.ts b/v2/typechain-types/factories/StdStorage.sol/StdStorageSafe__factory.ts index 3cfc499f..826a2270 100644 --- a/v2/typechain-types/factories/StdStorage.sol/StdStorageSafe__factory.ts +++ b/v2/typechain-types/factories/StdStorage.sol/StdStorageSafe__factory.ts @@ -68,7 +68,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122048cda6f547459a7291cf126c8fb7ff6e29cb721daae12eb3a09f05535af8044364736f6c63430008150033"; + "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d6473a3e455f11b00943e19d62d02cf957dec4d27a7a7ddb023bf40264d580b064736f6c634300081a0033"; type StdStorageSafeConstructorParams = | [signer?: Signer] diff --git a/v2/typechain-types/factories/SystemContract.sol/SystemContract__factory.ts b/v2/typechain-types/factories/SystemContract.sol/SystemContract__factory.ts index 3b8b3b5b..9dcf65a1 100644 --- a/v2/typechain-types/factories/SystemContract.sol/SystemContract__factory.ts +++ b/v2/typechain-types/factories/SystemContract.sol/SystemContract__factory.ts @@ -439,7 +439,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60c060405234801561001057600080fd5b5060405161106938038061106983398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f1f61014a60003960006101e50152600081816102b9015261045b0152610f1f6000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d4d565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d90565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610dfb565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff80821115610cb457600080fd5b908801906060828b031215610cc857600080fd5b819750610cd760208a01610bea565b965060408901359550610cec60608a01610bea565b94506080890135915080821115610d0257600080fd5b818901915089601f830112610d1657600080fd5b813581811115610d2557600080fd5b8a6020828501011115610d3757600080fd5b6020830194508093505050509295509295509295565b600080600060608486031215610d6257600080fd5b610d6b84610bea565b9250610d7960208501610bea565b9150610d8760408501610bea565b90509250925092565b600060208284031215610da257600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3357600080fd5b870160208101903567ffffffffffffffff811115610e5057600080fd5b803603821315610e5f57600080fd5b60606080850152610e7460e085018284610db2565b91505073ffffffffffffffffffffffffffffffffffffffff610e9860208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610edd818587610db2565b9897505050505050505056fea264697066735822122038e4bf7dcb062e1e18216d9535ed07d4a620437f10b3da9f85a81c208884ef7264736f6c63430008150033"; + "0x60c060405234801561001057600080fd5b5060405161106f38038061106f83398101604081905261002f916100db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0385811691909117909155828116608052811660a0526040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a150505061011e565b80516001600160a01b03811681146100d657600080fd5b919050565b6000806000606084860312156100f057600080fd5b6100f9846100bf565b9250610107602085016100bf565b9150610115604085016100bf565b90509250925092565b60805160a051610f2561014a60003960006101e50152600081816102b9015261045b0152610f256000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc14610273578063d7fd7afb14610286578063d936a012146102b4578063ee2815ba146102db57600080fd5b806397770dff1461021a578063a7cb05071461022d578063c39aca3714610240578063c62178ac1461025357600080fd5b8063513a9c05116100d3578063513a9c051461018a578063569541b9146101c0578063842da36d146101e057806391dd645f1461020757600080fd5b80630be15547146100fa5780631f0e251b1461015a5780633ce4a5bc1461016f575b600080fd5b610130610108366004610bd1565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61016d610168366004610c13565b6102ee565b005b61013073735b14bb79463307aacbed86daf3322b1e6226ab81565b610130610198366004610bd1565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d610215366004610c35565b610402565b61016d610228366004610c13565b610526565b61016d61023b366004610c61565b610633565b61016d61024e366004610c83565b6106ce565b6004546101309073ffffffffffffffffffffffffffffffffffffffff1681565b610130610281366004610d53565b6108cd565b6102a6610294366004610bd1565b60006020819052908152604090205481565b604051908152602001610151565b6101307f000000000000000000000000000000000000000000000000000000000000000081565b61016d6102e9366004610c35565b610a02565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461033b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610388576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461044f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600090610497907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16846108cd565b60008481526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251878152918201529192507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e910160405180910390a1505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610573576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166105c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e906020016103f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610680576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461071b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831673735b14bb79463307aacbed86daf3322b1e6226ab1480610768575073ffffffffffffffffffffffffffffffffffffffff831630145b1561079f576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190610d96565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063de43156e906108939089908990899088908890600401610e01565b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b50505050505050505050565b60008060006108dc8585610ad3565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015291935091508690604801604051602081830303815290604052805190602001206040516020016109c29291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610a4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d91016106c2565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b3b576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b75578284610b78565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600060208284031215610be357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c0e57600080fd5b919050565b600060208284031215610c2557600080fd5b610c2e82610bea565b9392505050565b60008060408385031215610c4857600080fd5b82359150610c5860208401610bea565b90509250929050565b60008060408385031215610c7457600080fd5b50508035926020909101359150565b60008060008060008060a08789031215610c9c57600080fd5b863567ffffffffffffffff811115610cb357600080fd5b87016060818a031215610cc557600080fd5b9550610cd360208801610bea565b945060408701359350610ce860608801610bea565b9250608087013567ffffffffffffffff811115610d0457600080fd5b8701601f81018913610d1557600080fd5b803567ffffffffffffffff811115610d2c57600080fd5b896020828401011115610d3e57600080fd5b60208201935080925050509295509295509295565b600080600060608486031215610d6857600080fd5b610d7184610bea565b9250610d7f60208501610bea565b9150610d8d60408501610bea565b90509250925092565b600060208284031215610da857600080fd5b81518015158114610c2e57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112610e3957600080fd5b870160208101903567ffffffffffffffff811115610e5657600080fd5b803603821315610e6557600080fd5b60606080850152610e7a60e085018284610db8565b91505073ffffffffffffffffffffffffffffffffffffffff610e9e60208a01610bea565b1660a0840152604088013560c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401528281036060840152610ee3818587610db8565b9897505050505050505056fea264697066735822122017543d2c8189b581ace78b1ea401266087d4800c1923634417b929e7efd8a9b764736f6c634300081a0033"; type SystemContractConstructorParams = | [signer?: Signer] diff --git a/v2/typechain-types/factories/SystemContractMock.sol/SystemContractMock__factory.ts b/v2/typechain-types/factories/SystemContractMock.sol/SystemContractMock__factory.ts index 94ce696f..0135ac55 100644 --- a/v2/typechain-types/factories/SystemContractMock.sol/SystemContractMock__factory.ts +++ b/v2/typechain-types/factories/SystemContractMock.sol/SystemContractMock__factory.ts @@ -342,7 +342,7 @@ const _abi = [ ] as const; const _bytecode = - "0x608060405234801561001057600080fd5b50604051610b42380380610b4283398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a378061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fb565b6103a0565b6101416101da36600461081d565b610419565b6101046101ed36600461083f565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610882565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108ae565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e906103669084908990899089908990600401610919565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff808211156107b357600080fd5b818801915088601f8301126107c757600080fd5b8135818111156107d657600080fd5b8960208285010111156107e857600080fd5b9699959850939650602001949392505050565b60006020828403121561080d57600080fd5b61081682610737565b9392505050565b6000806040838503121561083057600080fd5b50508035926020909101359150565b60008060006060848603121561085457600080fd5b61085d84610737565b925061086b60208501610737565b915061087960408501610737565b90509250925092565b6000806040838503121561089557600080fd5b823591506108a560208401610737565b90509250929050565b6000602082840312156108c057600080fd5b8151801515811461081657600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610951576020818401810151610100878401015201610933565b50610100915060008282860101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8201168401905060208901516109b060a086018273ffffffffffffffffffffffffffffffffffffffff169052565b50604089015160c085015273ffffffffffffffffffffffffffffffffffffffff88166020850152866040850152818482030160608501526109f482820186886108d0565b999850505050505050505056fea2646970667358221220d405fb7f3635781dc44a764c4ab0ab7a8b6dd42a7c2e19946b702fe5f711c84e64736f6c63430008150033"; + "0x608060405234801561001057600080fd5b50604051610b3f380380610b3f83398101604081905261002f916100b9565b600380546001600160a01b038086166001600160a01b0319928316179092556004805485841690831617905560058054928416929091169190911790556040517f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac590600090a15050506100fc565b80516001600160a01b03811681146100b457600080fd5b919050565b6000806000606084860312156100ce57600080fd5b6100d78461009d565b92506100e56020850161009d565b91506100f36040850161009d565b90509250925092565b610a348061010b6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806397770dff11610081578063d7fd7afb1161005b578063d7fd7afb146101f2578063d936a01214610220578063ee2815ba1461024057600080fd5b806397770dff146101b9578063a7cb0507146101cc578063c63585cc146101df57600080fd5b8063513a9c05116100b2578063513a9c0514610143578063569541b914610179578063842da36d1461019957600080fd5b80630be15547146100ce5780633c669d551461012e575b600080fd5b6101046100dc36600461071e565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004610760565b610253565b005b61010461015136600461071e565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6003546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6005546101049073ffffffffffffffffffffffffffffffffffffffff1681565b6101416101c73660046107fd565b6103a0565b6101416101da36600461081f565b610419565b6101046101ed366004610841565b610467565b61021261020036600461071e565b60006020819052908152604090205481565b604051908152602001610125565b6004546101049073ffffffffffffffffffffffffffffffffffffffff1681565b61014161024e366004610884565b61059c565b604080516080810182526000606082019081528152336020820152468183015290517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820186905286169063a9059cbb906044016020604051808303816000875af11580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b91906108b0565b506040517fde43156e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063de43156e90610366908490899089908990899060040161091b565b600060405180830381600087803b15801561038057600080fd5b505af1158015610394573d6000803e3d6000fd5b50505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e9060200160405180910390a150565b6000828152602081815260409182902083905581518481529081018390527f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d91015b60405180910390a15050565b60008060006104768585610620565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161055c9291907fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209695505050505050565b60008281526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d910161045b565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610688576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106c25782846106c5565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610717576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60006020828403121561073057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461075b57600080fd5b919050565b60008060008060006080868803121561077857600080fd5b61078186610737565b945061078f60208701610737565b935060408601359250606086013567ffffffffffffffff8111156107b257600080fd5b8601601f810188136107c357600080fd5b803567ffffffffffffffff8111156107da57600080fd5b8860208284010111156107ec57600080fd5b959894975092955050506020019190565b60006020828403121561080f57600080fd5b61081882610737565b9392505050565b6000806040838503121561083257600080fd5b50508035926020909101359150565b60008060006060848603121561085657600080fd5b61085f84610737565b925061086d60208501610737565b915061087b60408501610737565b90509250925092565b6000806040838503121561089757600080fd5b823591506108a760208401610737565b90509250929050565b6000602082840312156108c257600080fd5b8151801515811461081857600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60808152600086516060608084015280518060e085015260005b81811015610953576020818401810151610100878401015201610935565b5060008482016101000152602089015173ffffffffffffffffffffffffffffffffffffffff811660a0860152601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168401915050604088015160c084015273ffffffffffffffffffffffffffffffffffffffff871660208401528560408401526101008382030160608401526109f2610100820185876108d2565b9897505050505050505056fea2646970667358221220fbd69f8a6a30bdc247946500ad2bb4f7e9f585a260ef649595b89d427fb12f2064736f6c634300081a0033"; type SystemContractMockConstructorParams = | [signer?: Signer] diff --git a/v2/typechain-types/factories/TestERC20__factory.ts b/v2/typechain-types/factories/TestERC20__factory.ts index 294138ba..3c8adeb0 100644 --- a/v2/typechain-types/factories/TestERC20__factory.ts +++ b/v2/typechain-types/factories/TestERC20__factory.ts @@ -357,7 +357,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60806040523480156200001157600080fd5b5060405162000cca38038062000cca833981016040819052620000349162000123565b818160036200004483826200021c565b5060046200005382826200021c565b5050505050620002e8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008657600080fd5b81516001600160401b0380821115620000a357620000a36200005e565b604051601f8301601f19908116603f01168101908282118183101715620000ce57620000ce6200005e565b81604052838152602092508683858801011115620000eb57600080fd5b600091505b838210156200010f5785820183015181830184015290820190620000f0565b600093810190920192909252949350505050565b600080604083850312156200013757600080fd5b82516001600160401b03808211156200014f57600080fd5b6200015d8683870162000074565b935060208501519150808211156200017457600080fd5b50620001838582860162000074565b9150509250929050565b600181811c90821680620001a257607f821691505b602082108103620001c357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021757600081815260208120601f850160051c81016020861015620001f25750805b601f850160051c820191505b818110156200021357828155600101620001fe565b5050505b505050565b81516001600160401b038111156200023857620002386200005e565b62000250816200024984546200018d565b84620001c9565b602080601f8311600181146200028857600084156200026f5750858301515b600019600386901b1c1916600185901b17855562000213565b600085815260208120601f198616915b82811015620002b95788860151825594840194600190910190840162000298565b5085821015620002d85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6109d280620002f86000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108ba565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dc565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f39061090f565b80601f016020809104026020016040519081016040528092919081815260200182805461021f9061090f565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f39061090f565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610962565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b600060208083528351808285015260005b818110156107ec578581018301518582016040015282016107d0565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b9150604084013590509250925092565b6000602082840312156108cc57600080fd5b6108d58261082b565b9392505050565b600080604083850312156108ef57600080fd5b6108f88361082b565b91506109066020840161082b565b90509250929050565b600181811c9082168061092357607f821691505b60208210810361095c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220556869bd33d6741656e444b7d99e56e0c3a9495b8426ba227d4f4af169660e8264736f6c63430008150033"; + "0x608060405234801561001057600080fd5b50604051610c9f380380610c9f83398101604081905261002f9161010d565b8181600361003d83826101ff565b50600461004a82826101ff565b50505050506102bd565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261007b57600080fd5b81516001600160401b0381111561009457610094610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100c2576100c2610054565b6040528181528382016020018510156100da57600080fd5b60005b828110156100f9576020818601810151838301820152016100dd565b506000918101602001919091529392505050565b6000806040838503121561012057600080fd5b82516001600160401b0381111561013657600080fd5b6101428582860161006a565b602085015190935090506001600160401b0381111561016057600080fd5b61016c8582860161006a565b9150509250929050565b600181811c9082168061018a57607f821691505b6020821081036101aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fa57806000526020600020601f840160051c810160208510156101d75750805b601f840160051c820191505b818110156101f757600081556001016101e3565b50505b505050565b81516001600160401b0381111561021857610218610054565b61022c816102268454610176565b846101b0565b6020601f82116001811461026057600083156102485750848201515b600019600385901b1c1916600184901b1784556101f7565b600084815260208120601f198516915b828110156102905787850151825560209485019460019092019101610270565b50848210156102ae5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6109d3806102cc6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806340c10f191161007657806395d89b411161005b57806395d89b4114610183578063a9059cbb1461018b578063dd62ed3e1461019e57600080fd5b806340c10f191461013857806370a082311461014d57600080fd5b806318160ddd116100a757806318160ddd1461010457806323b872dd14610116578063313ce5671461012957600080fd5b806306fdde03146100c3578063095ea7b3146100e1575b600080fd5b6100cb6101e4565b6040516100d891906107bf565b60405180910390f35b6100f46100ef366004610854565b610276565b60405190151581526020016100d8565b6002545b6040519081526020016100d8565b6100f461012436600461087e565b610290565b604051601281526020016100d8565b61014b610146366004610854565b6102b4565b005b61010861015b3660046108bb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100cb6102c2565b6100f4610199366004610854565b6102d1565b6101086101ac3660046108dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f390610910565b80601f016020809104026020016040519081016040528092919081815260200182805461021f90610910565b801561026c5780601f106102415761010080835404028352916020019161026c565b820191906000526020600020905b81548152906001019060200180831161024f57829003601f168201915b5050505050905090565b6000336102848185856102df565b60019150505b92915050565b60003361029e8582856102f1565b6102a98585856103c5565b506001949350505050565b6102be8282610470565b5050565b6060600480546101f390610910565b6000336102848185856103c5565b6102ec83838360016104cc565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103bf57818110156103b0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103bf848484840360006104cc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610415576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff8216610465576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102ec838383610614565b73ffffffffffffffffffffffffffffffffffffffff82166104c0576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b6102be60008383610614565b73ffffffffffffffffffffffffffffffffffffffff841661051c576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff831661056c576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103a7565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103bf578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161060691815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661064c5780600260008282546106419190610963565b909155506106fe9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106d2576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103a7565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661072757600280548290039055610753565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156107ed57602081860181015160408684010152016107d0565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461084f57600080fd5b919050565b6000806040838503121561086757600080fd5b6108708361082b565b946020939093013593505050565b60008060006060848603121561089357600080fd5b61089c8461082b565b92506108aa6020850161082b565b929592945050506040919091013590565b6000602082840312156108cd57600080fd5b6108d68261082b565b9392505050565b600080604083850312156108f057600080fd5b6108f98361082b565b91506109076020840161082b565b90509250929050565b600181811c9082168061092457607f821691505b60208210810361095d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561028a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207e804ca539d49155d2b6bc19268ce22f9f857027c75247d69fb0d56a089c93d464736f6c634300081a0033"; type TestERC20ConstructorParams = | [signer?: Signer] diff --git a/v2/typechain-types/factories/TestZContract__factory.ts b/v2/typechain-types/factories/TestZContract__factory.ts index 45f26181..3f8682b4 100644 --- a/v2/typechain-types/factories/TestZContract__factory.ts +++ b/v2/typechain-types/factories/TestZContract__factory.ts @@ -187,7 +187,7 @@ const _abi = [ ] as const; const _bytecode = - "0x608060405234801561001057600080fd5b506104c4806100206000396000f3fe60806040526004361061002a5760003560e01c806369582bee14610033578063de43156e1461005357005b3661003157005b005b34801561003f57600080fd5b5061003161004e3660046101ba565b610073565b34801561005f57600080fd5b5061003161006e3660046101ba565b6100ee565b6060811561008a576100878284018461026e565b90505b7ffdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e999486100b5878061033d565b6100c560408a0160208b016103a2565b896040013533866040516100de969594939291906103c4565b60405180910390a1505050505050565b60608115610105576101028284018461026e565b90505b7fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e6100b5878061033d565b60006060828403121561014257600080fd5b50919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461016c57600080fd5b919050565b60008083601f84011261018357600080fd5b50813567ffffffffffffffff81111561019b57600080fd5b6020830191508360208285010111156101b357600080fd5b9250929050565b6000806000806000608086880312156101d257600080fd5b853567ffffffffffffffff808211156101ea57600080fd5b6101f689838a01610130565b965061020460208901610148565b955060408801359450606088013591508082111561022157600080fd5b5061022e88828901610171565b969995985093965092949392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561028057600080fd5b813567ffffffffffffffff8082111561029857600080fd5b818401915084601f8301126102ac57600080fd5b8135818111156102be576102be61023f565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156103045761030461023f565b8160405282815287602084870101111561031d57600080fd5b826020860160208301376000928101602001929092525095945050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261037257600080fd5b83018035915067ffffffffffffffff82111561038d57600080fd5b6020019150368190038213156101b357600080fd5b6000602082840312156103b457600080fd5b6103bd82610148565b9392505050565b60a081528560a0820152858760c0830137600060c0878301015260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe080601f8901168301602073ffffffffffffffffffffffffffffffffffffffff808a168287015288604087015280881660608701525060c085830301608086015285518060c084015260005b818110156104685787810183015184820160e00152820161044c565b50600060e0828501015260e084601f83011684010194505050505097965050505050505056fea264697066735822122078d900ecbf3fff2425499bb2eafdc9d45545dc5fea40a7cdc33694659008318c64736f6c63430008150033"; + "0x6080604052348015600f57600080fd5b506105208061001f6000396000f3fe60806040526004361061002a5760003560e01c806369582bee14610033578063de43156e1461005357005b3661003157005b005b34801561003f57600080fd5b5061003161004e3660046101ba565b610073565b34801561005f57600080fd5b5061003161006e3660046101ba565b6100ee565b6060811561008a5761008782840184610273565b90505b7ffdc887992b033668833927e252058e468fac0b6bd196d520f09c61b740e999486100b58780610369565b6100c560408a0160208b016103ce565b896040013533866040516100de969594939291906103f0565b60405180910390a1505050505050565b606081156101055761010282840184610273565b90505b7fcdc8ee677dc5ebe680fb18cebda5e26ba5ea1f0ba504a47e2a9a2ecb476dc98e6100b58780610369565b60006060828403121561014257600080fd5b50919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461016c57600080fd5b919050565b60008083601f84011261018357600080fd5b50813567ffffffffffffffff81111561019b57600080fd5b6020830191508360208285010111156101b357600080fd5b9250929050565b6000806000806000608086880312156101d257600080fd5b853567ffffffffffffffff8111156101e957600080fd5b6101f588828901610130565b95505061020460208701610148565b935060408601359250606086013567ffffffffffffffff81111561022757600080fd5b61023388828901610171565b969995985093965092949392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561028557600080fd5b813567ffffffffffffffff81111561029c57600080fd5b8201601f810184136102ad57600080fd5b803567ffffffffffffffff8111156102c7576102c7610244565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561033357610333610244565b60405281815282820160200186101561034b57600080fd5b81602084016020830137600091810160200191909152949350505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261039e57600080fd5b83018035915067ffffffffffffffff8211156103b957600080fd5b6020019150368190038213156101b357600080fd5b6000602082840312156103e057600080fd5b6103e982610148565b9392505050565b60a081528560a0820152858760c0830137600060c0878301015260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f880116820173ffffffffffffffffffffffffffffffffffffffff8716602084015285604084015273ffffffffffffffffffffffffffffffffffffffff8516606084015260c083820301608084015283518060c083015260005b818110156104a557602081870181015184830160e0015201610488565b50600060e0838301810191909152601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016909101019897505050505050505056fea2646970667358221220f4d1ccb9c8450e782e1c77412473fd37637a5c83a2a3272307d8c8bc8e8c7a3364736f6c634300081a0033"; type TestZContractConstructorParams = | [signer?: Signer] diff --git a/v2/typechain-types/factories/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy__factory.ts b/v2/typechain-types/factories/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy__factory.ts index 22c4f01c..4423fc5e 100644 --- a/v2/typechain-types/factories/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy__factory.ts +++ b/v2/typechain-types/factories/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy__factory.ts @@ -129,7 +129,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a060405260405162001169380380620011698339810160408190526200002691620003cd565b82816200003482826200009c565b505081604051620000459062000366565b6001600160a01b039091168152602001604051809103906000f08015801562000072573d6000803e3d6000fd5b506001600160a01b0316608052620000936200008d60805190565b62000102565b505050620004cb565b620000a78262000174565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115620000f457620000ef8282620001f4565b505050565b620000fe62000271565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6200014460008051602062001149833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a1620001718162000293565b50565b806001600160a01b03163b600003620001b057604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080846001600160a01b031684604051620002139190620004ad565b600060405180830381855af49150503d806000811462000250576040519150601f19603f3d011682016040523d82523d6000602084013e62000255565b606091505b50909250905062000268858383620002d6565b95945050505050565b3415620002915760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b038116620002bf57604051633173bdd160e11b815260006004820152602401620001a7565b8060008051602062001149833981519152620001d3565b606082620002ef57620002e9826200033c565b62000335565b81511580156200030757506001600160a01b0384163b155b156200033257604051639996b31560e01b81526001600160a01b0385166004820152602401620001a7565b50805b9392505050565b8051156200034d5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b61065d8062000aec83390190565b80516001600160a01b03811681146200038c57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620003c4578181015183820152602001620003aa565b50506000910152565b600080600060608486031215620003e357600080fd5b620003ee8462000374565b9250620003fe6020850162000374565b60408501519092506001600160401b03808211156200041c57600080fd5b818601915086601f8301126200043157600080fd5b81518181111562000446576200044662000391565b604051601f8201601f19908116603f0116810190838211818310171562000471576200047162000391565b816040528281528960208487010111156200048b57600080fd5b6200049e836020830160208801620003a7565b80955050505050509250925092565b60008251620004c1818460208701620003a7565b9190910192915050565b608051610606620004e66000396000601001526106066000f3fe608060405261000c61000e565b005b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1633036100d2576000357fffffffff00000000000000000000000000000000000000000000000000000000167f4f1ef28600000000000000000000000000000000000000000000000000000000146100c8576040517fd2b576ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6100d06100da565b565b6100d0610109565b6000806100ea366004818461044d565b8101906100f791906104a6565b915091506101058282610119565b5050565b6100d0610114610181565b6101c6565b610122826101ea565b60405173ffffffffffffffffffffffffffffffffffffffff8316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156101795761017482826102be565b505050565b610105610341565b60006101c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e8080156101e5573d6000f35b3d6000fd5b8073ffffffffffffffffffffffffffffffffffffffff163b600003610258576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60606000808473ffffffffffffffffffffffffffffffffffffffff16846040516102e891906105a1565b600060405180830381855af49150503d8060008114610323576040519150601f19603f3d011682016040523d82523d6000602084013e610328565b606091505b5091509150610338858383610379565b95945050505050565b34156100d0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608261038e576103898261040b565b610404565b81511580156103b2575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610401576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161024f565b50805b9392505050565b80511561041b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808585111561045d57600080fd5b8386111561046a57600080fd5b5050820193919092039150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156104b957600080fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146104dd57600080fd5b9150602083013567ffffffffffffffff808211156104fa57600080fd5b818501915085601f83011261050e57600080fd5b81358181111561052057610520610477565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561056657610566610477565b8160405282815288602084870101111561057f57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000825160005b818110156105c257602081860181015185830152016105a8565b50600092019182525091905056fea264697066735822122016f5b54cbe5775f62588e7505acdf25ef7ce05980e702f4e619c20d431a6e0d164736f6c63430008150033608060405234801561001057600080fd5b5060405161065d38038061065d83398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b610560806100fd6000396000f3fe60806040526004361061005a5760003560e01c80639623609d116100435780639623609d146100b0578063ad3cb1cc146100c3578063f2fde38b1461011957600080fd5b8063715018a61461005f5780638da5cb5b14610076575b600080fd5b34801561006b57600080fd5b50610074610139565b005b34801561008257600080fd5b5060005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100746100be366004610364565b61014d565b3480156100cf57600080fd5b5061010c6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100a791906104bc565b34801561012557600080fd5b506100746101343660046104d6565b6101e2565b61014161024b565b61014b600061029e565b565b61015561024b565b6040517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690634f1ef2869034906101ab90869086906004016104f3565b6000604051808303818588803b1580156101c457600080fd5b505af11580156101d8573d6000803e3d6000fd5b5050505050505050565b6101ea61024b565b73ffffffffffffffffffffffffffffffffffffffff811661023f576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6102488161029e565b50565b60005473ffffffffffffffffffffffffffffffffffffffff16331461014b576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610236565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff8116811461024857600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060006060848603121561037957600080fd5b833561038481610313565b9250602084013561039481610313565b9150604084013567ffffffffffffffff808211156103b157600080fd5b818601915086601f8301126103c557600080fd5b8135818111156103d7576103d7610335565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561041d5761041d610335565b8160405282815289602084870101111561043657600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000815180845260005b8181101561047e57602081850181015186830182015201610462565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006104cf6020830184610458565b9392505050565b6000602082840312156104e857600080fd5b81356104cf81610313565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006105226040830184610458565b94935050505056fea264697066735822122044608d1d803528cefebfe1257cad5290b32192fb478f6905d50044aec0ab2ef664736f6c63430008150033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103"; + "0x60a060405260405161117a38038061117a8339810160408190526100229161039d565b828161002e828261008f565b50508160405161003d9061033a565b6001600160a01b039091168152602001604051809103906000f080158015610069573d6000803e3d6000fd5b506001600160a01b031660805261008761008260805190565b6100ee565b50505061048f565b6100988261015c565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156100e2576100dd82826101db565b505050565b6100ea610252565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61012e60008051602061115a833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a161015981610273565b50565b806001600160a01b03163b60000361019757604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080846001600160a01b0316846040516101f89190610473565b600060405180830381855af49150503d8060008114610233576040519150601f19603f3d011682016040523d82523d6000602084013e610238565b606091505b5090925090506102498583836102b2565b95945050505050565b34156102715760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b03811661029d57604051633173bdd160e11b81526000600482015260240161018e565b8060008051602061115a8339815191526101ba565b6060826102c7576102c282610311565b61030a565b81511580156102de57506001600160a01b0384163b155b1561030757604051639996b31560e01b81526001600160a01b038516600482015260240161018e565b50805b9392505050565b8051156103215780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b61068480610ad683390190565b80516001600160a01b038116811461035e57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561039457818101518382015260200161037c565b50506000910152565b6000806000606084860312156103b257600080fd5b6103bb84610347565b92506103c960208501610347565b60408501519092506001600160401b038111156103e557600080fd5b8401601f810186136103f657600080fd5b80516001600160401b0381111561040f5761040f610363565b604051601f8201601f19908116603f011681016001600160401b038111828210171561043d5761043d610363565b60405281815282820160200188101561045557600080fd5b610466826020830160208601610379565b8093505050509250925092565b60008251610485818460208701610379565b9190910192915050565b60805161062d6104a960003960006010015261062d6000f3fe608060405261000c61000e565b005b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1633036100d2576000357fffffffff00000000000000000000000000000000000000000000000000000000167f4f1ef28600000000000000000000000000000000000000000000000000000000146100c8576040517fd2b576ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6100d06100da565b565b6100d0610109565b6000806100ea366004818461044d565b8101906100f791906104a6565b915091506101058282610119565b5050565b6100d0610114610181565b6101c6565b610122826101ea565b60405173ffffffffffffffffffffffffffffffffffffffff8316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156101795761017482826102be565b505050565b610105610341565b60006101c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e8080156101e5573d6000f35b3d6000fd5b8073ffffffffffffffffffffffffffffffffffffffff163b600003610258576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60606000808473ffffffffffffffffffffffffffffffffffffffff16846040516102e891906105c8565b600060405180830381855af49150503d8060008114610323576040519150601f19603f3d011682016040523d82523d6000602084013e610328565b606091505b5091509150610338858383610379565b95945050505050565b34156100d0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608261038e576103898261040b565b610404565b81511580156103b2575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610401576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161024f565b50805b9392505050565b80511561041b5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808585111561045d57600080fd5b8386111561046a57600080fd5b5050820193919092039150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156104b957600080fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146104dd57600080fd5b9150602083013567ffffffffffffffff8111156104f957600080fd5b8301601f8101851361050a57600080fd5b803567ffffffffffffffff81111561052457610524610477565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561059057610590610477565b6040528181528282016020018710156105a857600080fd5b816020840160208301376000602083830101528093505050509250929050565b6000825160005b818110156105e957602081860181015185830152016105cf565b50600092019182525091905056fea2646970667358221220fd77e8da75db1db8869da9f85c4ad64fb3db9f30cb52edf1c23c9afbda1e8dc664736f6c634300081a0033608060405234801561001057600080fd5b5060405161068438038061068483398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b610587806100fd6000396000f3fe60806040526004361061005a5760003560e01c80639623609d116100435780639623609d146100b0578063ad3cb1cc146100c3578063f2fde38b1461011957600080fd5b8063715018a61461005f5780638da5cb5b14610076575b600080fd5b34801561006b57600080fd5b50610074610139565b005b34801561008257600080fd5b5060005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100746100be366004610364565b61014d565b3480156100cf57600080fd5b5061010c6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100a791906104e3565b34801561012557600080fd5b506100746101343660046104fd565b6101e2565b61014161024b565b61014b600061029e565b565b61015561024b565b6040517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690634f1ef2869034906101ab908690869060040161051a565b6000604051808303818588803b1580156101c457600080fd5b505af11580156101d8573d6000803e3d6000fd5b5050505050505050565b6101ea61024b565b73ffffffffffffffffffffffffffffffffffffffff811661023f576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6102488161029e565b50565b60005473ffffffffffffffffffffffffffffffffffffffff16331461014b576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610236565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff8116811461024857600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060006060848603121561037957600080fd5b833561038481610313565b9250602084013561039481610313565b9150604084013567ffffffffffffffff8111156103b057600080fd5b8401601f810186136103c157600080fd5b803567ffffffffffffffff8111156103db576103db610335565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561044757610447610335565b60405281815282820160200188101561045f57600080fd5b816020840160208301376000602083830101528093505050509250925092565b6000815180845260005b818110156104a557602081850181015186830182015201610489565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006104f6602083018461047f565b9392505050565b60006020828403121561050f57600080fd5b81356104f681610313565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000610549604083018461047f565b94935050505056fea2646970667358221220b68ea0eca96d97adca0a037e1efb26b5d3e690e9fbc1913bb4a08e597cfc70f164736f6c634300081a0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103"; type TransparentUpgradeableProxyConstructorParams = | [signer?: Signer] diff --git a/v2/typechain-types/factories/UpgradeableBeacon__factory.ts b/v2/typechain-types/factories/UpgradeableBeacon__factory.ts index 83fe0a32..2b6d399f 100644 --- a/v2/typechain-types/factories/UpgradeableBeacon__factory.ts +++ b/v2/typechain-types/factories/UpgradeableBeacon__factory.ts @@ -163,7 +163,7 @@ const _abi = [ ] as const; const _bytecode = - "0x608060405234801561001057600080fd5b5060405161054538038061054583398101604081905261002f91610165565b806001600160a01b03811661005f57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61006881610079565b50610072826100c9565b5050610198565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b806001600160a01b03163b6000036100ff5760405163211eb15960e21b81526001600160a01b0382166004820152602401610056565b600180546001600160a01b0319166001600160a01b0383169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b80516001600160a01b038116811461016057600080fd5b919050565b6000806040838503121561017857600080fd5b61018183610149565b915061018f60208401610149565b90509250929050565b61039e806101a76000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c8063715018a611610050578063715018a6146100c45780638da5cb5b146100cc578063f2fde38b146100ea57600080fd5b80633659cfe61461006c5780635c60da1b14610081575b600080fd5b61007f61007a36600461032b565b6100fd565b005b60015473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61007f610111565b60005473ffffffffffffffffffffffffffffffffffffffff1661009b565b61007f6100f836600461032b565b610125565b61010561018b565b61010e816101de565b50565b61011961018b565b61012360006102b6565b565b61012d61018b565b73ffffffffffffffffffffffffffffffffffffffff8116610182576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61010e816102b6565b60005473ffffffffffffffffffffffffffffffffffffffff163314610123576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610179565b8073ffffffffffffffffffffffffffffffffffffffff163b600003610247576040517f847ac56400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610179565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561033d57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461036157600080fd5b939250505056fea2646970667358221220a6dab1f973ded27d617fc64697eb33779ed8eb868eda626c5d5422a06fd4881564736f6c63430008150033"; + "0x608060405234801561001057600080fd5b5060405161054538038061054583398101604081905261002f91610165565b806001600160a01b03811661005f57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61006881610079565b50610072826100c9565b5050610198565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b806001600160a01b03163b6000036100ff5760405163211eb15960e21b81526001600160a01b0382166004820152602401610056565b600180546001600160a01b0319166001600160a01b0383169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b80516001600160a01b038116811461016057600080fd5b919050565b6000806040838503121561017857600080fd5b61018183610149565b915061018f60208401610149565b90509250929050565b61039e806101a76000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c8063715018a611610050578063715018a6146100c45780638da5cb5b146100cc578063f2fde38b146100ea57600080fd5b80633659cfe61461006c5780635c60da1b14610081575b600080fd5b61007f61007a36600461032b565b6100fd565b005b60015473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61007f610111565b60005473ffffffffffffffffffffffffffffffffffffffff1661009b565b61007f6100f836600461032b565b610125565b61010561018b565b61010e816101de565b50565b61011961018b565b61012360006102b6565b565b61012d61018b565b73ffffffffffffffffffffffffffffffffffffffff8116610182576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b61010e816102b6565b60005473ffffffffffffffffffffffffffffffffffffffff163314610123576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610179565b8073ffffffffffffffffffffffffffffffffffffffff163b600003610247576040517f847ac56400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610179565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561033d57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461036157600080fd5b939250505056fea264697066735822122063e6ac8c10cb14b9254b2b497f04ed7c7aa519086cae45504282764c66a749f364736f6c634300081a0033"; type UpgradeableBeaconConstructorParams = | [signer?: Signer] diff --git a/v2/typechain-types/factories/WZETA.sol/WETH9__factory.ts b/v2/typechain-types/factories/WZETA.sol/WETH9__factory.ts index b663285a..cec30665 100644 --- a/v2/typechain-types/factories/WZETA.sol/WETH9__factory.ts +++ b/v2/typechain-types/factories/WZETA.sol/WETH9__factory.ts @@ -299,7 +299,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d3565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57600081815260208120601f850160051c810160208610156100ec5750805b601f850160051c820191505b8181101561010b578281556001016100f8565b5050505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b602080601f831160018114610176576000841561015e5750858301515b600019600386901b1c1916600185901b17855561010b565b600085815260208120601f198616915b828110156101a557888601518255948401946001909101908401610186565b50858210156101c35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610985806101e26000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610840565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d3366004610859565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610874565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d6565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108e9565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108e9565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093c565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093c565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d6565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093c565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108e9565b600061073e3384846103bd565b9392505050565b600060208083528351808285015260005b8181101561077257858101830151858201604001528201610756565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b9150604084013590509250925092565b60006020828403121561085257600080fd5b5035919050565b60006020828403121561086b57600080fd5b61073e826107b1565b6000806040838503121561088757600080fd5b610890836107b1565b915061089e602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a7565b600181811c908216806108fd57607f821691505b602082108103610936577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a756fea26469706673582212201fc127b73c19f2c1775b48f5275858b6ddd49d93989841a848b1a4ececbdafd664736f6c63430008150033"; + "0x60c0604052600d60809081526c2bb930b83832b21022ba3432b960991b60a05260009061002c9082610114565b506040805180820190915260048152630ae8aa8960e31b60208201526001906100559082610114565b506002805460ff1916601217905534801561006f57600080fd5b506101d2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009f57607f821691505b6020821081036100bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010f57806000526020600020601f840160051c810160208510156100ec5750805b601f840160051c820191505b8181101561010c57600081556001016100f8565b50505b505050565b81516001600160401b0381111561012d5761012d610075565b6101418161013b845461008b565b846100c5565b6020601f821160018114610175576000831561015d5750848201515b600019600385901b1c1916600184901b17845561010c565b600084815260208120601f198516915b828110156101a55787850151825560209485019460019092019101610185565b50848210156101c35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610986806101e16000396000f3fe6080604052600436106100c05760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146101fa578063d0e30db01461021a578063dd62ed3e1461022257600080fd5b8063313ce5671461018c57806370a08231146101b857806395d89b41146101e557600080fd5b806318160ddd116100a557806318160ddd1461012f57806323b872dd1461014c5780632e1a7d4d1461016c57600080fd5b806306fdde03146100d4578063095ea7b3146100ff57600080fd5b366100cf576100cd61025a565b005b600080fd5b3480156100e057600080fd5b506100e96102b5565b6040516100f69190610745565b60405180910390f35b34801561010b57600080fd5b5061011f61011a3660046107da565b610343565b60405190151581526020016100f6565b34801561013b57600080fd5b50475b6040519081526020016100f6565b34801561015857600080fd5b5061011f610167366004610804565b6103bd565b34801561017857600080fd5b506100cd610187366004610841565b610647565b34801561019857600080fd5b506002546101a69060ff1681565b60405160ff90911681526020016100f6565b3480156101c457600080fd5b5061013e6101d336600461085a565b60036020526000908152604090205481565b3480156101f157600080fd5b506100e9610724565b34801561020657600080fd5b5061011f6102153660046107da565b610731565b6100cd61025a565b34801561022e57600080fd5b5061013e61023d366004610875565b600460209081526000928352604080842090915290825290205481565b33600090815260036020526040812080543492906102799084906108d7565b909155505060405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b600080546102c2906108ea565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee906108ea565b801561033b5780601f106103105761010080835404028352916020019161033b565b820191906000526020600020905b81548152906001019060200180831161031e57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103ab9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081205482111561042b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600060248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841633148015906104a1575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156105605773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915290205482111561051a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091528120805484929061055a90849061093d565b90915550505b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260408120805484929061059590849061093d565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548492906105cf9084906108d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161063591815260200190565b60405180910390a35060019392505050565b3360009081526003602052604090205481111561069a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260006024820152604401610422565b33600090815260036020526040812080548392906106b990849061093d565b9091555050604051339082156108fc029083906000818181858888f193505050501580156106eb573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b600180546102c2906108ea565b600061073e3384846103bd565b9392505050565b602081526000825180602084015260005b818110156107735760208186018101516040868401015201610756565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d557600080fd5b919050565b600080604083850312156107ed57600080fd5b6107f6836107b1565b946020939093013593505050565b60008060006060848603121561081957600080fd5b610822846107b1565b9250610830602085016107b1565b929592945050506040919091013590565b60006020828403121561085357600080fd5b5035919050565b60006020828403121561086c57600080fd5b61073e826107b1565b6000806040838503121561088857600080fd5b610891836107b1565b915061089f602084016107b1565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156103b7576103b76108a8565b600181811c908216806108fe57607f821691505b602082108103610937577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b818103818111156103b7576103b76108a856fea264697066735822122008d7fc4e09519c5dd9f356b03596f6829a151d0bc7682533f9ceab4e459f5ee264736f6c634300081a0033"; type WETH9ConstructorParams = | [signer?: Signer] diff --git a/v2/typechain-types/factories/ZRC20New.sol/ZRC20New__factory.ts b/v2/typechain-types/factories/ZRC20New.sol/ZRC20New__factory.ts index bcfc8006..26fd96a6 100644 --- a/v2/typechain-types/factories/ZRC20New.sol/ZRC20New__factory.ts +++ b/v2/typechain-types/factories/ZRC20New.sol/ZRC20New__factory.ts @@ -645,7 +645,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60c06040523480156200001157600080fd5b50604051620019fe380380620019fe8339810160408190526200003491620001fa565b3373735b14bb79463307aacbed86daf3322b1e6226ab146200006957604051632b2add3d60e01b815260040160405180910390fd5b600762000077898262000359565b50600862000086888262000359565b506009805460ff191660ff88161790556080859052836002811115620000b057620000b062000425565b60a0816002811115620000c757620000c762000425565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506200043b9350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013057600080fd5b81516001600160401b03808211156200014d576200014d62000108565b604051601f8301601f19908116603f0116810190828211818310171562000178576200017862000108565b816040528381526020925086838588010111156200019557600080fd5b600091505b83821015620001b957858201830151818301840152908201906200019a565b600093810190920192909252949350505050565b805160038110620001dd57600080fd5b919050565b80516001600160a01b0381168114620001dd57600080fd5b600080600080600080600080610100898b0312156200021857600080fd5b88516001600160401b03808211156200023057600080fd5b6200023e8c838d016200011e565b995060208b01519150808211156200025557600080fd5b50620002648b828c016200011e565b975050604089015160ff811681146200027c57600080fd5b60608a015190965094506200029460808a01620001cd565b935060a08901519250620002ab60c08a01620001e2565b9150620002bb60e08a01620001e2565b90509295985092959890939650565b600181811c90821680620002df57607f821691505b6020821081036200030057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200035457600081815260208120601f850160051c810160208610156200032f5750805b601f850160051c820191505b8181101562000350578281556001016200033b565b5050505b505050565b81516001600160401b0381111562000375576200037562000108565b6200038d81620003868454620002ca565b8462000306565b602080601f831160018114620003c55760008415620003ac5750858301515b600019600386901b1c1916600185901b17855562000350565b600085815260208120601f198616915b82811015620003f657888601518255948401946001909101908401620003d5565b5085821015620004155787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a05161158f6200046f60003960006102f30152600081816102c4015281816109430152610a49015261158f6000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113b8565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c906113f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610478906113f1565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611473565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d4918690611486565b60405180910390a250600192915050565b60606008805461044c906113f1565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114a8565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ca565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce91906114f9565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad09190611516565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f919061152f565b610b299190611546565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611473565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e89908490611546565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611473565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611473565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e9190611546565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d8908490611546565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff8082111561131057600080fd5b818501915085601f83011261132457600080fd5b813581811115611336576113366112b6565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561137c5761137c6112b6565b8160405282815288602084870101111561139557600080fd5b826020860160208301376000602093820184015298969091013596505050505050565b600080604083850312156113cb57600080fd5b82356113d6816111ad565b915060208301356113e6816111ad565b809150509250929050565b600181811c9082168061140557607f821691505b60208210810361143e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611444565b604081526000611499604083018561112f565b90508260208301529392505050565b6000602082840312156114ba57600080fd5b815180151581146111a657600080fd5b6080815260006114dd608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561150b57600080fd5b81516111a6816111ad565b60006020828403121561152857600080fd5b5051919050565b80820281158282048414176104e0576104e0611444565b808201808211156104e0576104e061144456fea26469706673582212207b3cc2ba67a436eb1551f5330365347b3502d42c3eefdd1c782af1c00e42e23b64736f6c63430008150033"; + "0x60c060405234801561001057600080fd5b506040516119e83803806119e883398101604081905261002f916101db565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b600761006f898261032d565b50600861007c888261032d565b506009805460ff191660ff881617905560808590528360028111156100a3576100a36103eb565b60a08160028111156100b7576100b76103eb565b905250600292909255600080546001600160a01b039283166001600160a01b03199182161790915560018054929093169116179055506104019350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261011e57600080fd5b81516001600160401b03811115610137576101376100f7565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610165576101656100f7565b60405281815283820160200185101561017d57600080fd5b60005b8281101561019c57602081860181015183830182015201610180565b506000918101602001919091529392505050565b8051600381106101bf57600080fd5b919050565b80516001600160a01b03811681146101bf57600080fd5b600080600080600080600080610100898b0312156101f857600080fd5b88516001600160401b0381111561020e57600080fd5b61021a8b828c0161010d565b60208b015190995090506001600160401b0381111561023857600080fd5b6102448b828c0161010d565b975050604089015160ff8116811461025b57600080fd5b60608a0151909650945061027160808a016101b0565b60a08a0151909450925061028760c08a016101c4565b915061029560e08a016101c4565b90509295985092959890939650565b600181811c908216806102b857607f821691505b6020821081036102d857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561032857806000526020600020601f840160051c810160208510156103055750805b601f840160051c820191505b818110156103255760008155600101610311565b50505b505050565b81516001600160401b03811115610346576103466100f7565b61035a8161035484546102a4565b846102de565b6020601f82116001811461038e57600083156103765750848201515b600019600385901b1c1916600184901b178455610325565b600084815260208120601f198516915b828110156103be578785015182556020948501946001909201910161039e565b50848210156103dc5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a0516115b461043460003960006102f30152600081816102c4015281816109430152610a4901526115b46000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806385e1f4d0116100e3578063d9eeebed1161008c578063eddeb12311610066578063eddeb123146103f7578063f2441b321461040a578063f687d12a1461042a57600080fd5b8063d9eeebed1461035d578063dd62ed3e14610391578063e2f535b8146103d757600080fd5b8063a9059cbb116100bd578063a9059cbb14610322578063c701262614610335578063c835d7cc1461034857600080fd5b806385e1f4d0146102bf57806395d89b41146102e6578063a3413d03146102ee57600080fd5b8063313ce5671161014557806347e7ef241161011f57806347e7ef241461026d5780634d8943bb1461028057806370a082311461028957600080fd5b8063313ce567146102055780633ce4a5bc1461021a57806342966c681461025a57600080fd5b8063095ea7b311610176578063095ea7b3146101c757806318160ddd146101ea57806323b872dd146101f257600080fd5b806306fdde0314610192578063091d2788146101b0575b600080fd5b61019a61043d565b6040516101a79190611193565b60405180910390f35b6101b960025481565b6040519081526020016101a7565b6101da6101d53660046111d2565b6104cf565b60405190151581526020016101a7565b6006546101b9565b6101da6102003660046111fe565b6104e6565b60095460405160ff90911681526020016101a7565b61023573735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6101da61026836600461123f565b61057d565b6101da61027b3660046111d2565b610591565b6101b960035481565b6101b9610297366004611258565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b61019a6106e5565b6103157f000000000000000000000000000000000000000000000000000000000000000081565b6040516101a79190611275565b6101da6103303660046111d2565b6106f4565b6101da6103433660046112e5565b610701565b61035b610356366004611258565b610850565b005b610365610917565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6101b961039f3660046113dd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205490565b6001546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61040536600461123f565b610b35565b6000546102359073ffffffffffffffffffffffffffffffffffffffff1681565b61035b61043836600461123f565b610bb7565b60606007805461044c90611416565b80601f016020809104026020016040519081016040528092919081815260200182805461047890611416565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104dc338484610c39565b5060015b92915050565b60006104f3848484610d42565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602090815260408083203384529091529020548281101561055e576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610572853361056d8685611498565b610c39565b506001949350505050565b60006105893383610efd565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab148015906105cf575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156105f3575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561062a576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610634838361103f565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106d49186906114ab565b60405180910390a250600192915050565b60606008805461044c90611416565b60006104dc338484610d42565b600080600061070e610917565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c491906114cd565b6107fa576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108043385610efd565b60035460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161083d918991899187916114ef565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461089d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce919061151e565b905073ffffffffffffffffffffffffffffffffffffffff8116610a1d576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad0919061153b565b905080600003610b0c576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035460025483610b1f9190611554565b610b29919061156b565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610b82576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f9060200161090c565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610c04576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a9060200161090c565b73ffffffffffffffffffffffffffffffffffffffff8316610c86576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610cd3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d8f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ddc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205481811015610e3c576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e468282611498565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600460205260408082209390935590851681529081208054849290610e8990849061156b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610eef91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481811015610faa576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb48282611498565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602052604081209190915560068054849290610fef908490611498565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610d35565b73ffffffffffffffffffffffffffffffffffffffff821661108c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600082825461109e919061156b565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080548392906110d890849061156b565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561115557602081850181015186830182015201611139565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006111a6602083018461112f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146111cf57600080fd5b50565b600080604083850312156111e557600080fd5b82356111f0816111ad565b946020939093013593505050565b60008060006060848603121561121357600080fd5b833561121e816111ad565b9250602084013561122e816111ad565b929592945050506040919091013590565b60006020828403121561125157600080fd5b5035919050565b60006020828403121561126a57600080fd5b81356111a6816111ad565b60208101600383106112b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156112f857600080fd5b823567ffffffffffffffff81111561130f57600080fd5b8301601f8101851361132057600080fd5b803567ffffffffffffffff81111561133a5761133a6112b6565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156113a6576113a66112b6565b6040528181528282016020018710156113be57600080fd5b8160208401602083013760006020928201830152969401359450505050565b600080604083850312156113f057600080fd5b82356113fb816111ad565b9150602083013561140b816111ad565b809150509250929050565b600181811c9082168061142a57607f821691505b602082108103611463577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104e0576104e0611469565b6040815260006114be604083018561112f565b90508260208301529392505050565b6000602082840312156114df57600080fd5b815180151581146111a657600080fd5b608081526000611502608083018761112f565b6020830195909552506040810192909252606090910152919050565b60006020828403121561153057600080fd5b81516111a6816111ad565b60006020828403121561154d57600080fd5b5051919050565b80820281158282048414176104e0576104e0611469565b808201808211156104e0576104e061146956fea26469706673582212207bc62dfdede7c005315010b4244c5d1661fb65fbf23259603e26342f3a5148c464736f6c634300081a0033"; type ZRC20NewConstructorParams = | [signer?: Signer] diff --git a/v2/typechain-types/factories/Zeta.non-eth.sol/ZetaNonEth__factory.ts b/v2/typechain-types/factories/Zeta.non-eth.sol/ZetaNonEth__factory.ts index a4e02b7e..f1bddbec 100644 --- a/v2/typechain-types/factories/Zeta.non-eth.sol/ZetaNonEth__factory.ts +++ b/v2/typechain-types/factories/Zeta.non-eth.sol/ZetaNonEth__factory.ts @@ -620,7 +620,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60806040523480156200001157600080fd5b50604051620012cc380380620012cc83398101604081905262000034916200011d565b604051806040016040528060048152602001635a65746160e01b815250604051806040016040528060048152602001635a45544160e01b81525081600390816200007f9190620001fa565b5060046200008e8282620001fa565b5050506001600160a01b0382161580620000af57506001600160a01b038116155b15620000ce5760405163e6c4247b60e01b815260040160405180910390fd5b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055620002c6565b80516001600160a01b03811681146200011857600080fd5b919050565b600080604083850312156200013157600080fd5b6200013c8362000100565b91506200014c6020840162000100565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200018057607f821691505b602082108103620001a157634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001f557600081815260208120601f850160051c81016020861015620001d05750805b601f850160051c820191505b81811015620001f157828155600101620001dc565b5050505b505050565b81516001600160401b0381111562000216576200021662000155565b6200022e816200022784546200016b565b84620001a7565b602080601f8311600181146200026657600084156200024d5750858301515b600019600386901b1c1916600185901b178555620001f1565b600085815260208120601f198616915b82811015620002975788860151825594840194600190910190840162000276565b5085821015620002b65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610ff680620002d66000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806342966c68116100b257806379cc679011610081578063a9059cbb11610066578063a9059cbb1461028e578063bff9662a146102a1578063dd62ed3e146102c157600080fd5b806379cc67901461027357806395d89b411461028657600080fd5b806342966c68146102025780635b1125911461021557806370a0823114610235578063779e3b631461026b57600080fd5b80631e458bee116100ee5780631e458bee1461018857806323b872dd1461019b578063313ce567146101ae578063328a01d0146101bd57600080fd5b806306fdde0314610120578063095ea7b31461013e57806315d57fd41461016157806318160ddd14610176575b600080fd5b610128610307565b6040516101359190610d97565b60405180910390f35b61015161014c366004610e2c565b610399565b6040519015158152602001610135565b61017461016f366004610e56565b6103b3565b005b6002545b604051908152602001610135565b610174610196366004610e89565b61057e565b6101516101a9366004610ebc565b610631565b60405160128152602001610135565b6007546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610135565b610174610210366004610ef8565b610655565b6006546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b61017a610243366004610f11565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b610174610662565b610174610281366004610e2c565b610786565b610128610837565b61015161029c366004610e2c565b610846565b6005546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b61017a6102cf366004610e56565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461031690610f33565b80601f016020809104026020016040519081016040528092919081815260200182805461034290610f33565b801561038f5780601f106103645761010080835404028352916020019161038f565b820191906000526020600020905b81548152906001019060200180831161037257829003601f168201915b5050505050905090565b6000336103a7818585610854565b60019150505b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff1633148015906103f3575060065473ffffffffffffffffffffffffffffffffffffffff163314155b15610431576040517fcdfcef970000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82161580610468575073ffffffffffffffffffffffffffffffffffffffff8116155b1561049f576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006805473ffffffffffffffffffffffffffffffffffffffff8481167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316811790935560058054918516919092161790556040805133815260208101929092527fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff910160405180910390a16040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201527f1b9352454524a57a51f24f67dc66d898f616922cd1f7a12d73570ece12b1975c910160405180910390a15050565b60055473ffffffffffffffffffffffffffffffffffffffff1633146105d1576040517f3fe32fba000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b6105db8383610866565b808373ffffffffffffffffffffffffffffffffffffffff167fc263b302aec62d29105026245f19e16f8e0137066ccd4a8bd941f716bd4096bb8460405161062491815260200190565b60405180910390a3505050565b60003361063f8582856108c6565b61064a858585610995565b506001949350505050565b61065f3382610a40565b50565b60075473ffffffffffffffffffffffffffffffffffffffff1633146106b5576040517fe700765e000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b60065473ffffffffffffffffffffffffffffffffffffffff16610704576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600654600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691821790556040805133815260208101929092527f5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0910160405180910390a1565b60055473ffffffffffffffffffffffffffffffffffffffff1633146107d9576040517f3fe32fba000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b6107e38282610a9c565b8173ffffffffffffffffffffffffffffffffffffffff167f919f7e2092ffcc9d09f599be18d8152860b0c054df788a33bc549cdd9d0f15b18260405161082b91815260200190565b60405180910390a25050565b60606004805461031690610f33565b6000336103a7818585610995565b6108618383836001610ab1565b505050565b73ffffffffffffffffffffffffffffffffffffffff82166108b6576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b6108c260008383610bf9565b5050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461098f5781811015610980576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024810182905260448101839052606401610428565b61098f84848484036000610ab1565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166109e5576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8216610a35576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b610861838383610bf9565b73ffffffffffffffffffffffffffffffffffffffff8216610a90576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b6108c282600083610bf9565b610aa78233836108c6565b6108c28282610a40565b73ffffffffffffffffffffffffffffffffffffffff8416610b01576040517fe602df0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8316610b51576040517f94280d6200000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600160209081526040808320938716835292905220829055801561098f578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610beb91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8316610c31578060026000828254610c269190610f86565b90915550610ce39050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610cb7576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024810182905260448101839052606401610428565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff8216610d0c57600280548290039055610d38565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161062491815260200190565b600060208083528351808285015260005b81811015610dc457858101830151858201604001528201610da8565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610e2757600080fd5b919050565b60008060408385031215610e3f57600080fd5b610e4883610e03565b946020939093013593505050565b60008060408385031215610e6957600080fd5b610e7283610e03565b9150610e8060208401610e03565b90509250929050565b600080600060608486031215610e9e57600080fd5b610ea784610e03565b95602085013595506040909401359392505050565b600080600060608486031215610ed157600080fd5b610eda84610e03565b9250610ee860208501610e03565b9150604084013590509250925092565b600060208284031215610f0a57600080fd5b5035919050565b600060208284031215610f2357600080fd5b610f2c82610e03565b9392505050565b600181811c90821680610f4757607f821691505b602082108103610f80577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b808201808211156103ad577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea264697066735822122075757da53dfd0cfcf807dd1a1795d15d86db28578b9d55e9f90cb316a3ceb72764736f6c63430008150033"; + "0x608060405234801561001057600080fd5b506040516112a63803806112a683398101604081905261002f91610110565b604051806040016040528060048152602001635a65746160e01b815250604051806040016040528060048152602001635a45544160e01b815250816003908161007891906101e2565b50600461008582826101e2565b5050506001600160a01b03821615806100a557506001600160a01b038116155b156100c35760405163e6c4247b60e01b815260040160405180910390fd5b600680546001600160a01b039384166001600160a01b031991821617909155600780549290931691161790556102a0565b80516001600160a01b038116811461010b57600080fd5b919050565b6000806040838503121561012357600080fd5b61012c836100f4565b915061013a602084016100f4565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061016d57607f821691505b60208210810361018d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101dd57806000526020600020601f840160051c810160208510156101ba5750805b601f840160051c820191505b818110156101da57600081556001016101c6565b50505b505050565b81516001600160401b038111156101fb576101fb610143565b61020f816102098454610159565b84610193565b6020601f821160018114610243576000831561022b5750848201515b600019600385901b1c1916600184901b1784556101da565b600084815260208120601f198516915b828110156102735787850151825560209485019460019092019101610253565b50848210156102915786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610ff7806102af6000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806342966c68116100b257806379cc679011610081578063a9059cbb11610066578063a9059cbb1461028e578063bff9662a146102a1578063dd62ed3e146102c157600080fd5b806379cc67901461027357806395d89b411461028657600080fd5b806342966c68146102025780635b1125911461021557806370a0823114610235578063779e3b631461026b57600080fd5b80631e458bee116100ee5780631e458bee1461018857806323b872dd1461019b578063313ce567146101ae578063328a01d0146101bd57600080fd5b806306fdde0314610120578063095ea7b31461013e57806315d57fd41461016157806318160ddd14610176575b600080fd5b610128610307565b6040516101359190610d97565b60405180910390f35b61015161014c366004610e2c565b610399565b6040519015158152602001610135565b61017461016f366004610e56565b6103b3565b005b6002545b604051908152602001610135565b610174610196366004610e89565b61057e565b6101516101a9366004610ebc565b610631565b60405160128152602001610135565b6007546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610135565b610174610210366004610ef9565b610655565b6006546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b61017a610243366004610f12565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b610174610662565b610174610281366004610e2c565b610786565b610128610837565b61015161029c366004610e2c565b610846565b6005546101dd9073ffffffffffffffffffffffffffffffffffffffff1681565b61017a6102cf366004610e56565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461031690610f34565b80601f016020809104026020016040519081016040528092919081815260200182805461034290610f34565b801561038f5780601f106103645761010080835404028352916020019161038f565b820191906000526020600020905b81548152906001019060200180831161037257829003601f168201915b5050505050905090565b6000336103a7818585610854565b60019150505b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff1633148015906103f3575060065473ffffffffffffffffffffffffffffffffffffffff163314155b15610431576040517fcdfcef970000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82161580610468575073ffffffffffffffffffffffffffffffffffffffff8116155b1561049f576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006805473ffffffffffffffffffffffffffffffffffffffff8481167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316811790935560058054918516919092161790556040805133815260208101929092527fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff910160405180910390a16040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201527f1b9352454524a57a51f24f67dc66d898f616922cd1f7a12d73570ece12b1975c910160405180910390a15050565b60055473ffffffffffffffffffffffffffffffffffffffff1633146105d1576040517f3fe32fba000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b6105db8383610866565b808373ffffffffffffffffffffffffffffffffffffffff167fc263b302aec62d29105026245f19e16f8e0137066ccd4a8bd941f716bd4096bb8460405161062491815260200190565b60405180910390a3505050565b60003361063f8582856108c6565b61064a858585610995565b506001949350505050565b61065f3382610a40565b50565b60075473ffffffffffffffffffffffffffffffffffffffff1633146106b5576040517fe700765e000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b60065473ffffffffffffffffffffffffffffffffffffffff16610704576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600654600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691821790556040805133815260208101929092527f5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0910160405180910390a1565b60055473ffffffffffffffffffffffffffffffffffffffff1633146107d9576040517f3fe32fba000000000000000000000000000000000000000000000000000000008152336004820152602401610428565b6107e38282610a9c565b8173ffffffffffffffffffffffffffffffffffffffff167f919f7e2092ffcc9d09f599be18d8152860b0c054df788a33bc549cdd9d0f15b18260405161082b91815260200190565b60405180910390a25050565b60606004805461031690610f34565b6000336103a7818585610995565b6108618383836001610ab1565b505050565b73ffffffffffffffffffffffffffffffffffffffff82166108b6576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b6108c260008383610bf9565b5050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461098f5781811015610980576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024810182905260448101839052606401610428565b61098f84848484036000610ab1565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166109e5576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8216610a35576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b610861838383610bf9565b73ffffffffffffffffffffffffffffffffffffffff8216610a90576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b6108c282600083610bf9565b610aa78233836108c6565b6108c28282610a40565b73ffffffffffffffffffffffffffffffffffffffff8416610b01576040517fe602df0500000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8316610b51576040517f94280d6200000000000000000000000000000000000000000000000000000000815260006004820152602401610428565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600160209081526040808320938716835292905220829055801561098f578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610beb91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8316610c31578060026000828254610c269190610f87565b90915550610ce39050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610cb7576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024810182905260448101839052606401610428565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff8216610d0c57600280548290039055610d38565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161062491815260200190565b602081526000825180602084015260005b81811015610dc55760208186018101516040868401015201610da8565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610e2757600080fd5b919050565b60008060408385031215610e3f57600080fd5b610e4883610e03565b946020939093013593505050565b60008060408385031215610e6957600080fd5b610e7283610e03565b9150610e8060208401610e03565b90509250929050565b600080600060608486031215610e9e57600080fd5b610ea784610e03565b95602085013595506040909401359392505050565b600080600060608486031215610ed157600080fd5b610eda84610e03565b9250610ee860208501610e03565b929592945050506040919091013590565b600060208284031215610f0b57600080fd5b5035919050565b600060208284031215610f2457600080fd5b610f2d82610e03565b9392505050565b600181811c90821680610f4857607f821691505b602082108103610f81577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b808201808211156103ad577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220085f01204b33dc17013c78c74fbca32a3da2c0b384ce7c8878c889551af28c6164736f6c634300081a0033"; type ZetaNonEthConstructorParams = | [signer?: Signer] diff --git a/v2/typechain-types/factories/ZetaConnectorNative__factory.ts b/v2/typechain-types/factories/ZetaConnectorNative__factory.ts index 47419671..e5f4dfce 100644 --- a/v2/typechain-types/factories/ZetaConnectorNative__factory.ts +++ b/v2/typechain-types/factories/ZetaConnectorNative__factory.ts @@ -297,7 +297,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60c060405234801561001057600080fd5b50604051610d72380380610d7283398101604081905261002f916100d2565b60016000558282826001600160a01b038316158061005457506001600160a01b038216155b8061006657506001600160a01b038116155b156100845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b0319169190921617905550610115915050565b80516001600160a01b03811681146100cd57600080fd5b919050565b6000806000606084860312156100e757600080fd5b6100f0846100b6565b92506100fe602085016100b6565b915061010c604085016100b6565b90509250925092565b60805160a051610bf461017e6000396000818160ff015281816101da0152818161028b015281816103c3015281816104bc0152818161056d015261063301526000818160af015281816101fc0152818161025e015281816104de01526105400152610bf46000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100fa5780635b112591146101215780635e3e9fef14610141578063743e0c9b1461015457600080fd5b806302d5c89914610082578063106e629014610097578063116191b6146100aa575b600080fd5b6100956100903660046109db565b610167565b005b6100956100a5366004610a6a565b610350565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6001546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b61009561014f3660046109db565b610449565b610095610162366004610a9d565b610619565b61016f61065e565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101c0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61022173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000866106a1565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd4906102bb907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610aff565b600060405180830381600087803b1580156102d557600080fd5b505af11580156102e9573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe85858560405161033793929190610b4a565b60405180910390a26103496001600055565b5050505050565b61035861065e565b60015473ffffffffffffffffffffffffffffffffffffffff1633146103a9576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103ea73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001684846106a1565b8273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161043291815260200190565b60405180910390a26104446001600055565b505050565b61045161065e565b60015473ffffffffffffffffffffffffffffffffffffffff1633146104a2576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61050373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000866106a1565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab599061059d907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610aff565b600060405180830381600087803b1580156105b757600080fd5b505af11580156105cb573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced85858560405161033793929190610b4a565b61065b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016333084610722565b50565b60026000540361069a576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b60405173ffffffffffffffffffffffffffffffffffffffff83811660248301526044820183905261044491859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061076e565b60405173ffffffffffffffffffffffffffffffffffffffff84811660248301528381166044830152606482018390526107689186918216906323b872dd906084016106db565b50505050565b600061079073ffffffffffffffffffffffffffffffffffffffff841683610809565b905080516000141580156107b55750808060200190518101906107b39190610b6d565b155b15610444576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606108178383600061081e565b9392505050565b60608147101561085c576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610800565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516108859190610b8f565b60006040518083038185875af1925050503d80600081146108c2576040519150601f19603f3d011682016040523d82523d6000602084013e6108c7565b606091505b50915091506108d78683836108e1565b9695505050505050565b6060826108f6576108f182610970565b610817565b815115801561091a575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610969576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610800565b5080610817565b8051156109805780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff811681146109d657600080fd5b919050565b6000806000806000608086880312156109f357600080fd5b6109fc866109b2565b945060208601359350604086013567ffffffffffffffff80821115610a2057600080fd5b818801915088601f830112610a3457600080fd5b813581811115610a4357600080fd5b896020828501011115610a5557600080fd5b96999598505060200195606001359392505050565b600080600060608486031215610a7f57600080fd5b610a88846109b2565b95602085013595506040909401359392505050565b600060208284031215610aaf57600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015260806060830152610b3f608083018486610ab6565b979650505050505050565b838152604060208201526000610b64604083018486610ab6565b95945050505050565b600060208284031215610b7f57600080fd5b8151801515811461081757600080fd5b6000825160005b81811015610bb05760208186018101518583015201610b96565b50600092019182525091905056fea264697066735822122052ebc340fce499c22446461e21c51f7afe62e51399c68948c29cfe81b240086e64736f6c63430008150033"; + "0x60c060405234801561001057600080fd5b50604051610d87380380610d8783398101604081905261002f916100d2565b60016000558282826001600160a01b038316158061005457506001600160a01b038216155b8061006657506001600160a01b038116155b156100845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b0319169190921617905550610115915050565b80516001600160a01b03811681146100cd57600080fd5b919050565b6000806000606084860312156100e757600080fd5b6100f0846100b6565b92506100fe602085016100b6565b915061010c604085016100b6565b90509250925092565b60805160a051610c0961017e6000396000818160ff015281816101da0152818161028b015281816103c3015281816104bc0152818161056d015261063301526000818160af015281816101fc0152818161025e015281816104de01526105400152610c096000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806321e093b11161005b57806321e093b1146100fa5780635b112591146101215780635e3e9fef14610141578063743e0c9b1461015457600080fd5b806302d5c89914610082578063106e629014610097578063116191b6146100aa575b600080fd5b6100956100903660046109db565b610167565b005b6100956100a5366004610a6d565b610350565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6001546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b61009561014f3660046109db565b610449565b610095610162366004610aa0565b610619565b61016f61065e565b60015473ffffffffffffffffffffffffffffffffffffffff1633146101c0576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61022173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000866106a1565b6040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b8969bd4906102bb907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610b02565b600060405180830381600087803b1580156102d557600080fd5b505af11580156102e9573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe85858560405161033793929190610b5f565b60405180910390a26103496001600055565b5050505050565b61035861065e565b60015473ffffffffffffffffffffffffffffffffffffffff1633146103a9576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103ea73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001684846106a1565b8273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161043291815260200190565b60405180910390a26104446001600055565b505050565b61045161065e565b60015473ffffffffffffffffffffffffffffffffffffffff1633146104a2576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61050373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000866106a1565b6040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635131ab599061059d907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610b02565b600060405180830381600087803b1580156105b757600080fd5b505af11580156105cb573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced85858560405161033793929190610b5f565b61065b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016333084610722565b50565b60026000540361069a576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b60405173ffffffffffffffffffffffffffffffffffffffff83811660248301526044820183905261044491859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061076e565b60405173ffffffffffffffffffffffffffffffffffffffff84811660248301528381166044830152606482018390526107689186918216906323b872dd906084016106db565b50505050565b600061079073ffffffffffffffffffffffffffffffffffffffff841683610809565b905080516000141580156107b55750808060200190518101906107b39190610b82565b155b15610444576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024015b60405180910390fd5b60606108178383600061081e565b9392505050565b60608147101561085c576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610800565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516108859190610ba4565b60006040518083038185875af1925050503d80600081146108c2576040519150601f19603f3d011682016040523d82523d6000602084013e6108c7565b606091505b50915091506108d78683836108e1565b9695505050505050565b6060826108f6576108f182610970565b610817565b815115801561091a575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610969576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610800565b5080610817565b8051156109805780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff811681146109d657600080fd5b919050565b6000806000806000608086880312156109f357600080fd5b6109fc866109b2565b945060208601359350604086013567ffffffffffffffff811115610a1f57600080fd5b8601601f81018813610a3057600080fd5b803567ffffffffffffffff811115610a4757600080fd5b886020828401011115610a5957600080fd5b959894975060200195606001359392505050565b600080600060608486031215610a8257600080fd5b610a8b846109b2565b95602085013595506040909401359392505050565b600060208284031215610ab257600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff85166020820152836040820152608060608201526000610b54608083018486610ab9565b979650505050505050565b838152604060208201526000610b79604083018486610ab9565b95945050505050565b600060208284031215610b9457600080fd5b8151801515811461081757600080fd5b6000825160005b81811015610bc55760208186018101518583015201610bab565b50600092019182525091905056fea2646970667358221220ed25bc9308ed3d8f9b30e14ddf88cadd2d738ead8bcd8eb8fb89509e51695cd564736f6c634300081a0033"; type ZetaConnectorNativeConstructorParams = | [signer?: Signer] diff --git a/v2/typechain-types/factories/ZetaConnectorNonNative__factory.ts b/v2/typechain-types/factories/ZetaConnectorNonNative__factory.ts index 839e828c..42566148 100644 --- a/v2/typechain-types/factories/ZetaConnectorNonNative__factory.ts +++ b/v2/typechain-types/factories/ZetaConnectorNonNative__factory.ts @@ -303,7 +303,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60c060405260001960025534801561001657600080fd5b50604051610f85380380610f85833981016040819052610035916100d8565b60016000558282826001600160a01b038316158061005a57506001600160a01b038216155b8061006c57506001600160a01b038116155b1561008a5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b031916919092161790555061011b915050565b80516001600160a01b03811681146100d357600080fd5b919050565b6000806000606084860312156100ed57600080fd5b6100f6846100bc565b9250610104602085016100bc565b9150610112604085016100bc565b90509250925092565b60805160a051610deb61019a6000396000818161012601528181610216015281816103580152818161041e01528181610541015281816106630152818161077c015281816108be015281816109840152610af101526000818160d501528181610322015281816103ef0152818161088801526109550152610deb6000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80635b112591116100765780636f8b44b01161005b5780636f8b44b01461017b578063743e0c9b1461018e578063d5abeb01146101a157600080fd5b80635b112591146101485780635e3e9fef1461016857600080fd5b806302d5c899146100a8578063106e6290146100bd578063116191b6146100d057806321e093b114610121575b600080fd5b6100bb6100b6366004610bca565b6101b8565b005b6100bb6100cb366004610c59565b6104e3565b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b6001546100f79073ffffffffffffffffffffffffffffffffffffffff1681565b6100bb610176366004610bca565b61071e565b6100bb610189366004610c8c565b610a30565b6100bb61019c366004610c8c565b610abc565b6101aa60025481565b604051908152602001610118565b6101c0610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610211576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561027f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a39190610ca5565b6102ad9086610cbe565b11156102e5576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561039c57600080fd5b505af11580156103b0573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd4915061044e907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d47565b600060405180830381600087803b15801561046857600080fd5b505af115801561047c573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516104ca93929190610d92565b60405180910390a26104dc6001600055565b5050505050565b6104eb610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff16331461053c576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ce9190610ca5565b6105d89084610cbe565b1115610610576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156106a757600080fd5b505af11580156106bb573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161070791815260200190565b60405180910390a26107196001600055565b505050565b610726610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610777576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108099190610ca5565b6108139086610cbe565b111561084b576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561090257600080fd5b505af1158015610916573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506109b4907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d47565b600060405180830381600087803b1580156109ce57600080fd5b505af11580156109e2573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516104ca93929190610d92565b60015473ffffffffffffffffffffffffffffffffffffffff163314610a81576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a150565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610b4a57600080fd5b505af11580156104dc573d6000803e3d6000fd5b600260005403610b9a576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff81168114610bc557600080fd5b919050565b600080600080600060808688031215610be257600080fd5b610beb86610ba1565b945060208601359350604086013567ffffffffffffffff80821115610c0f57600080fd5b818801915088601f830112610c2357600080fd5b813581811115610c3257600080fd5b896020828501011115610c4457600080fd5b96999598505060200195606001359392505050565b600080600060608486031215610c6e57600080fd5b610c7784610ba1565b95602085013595506040909401359392505050565b600060208284031215610c9e57600080fd5b5035919050565b600060208284031215610cb757600080fd5b5051919050565b80820180821115610cf8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015260806060830152610d87608083018486610cfe565b979650505050505050565b838152604060208201526000610dac604083018486610cfe565b9594505050505056fea2646970667358221220c1247105cac785b4e05127d6e13cb72f7443d98af6ef964c579e161b48ffece664736f6c63430008150033"; + "0x60c060405260001960025534801561001657600080fd5b50604051610f9a380380610f9a833981016040819052610035916100d8565b60016000558282826001600160a01b038316158061005a57506001600160a01b038216155b8061006c57506001600160a01b038116155b1561008a5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0392831660805290821660a052600180546001600160a01b031916919092161790555061011b915050565b80516001600160a01b03811681146100d357600080fd5b919050565b6000806000606084860312156100ed57600080fd5b6100f6846100bc565b9250610104602085016100bc565b9150610112604085016100bc565b90509250925092565b60805160a051610e0061019a6000396000818161012601528181610216015281816103580152818161041e01528181610541015281816106630152818161077c015281816108be015281816109840152610af101526000818160d501528181610322015281816103ef0152818161088801526109550152610e006000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80635b112591116100765780636f8b44b01161005b5780636f8b44b01461017b578063743e0c9b1461018e578063d5abeb01146101a157600080fd5b80635b112591146101485780635e3e9fef1461016857600080fd5b806302d5c899146100a8578063106e6290146100bd578063116191b6146100d057806321e093b114610121575b600080fd5b6100bb6100b6366004610bca565b6101b8565b005b6100bb6100cb366004610c5c565b6104e3565b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100f77f000000000000000000000000000000000000000000000000000000000000000081565b6001546100f79073ffffffffffffffffffffffffffffffffffffffff1681565b6100bb610176366004610bca565b61071e565b6100bb610189366004610c8f565b610a30565b6100bb61019c366004610c8f565b610abc565b6101aa60025481565b604051908152602001610118565b6101c0610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610211576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561027f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a39190610ca8565b6102ad9086610cc1565b11156102e5576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561039c57600080fd5b505af11580156103b0573d6000803e3d6000fd5b50506040517fb8969bd400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063b8969bd4915061044e907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d4a565b600060405180830381600087803b15801561046857600080fd5b505af115801561047c573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fba96f26bdda53eb8c8ba39045dfb4ff39753fbc7a6edcf250a88e75e78d102fe8585856040516104ca93929190610da7565b60405180910390a26104dc6001600055565b5050505050565b6104eb610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff16331461053c576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ce9190610ca8565b6105d89084610cc1565b1115610610576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b1580156106a757600080fd5b505af11580156106bb573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243648360405161070791815260200190565b60405180910390a26107196001600055565b505050565b610726610b5e565b60015473ffffffffffffffffffffffffffffffffffffffff163314610777576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108099190610ca8565b6108139086610cc1565b111561084b576040517fc30436e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1e458bee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052604482018390527f00000000000000000000000000000000000000000000000000000000000000001690631e458bee90606401600060405180830381600087803b15801561090257600080fd5b505af1158015610916573d6000803e3d6000fd5b50506040517f5131ab5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169250635131ab5991506109b4907f0000000000000000000000000000000000000000000000000000000000000000908990899089908990600401610d4a565b600060405180830381600087803b1580156109ce57600080fd5b505af11580156109e2573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f7772f56296d3a5202974a45c61c9188d844ab4d6eeb18c851e4b8d5384ca6ced8585856040516104ca93929190610da7565b60015473ffffffffffffffffffffffffffffffffffffffff163314610a81576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200160405180910390a150565b6040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b158015610b4a57600080fd5b505af11580156104dc573d6000803e3d6000fd5b600260005403610b9a576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600055565b803573ffffffffffffffffffffffffffffffffffffffff81168114610bc557600080fd5b919050565b600080600080600060808688031215610be257600080fd5b610beb86610ba1565b945060208601359350604086013567ffffffffffffffff811115610c0e57600080fd5b8601601f81018813610c1f57600080fd5b803567ffffffffffffffff811115610c3657600080fd5b886020828401011115610c4857600080fd5b959894975060200195606001359392505050565b600080600060608486031215610c7157600080fd5b610c7a84610ba1565b95602085013595506040909401359392505050565b600060208284031215610ca157600080fd5b5035919050565b600060208284031215610cba57600080fd5b5051919050565b80820180821115610cfb577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff85166020820152836040820152608060608201526000610d9c608083018486610d01565b979650505050505050565b838152604060208201526000610dc1604083018486610d01565b9594505050505056fea2646970667358221220eef04aea35a49145971cb42500074f7c44d89db08a5df2b7d071494c05cc1a2a64736f6c634300081a0033"; type ZetaConnectorNonNativeConstructorParams = | [signer?: Signer] diff --git a/v2/typechain-types/factories/utils/Strings__factory.ts b/v2/typechain-types/factories/utils/Strings__factory.ts index 04c5f5a1..4c2f0040 100644 --- a/v2/typechain-types/factories/utils/Strings__factory.ts +++ b/v2/typechain-types/factories/utils/Strings__factory.ts @@ -31,7 +31,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204639ae316351c4708db317d88379ed3d2763ed254aaa5d3f2bbf651899945ef164736f6c63430008150033"; + "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220dcce55e68788eb53af38b2c11af076a07cd1e8f2cba23bcb93cbc6cafe3918ef64736f6c634300081a0033"; type StringsConstructorParams = | [signer?: Signer]