[ { "inputs": [ { "internalType": "address", "name": "moeLink", "type": "address" }, { "internalType": "address[]", "name": "sovBase", "type": "address[]" }, { "internalType": "uint256", "name": "deadlineIn", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } ], "name": "RoleAdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleRevoked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "SOV_SEAL_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "SOV_SEAL_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "burnFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "collateralization", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "getRoleMember", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleMemberCount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256[]", "name": "index", "type": "uint256[]" } ], "name": "migrate", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256[]", "name": "index", "type": "uint256[]" } ], "name": "migrateFrom", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "migrated", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "sovAmount", "type": "uint256" } ], "name": "moeUnits", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "oldAmount", "type": "uint256" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "newUnits", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "base", "type": "address" } ], "name": "oldIndexOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newAmount", "type": "uint256" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "oldUnits", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "seal", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "sealAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "seals", "outputs": [ { "internalType": "bool[]", "name": "", "type": "bool[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "moeAmount", "type": "uint256" } ], "name": "sovUnits", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "unwrappable", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "wrappable", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" } ]
60806040523480156200001157600080fd5b50604051620038713803806200387183398101604081905262000034916200062c565b82828281816040518060400160405280600681526020016520a837bbb2b960d11b8152506040518060400160405280600481526020016341504f5760e01b8152508160039081620000869190620007ac565b506004620000958282620007ac565b50620000a791506000905033620002f7565b620000b381426200088e565b60095581516001600160401b03811115620000d257620000d262000616565b604051908082528060200260200182016040528015620000fc578160200160208202803683370190505b5080516200011391600791602090910190620004d6565b5081516001600160401b0381111562000130576200013062000616565b6040519080825280602002602001820160405280156200015a578160200160208202803683370190505b5080516200017191600a9160209091019062000540565b5060005b82518110156200023c57828181518110620001945762000194620008a4565b602002602001015160078281548110620001b257620001b2620008a4565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508060086000858481518110620001fa57620001fa620008a4565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000208190555080806200023390620008ba565b91505062000175565b505050620002807f59c5589e073e79cb068a473a938b08b6e078e7ab02c16b2566189f37d4ef86fe600080516020620038518339815191526200032260201b60201c565b6200029b6000805160206200385183398151915233620002f7565b5050600c80546001600160a01b0319166001600160a01b0392909216919091179055620002cf620002c93390565b6200036d565b5050600e80546001600160a01b0319166001600160a01b0392909216919091179055620008d6565b620003038282620003bf565b60008281526006602052604090206200031d908262000464565b505050565b600082815260056020526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b600d80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60008281526005602090815260408083206001600160a01b038516845290915290205460ff16620004605760008281526005602090815260408083206001600160a01b03851684529091529020805460ff191660011790556200041f3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b60006200047b836001600160a01b03841662000484565b90505b92915050565b6000818152600183016020526040812054620004cd575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556200047e565b5060006200047e565b8280548282559060005260206000209081019282156200052e579160200282015b828111156200052e57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190620004f7565b506200053c929150620005e2565b5090565b82805482825590600052602060002090601f016020900481019282156200052e5791602002820160005b83821115620005a957835183826101000a81548160ff02191690831515021790555092602001926001016020816000010492830192600103026200056a565b8015620005d85782816101000a81549060ff0219169055600101602081600001049283019260010302620005a9565b50506200053c9291505b5b808211156200053c5760008155600101620005e3565b80516001600160a01b03811681146200061157600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b6000806000606084860312156200064257600080fd5b6200064d84620005f9565b602085810151919450906001600160401b03808211156200066d57600080fd5b818701915087601f8301126200068257600080fd5b81518181111562000697576200069762000616565b8060051b604051601f19603f83011681018181108582111715620006bf57620006bf62000616565b60405291825284820192508381018501918a831115620006de57600080fd5b938501935b828510156200070757620006f785620005f9565b84529385019392850192620006e3565b809750505050505050604084015190509250925092565b600181811c908216806200073357607f821691505b6020821081036200075457634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200031d57600081815260208120601f850160051c81016020861015620007835750805b601f850160051c820191505b81811015620007a4578281556001016200078f565b505050505050565b81516001600160401b03811115620007c857620007c862000616565b620007e081620007d984546200071e565b846200075a565b602080601f831160018114620008185760008415620007ff5750858301515b600019600386901b1c1916600185901b178555620007a4565b600085815260208120601f198616915b82811015620008495788860151825594840194600190910190840162000828565b5085821015620008685787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b808201808211156200047e576200047e62000878565b634e487b7160e01b600052603260045260246000fd5b600060018201620008cf57620008cf62000878565b5060010190565b612f6b80620008e66000396000f3fe608060405234801561001057600080fd5b506004361061025e5760003560e01c806370a082311161014657806396bb2131116100c3578063ca15c87311610087578063ca15c8731461055d578063d547741f14610570578063d91d2f6014610583578063dd62ed3e1461058b578063f2fde38b1461059e578063f544c35e146105b157600080fd5b806396bb2131146104f5578063a217fddf14610508578063a457c2d714610510578063a9059cbb14610523578063b68041291461053657600080fd5b806386fe212d1161010a57806386fe212d1461048f5780638da5cb5b146104a25780639010d07c146104c757806391d14854146104da57806395d89b41146104ed57600080fd5b806370a0823114610411578063715018a61461043a57806376d84454146104425780637766912d1461046957806379cc67901461047c57600080fd5b8063248a9ca3116101df57806339444ffe116101a357806339444ffe1461039f57806339509351146103b257806340c10f19146103c557806342966c68146103d857806352053329146103eb5780636c9efc91146103fe57600080fd5b8063248a9ca3146103345780632c678c64146103575780632f2ff15d1461035f578063313ce5671461037257806336568abe1461038c57600080fd5b80630c7fa13e116102265780630c7fa13e146102e957806315e5f133146102f357806318160ddd146103065780631eaad2d41461030e57806323b872dd1461032157600080fd5b806301ffc9a71461026357806306fdde031461028b578063080e1301146102a057806308560eca146102c1578063095ea7b3146102d6575b600080fd5b610276610271366004612883565b6105da565b60405190151581526020015b60405180910390f35b6102936105eb565b60405161028291906128d1565b6102b36102ae3660046129b5565b61067d565b604051908152602001610282565b6102c9610691565b60405161028291906129fc565b6102766102e4366004612a59565b610708565b6102f1610720565b005b6102b3610301366004612a83565b610755565b6002546102b3565b6102b361031c366004612a83565b610917565b61027661032f366004612a9c565b610a96565b6102b3610342366004612a83565b60009081526005602052604090206001015490565b600b546102b3565b6102f161036d366004612ad8565b610aba565b61037a610ae4565b60405160ff9091168152602001610282565b6102f161039a366004612ad8565b610b57565b6102b36103ad366004612b04565b610bda565b6102766103c0366004612a59565b610dd3565b6102f16103d3366004612a59565b610df5565b6102f16103e6366004612a83565b610eb8565b6102b36103f9366004612a83565b610f4b565b6102b361040c366004612b04565b6110ec565b6102b361041f366004612b26565b6001600160a01b031660009081526020819052604090205490565b6102f16112a0565b6102b37f59c5589e073e79cb068a473a938b08b6e078e7ab02c16b2566189f37d4ef86fe81565b6102b3610477366004612b41565b6112b4565b6102f161048a366004612a59565b6112c9565b6102f161049d366004612a83565b61135d565b600d546001600160a01b03165b6040516001600160a01b039091168152602001610282565b6104af6104d5366004612b04565b611390565b6102766104e8366004612ad8565b6113a8565b6102936113d3565b6102b3610503366004612a83565b6113e2565b6102b3600081565b61027661051e366004612a59565b6114d6565b610276610531366004612a59565b611551565b6102b37fe1322164d2a9c594e09927ac212ba43210d25e7c9efc459689fb7b6107c895b181565b6102b361056b366004612a83565b61155f565b6102f161057e366004612ad8565b611576565b6102b361159b565b6102b3610599366004612b98565b611698565b6102f16105ac366004612b26565b6116c3565b6102b36105bf366004612b26565b6001600160a01b031660009081526008602052604090205490565b60006105e582611739565b92915050565b6060600380546105fa90612bc2565b80601f016020809104026020016040519081016040528092919081815260200182805461062690612bc2565b80156106735780601f1061064857610100808354040283529160200191610673565b820191906000526020600020905b81548152906001019060200180831161065657829003601f168201915b5050505050905090565b600061068a338484611779565b9392505050565b6060600a80548060200260200160405190810160405280929190818152602001828054801561067357602002820191906000526020600020906000905b825461010083900a900460ff1615158152602060019283018181049485019490930390920291018084116106ce5790505050505050905090565b600033610716818585611a0e565b5060019392505050565b7f59c5589e073e79cb068a473a938b08b6e078e7ab02c16b2566189f37d4ef86fe61074a81611b32565b610752611b3c565b50565b600c546040805163313ce56760e01b815290516000926001600160a01b03169163313ce5679160048083019260209291908290030181865afa15801561079f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c39190612bfc565b60ff166107ce610ae4565b60ff161061087457600c60009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610829573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084d9190612bfc565b610855610ae4565b61085f9190612c35565b61086a90600a612d32565b6105e59083612d57565b61087c610ae4565b600c60009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f39190612bfc565b6108fd9190612c35565b61090890600a612d32565b6105e59083612d79565b919050565b600c546040805163313ce56760e01b815290516000926001600160a01b03169163313ce5679160048083019260209291908290030181865afa158015610961573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109859190612bfc565b60ff16610990610ae4565b60ff1610610a1757600c60009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109eb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0f9190612bfc565b6108f3610ae4565b610a1f610ae4565b600c60009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a72573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108559190612bfc565b600033610aa4858285611b9a565b610aaf858585611c14565b506001949350505050565b600082815260056020526040902060010154610ad581611b32565b610adf8383611db8565b505050565b600e546040805163313ce56760e01b815290516000926001600160a01b03169163313ce5679160048083019260209291908290030181865afa158015610b2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b529190612bfc565b905090565b6001600160a01b0381163314610bcc5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b610bd68282611dda565b5050565b600060078281548110610bef57610bef612d90565b600091825260209182902001546040805163313ce56760e01b815290516001600160a01b039092169263313ce567926004808401938290030181865afa158015610c3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c619190612bfc565b60ff16610c6c610ae4565b60ff1610610d275760078281548110610c8757610c87612d90565b600091825260209182902001546040805163313ce56760e01b815290516001600160a01b039092169263313ce567926004808401938290030181865afa158015610cd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf99190612bfc565b610d01610ae4565b610d0b9190612c35565b610d1690600a612d32565b610d209084612d57565b90506105e5565b610d2f610ae4565b60078381548110610d4257610d42612d90565b600091825260209182902001546040805163313ce56760e01b815290516001600160a01b039092169263313ce567926004808401938290030181865afa158015610d90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db49190612bfc565b610dbe9190612c35565b610dc990600a612d32565b610d209084612d79565b600033610716818585610de68383611698565b610df09190612da6565b611a0e565b610dfd611dfc565b600e546001600160a01b03166323b872dd610e20600d546001600160a01b031690565b30610e2a85610f4b565b6040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303816000875af1158015610e7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea29190612db9565b610eae57610eae612ddb565b610bd68282611e56565b610ec181611f15565b600e546001600160a01b031663a9059cbb33610edc846113e2565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015610f27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd69190612db9565b600e546040516370a0823160e01b815230600482015260009182916001600160a01b03909116906370a0823190602401602060405180830381865afa158015610f98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fbc9190612df1565b90506000306001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ffe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110229190612df1565b61102c9085612da6565b9050818111156110e257600e546000906001600160a01b03166370a0823161105c600d546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa1580156110a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c49190612df1565b90506110d9816110d48585612e0a565b611f1f565b95945050505050565b5060009392505050565b60006007828154811061110157611101612d90565b600091825260209182902001546040805163313ce56760e01b815290516001600160a01b039092169263313ce567926004808401938290030181865afa15801561114f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111739190612bfc565b60ff1661117e610ae4565b60ff1610611213576007828154811061119957611199612d90565b600091825260209182902001546040805163313ce56760e01b815290516001600160a01b039092169263313ce567926004808401938290030181865afa1580156111e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120b9190612bfc565b610db4610ae4565b61121b610ae4565b6007838154811061122e5761122e612d90565b600091825260209182902001546040805163313ce56760e01b815290516001600160a01b039092169263313ce567926004808401938290030181865afa15801561127c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d019190612bfc565b6112a8611dfc565b6112b26000611f35565b565b60006112c1848484611779565b949350505050565b6112d38282611f87565b600e546001600160a01b031663a9059cbb836112ee846113e2565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611339573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610adf9190612db9565b7f59c5589e073e79cb068a473a938b08b6e078e7ab02c16b2566189f37d4ef86fe61138781611b32565b610bd682611f9c565b600082815260066020526040812061068a9083611fdd565b60009182526005602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6060600480546105fa90612bc2565b600e546040516370a0823160e01b815230600482015260009182916001600160a01b03909116906370a0823190602401602060405180830381865afa15801561142f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114539190612df1565b90506000306001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611495573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b99190612df1565b6114c39085612da6565b905080156110e2576112c1848383611fe9565b600033816114e48286611698565b9050838110156115445760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610bc3565b610aaf8286868403611a0e565b600033610716818585611c14565b60008181526006602052604081206105e5906120d3565b60008281526005602052604090206001015461159181611b32565b610adf8383611dda565b600e546040516370a0823160e01b815230600482015260009182916001600160a01b03909116906370a0823190602401602060405180830381865afa1580156115e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061160c9190612df1565b90506000306001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561164e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116729190612df1565b9050801561168f57611688620f42408383611fe9565b9250505090565b60009250505090565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6116cb611dfc565b6001600160a01b0381166117305760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610bc3565b61075281611f35565b60006001600160e01b031982166336372b0760e01b148061176a57506001600160e01b0319821663a219a02560e01b145b806105e557506105e5826120dd565b60408051600180825281830190925260009182919060208083019080368337019050509050826001815181106117b1576117b1612d90565b6020026020010151816000815181106117cc576117cc612d90565b60200260200101818152505060006117fe85856000815181106117f1576117f1612d90565b60200260200101516110ec565b9050600061182787878760008151811061181a5761181a612d90565b60200260200101516120e8565b905081811461183857611838612ddb565b600061184383610755565b90506000600c60009054906101000a90046001600160a01b03166001600160a01b03166339444ffe838760008151811061187f5761187f612d90565b60200260200101516040518363ffffffff1660e01b81526004016118ad929190918252602082015260400190565b602060405180830381865afa1580156118ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ee9190612df1565b600c54604051637766912d60e01b81529192506000916001600160a01b0390911690637766912d90611928908d9086908b90600401612e1d565b6020604051808303816000875af1158015611947573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196b9190612df1565b600c546040516323b872dd60e01b81526001600160a01b038d81166004830152306024830152604482018490529293509116906323b872dd906064016020604051808303816000875af11580156119c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ea9190612db9565b6119f6576119f6612ddb565b611a008a86611e56565b509298975050505050505050565b6001600160a01b038316611a705760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610bc3565b6001600160a01b038216611ad15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610bc3565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b610752813361226d565b60005b600a54811015610752576001600a8281548110611b5e57611b5e612d90565b90600052602060002090602091828204019190066101000a81548160ff0219169083151502179055508080611b9290612e7a565b915050611b3f565b6000611ba68484611698565b90506000198114611c0e5781811015611c015760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610bc3565b611c0e8484848403611a0e565b50505050565b6001600160a01b038316611c785760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610bc3565b6001600160a01b038216611cda5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610bc3565b6001600160a01b03831660009081526020819052604090205481811015611d525760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610bc3565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3611c0e565b611dc282826122c6565b6000828152600660205260409020610adf908261234c565b611de48282612361565b6000828152600660205260409020610adf90826123c8565b600d546001600160a01b031633146112b25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610bc3565b6001600160a01b038216611eac5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610bc3565b8060026000828254611ebe9190612da6565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b61075233826123dd565b6000818310611f2e578161068a565b5090919050565b600d80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b611f92823383611b9a565b610bd682826123dd565b6001600a8281548110611fb157611fb1612d90565b90600052602060002090602091828204019190066101000a81548160ff02191690831515021790555050565b600061068a838361250f565b60008080600019858709858702925082811083820303915050806000036120235783828161201957612019612d41565b049250505061068a565b80841161206a5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401610bc3565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b60006105e5825490565b60006105e582612539565b6000600a82815481106120fd576120fd612d90565b90600052602060002090602091828204019190069054906101000a900460ff161561215d5760405162461bcd60e51b815260206004820152601060248201526f1b5a59dc985d1a5bdb881cd9585b195960821b6044820152606401610bc3565b60095442908111156121a35760405162461bcd60e51b815260206004820152600f60248201526e191958591b1a5b99481c185cdcd959608a1b6044820152606401610bc3565b600783815481106121b6576121b6612d90565b60009182526020909120015460405163079cc67960e41b81526001600160a01b03878116600483015260248201879052909116906379cc679090604401600060405180830381600087803b15801561220d57600080fd5b505af1158015612221573d6000803e3d6000fd5b505050506000841180612232575083155b61223e5761223e612ddb565b600061224a85856110ec565b905080600b600082825461225e9190612da6565b90915550909695505050505050565b61227782826113a8565b610bd6576122848161255e565b61228f836020612570565b6040516020016122a0929190612e93565b60408051601f198184030181529082905262461bcd60e51b8252610bc3916004016128d1565b6122d082826113a8565b610bd65760008281526005602090815260408083206001600160a01b03851684529091529020805460ff191660011790556123083390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600061068a836001600160a01b03841661270c565b61236b82826113a8565b15610bd65760008281526005602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600061068a836001600160a01b03841661275b565b6001600160a01b03821661243d5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610bc3565b6001600160a01b038216600090815260208190526040902054818110156124b15760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610bc3565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b600082600001828154811061252657612526612d90565b9060005260206000200154905092915050565b60006001600160e01b03198216635a05180f60e01b14806105e557506105e58261284e565b60606105e56001600160a01b03831660145b6060600061257f836002612d79565b61258a906002612da6565b67ffffffffffffffff8111156125a2576125a2612904565b6040519080825280601f01601f1916602001820160405280156125cc576020820181803683370190505b509050600360fc1b816000815181106125e7576125e7612d90565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061261657612616612d90565b60200101906001600160f81b031916908160001a905350600061263a846002612d79565b612645906001612da6565b90505b60018111156126bd576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061267957612679612d90565b1a60f81b82828151811061268f5761268f612d90565b60200101906001600160f81b031916908160001a90535060049490941c936126b681612f08565b9050612648565b50831561068a5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610bc3565b6000818152600183016020526040812054612753575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556105e5565b5060006105e5565b6000818152600183016020526040812054801561284457600061277f600183612e0a565b855490915060009061279390600190612e0a565b90508181146127f85760008660000182815481106127b3576127b3612d90565b90600052602060002001549050808760000184815481106127d6576127d6612d90565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061280957612809612f1f565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506105e5565b60009150506105e5565b60006001600160e01b03198216637965db0b60e01b14806105e557506301ffc9a760e01b6001600160e01b03198316146105e5565b60006020828403121561289557600080fd5b81356001600160e01b03198116811461068a57600080fd5b60005b838110156128c85781810151838201526020016128b0565b50506000910152565b60208152600082518060208401526128f08160408501602087016128ad565b601f01601f19169190910160400192915050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261292b57600080fd5b8135602067ffffffffffffffff8083111561294857612948612904565b8260051b604051601f19603f8301168101818110848211171561296d5761296d612904565b60405293845285810183019383810192508785111561298b57600080fd5b83870191505b848210156129aa57813583529183019190830190612991565b979650505050505050565b600080604083850312156129c857600080fd5b82359150602083013567ffffffffffffffff8111156129e657600080fd5b6129f28582860161291a565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612a36578351151583529284019291840191600101612a18565b50909695505050505050565b80356001600160a01b038116811461091257600080fd5b60008060408385031215612a6c57600080fd5b612a7583612a42565b946020939093013593505050565b600060208284031215612a9557600080fd5b5035919050565b600080600060608486031215612ab157600080fd5b612aba84612a42565b9250612ac860208501612a42565b9150604084013590509250925092565b60008060408385031215612aeb57600080fd5b82359150612afb60208401612a42565b90509250929050565b60008060408385031215612b1757600080fd5b50508035926020909101359150565b600060208284031215612b3857600080fd5b61068a82612a42565b600080600060608486031215612b5657600080fd5b612b5f84612a42565b925060208401359150604084013567ffffffffffffffff811115612b8257600080fd5b612b8e8682870161291a565b9150509250925092565b60008060408385031215612bab57600080fd5b612bb483612a42565b9150612afb60208401612a42565b600181811c90821680612bd657607f821691505b602082108103612bf657634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215612c0e57600080fd5b815160ff8116811461068a57600080fd5b634e487b7160e01b600052601160045260246000fd5b60ff82811682821603908111156105e5576105e5612c1f565b600181815b80851115612c89578160001904821115612c6f57612c6f612c1f565b80851615612c7c57918102915b93841c9390800290612c53565b509250929050565b600082612ca0575060016105e5565b81612cad575060006105e5565b8160018114612cc35760028114612ccd57612ce9565b60019150506105e5565b60ff841115612cde57612cde612c1f565b50506001821b6105e5565b5060208310610133831016604e8410600b8410161715612d0c575081810a6105e5565b612d168383612c4e565b8060001904821115612d2a57612d2a612c1f565b029392505050565b600061068a60ff841683612c91565b634e487b7160e01b600052601260045260246000fd5b600082612d7457634e487b7160e01b600052601260045260246000fd5b500490565b80820281158282048414176105e5576105e5612c1f565b634e487b7160e01b600052603260045260246000fd5b808201808211156105e5576105e5612c1f565b600060208284031215612dcb57600080fd5b8151801515811461068a57600080fd5b634e487b7160e01b600052600160045260246000fd5b600060208284031215612e0357600080fd5b5051919050565b818103818111156105e5576105e5612c1f565b6001600160a01b038416815260208082018490526060604083018190528351908301819052600091848101916080850190845b81811015612e6c57845183529383019391830191600101612e50565b509098975050505050505050565b600060018201612e8c57612e8c612c1f565b5060010190565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612ecb8160178501602088016128ad565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612efc8160288401602088016128ad565b01602801949350505050565b600081612f1757612f17612c1f565b506000190190565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220e9d01cac105dd2b021b80313addcb5e132c3eea86870d5afb5e6e80de237198164736f6c63430008130033e1322164d2a9c594e09927ac212ba43210d25e7c9efc459689fb7b6107c895b100000000000000000000000028ada872f3ded545a275c3802b731f44d1883f7300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000007861f800000000000000000000000000000000000000000000000000000000000000009000000000000000000000000411c1ab1e4ccd16a0b6556c625caf5f556580995000000000000000000000000961359b67142d4fc86b65a50fdc2b006a0439ca600000000000000000000000042fa90abba2acd3b064dd3f29f99123fc68fdde3000000000000000000000000a63fba872931588e70a2cb4aaf94c34b78e17922000000000000000000000000b57ef0d6d4765cebd70222c9c92f0a789174b5e4000000000000000000000000bf2f5179e3159e6860ddbfc6d6ce83c3c586cf500000000000000000000000007a5f2225a501039cedd5cad2ef5e528ab00b67900000000000000000000000005ea0afe9002c76956a3fc70df36ad2e5ccf4e3da000000000000000000000000fecbb287042f57bac758ec606c5aed3a040abef8