[ { "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": "prefix", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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" } ]
60806040523480156200001157600080fd5b50604051620037c6380380620037c683398101604081905262000034916200064e565b60405180604001604052806005815260200164614c4f4b4960d81b81525083838382828281816040518060400160405280600681526020016520a837bbb2b960d11b8152508981600390816200008b9190620007ce565b5060046200009a8282620007ce565b50620000ac9150600090503362000301565b620000b88142620008b0565b60095581516001600160401b03811115620000d757620000d762000638565b60405190808252806020026020018201604052801562000101578160200160208202803683370190505b5080516200011891600791602090910190620004f8565b5081516001600160401b0381111562000135576200013562000638565b6040519080825280602002602001820160405280156200015f578160200160208202803683370190505b5080516200017691600a9160209091019062000562565b5060005b82518110156200024157828181518110620001995762000199620008c6565b602002602001015160078281548110620001b757620001b7620008c6565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508060086000858481518110620001ff57620001ff620008c6565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000208190555080806200023890620008dc565b9150506200017a565b505050620002857f59c5589e073e79cb068a473a938b08b6e078e7ab02c16b2566189f37d4ef86fe600080516020620037a68339815191526200034460201b60201c565b620002a0600080516020620037a68339815191523362000301565b5050600c80546001600160a01b0319166001600160a01b0392909216919091179055620002d4620002ce3390565b6200038f565b5050600e80546001600160a01b0319166001600160a01b039290921691909117905550620008f892505050565b620003188282620003e160201b620014821760201c565b60008281526006602090815260409091206200033f9183906200150862000486821b17901c565b505050565b600082815260056020526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b600d80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60008281526005602090815260408083206001600160a01b038516845290915290205460ff16620004825760008281526005602090815260408083206001600160a01b03851684529091529020805460ff19166001179055620004413390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b60006200049d836001600160a01b038416620004a6565b90505b92915050565b6000818152600183016020526040812054620004ef57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620004a0565b506000620004a0565b82805482825590600052602060002090810192821562000550579160200282015b828111156200055057825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019062000519565b506200055e92915062000604565b5090565b82805482825590600052602060002090601f01602090048101928215620005505791602002820160005b83821115620005cb57835183826101000a81548160ff02191690831515021790555092602001926001016020816000010492830192600103026200058c565b8015620005fa5782816101000a81549060ff0219169055600101602081600001049283019260010302620005cb565b50506200055e9291505b5b808211156200055e576000815560010162000605565b80516001600160a01b03811681146200063357600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b6000806000606084860312156200066457600080fd5b6200066f846200061b565b602085810151919450906001600160401b03808211156200068f57600080fd5b818701915087601f830112620006a457600080fd5b815181811115620006b957620006b962000638565b8060051b604051601f19603f83011681018181108582111715620006e157620006e162000638565b60405291825284820192508381018501918a8311156200070057600080fd5b938501935b82851015620007295762000719856200061b565b8452938501939285019262000705565b809750505050505050604084015190509250925092565b600181811c908216806200075557607f821691505b6020821081036200077657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200033f57600081815260208120601f850160051c81016020861015620007a55750805b601f850160051c820191505b81811015620007c657828155600101620007b1565b505050505050565b81516001600160401b03811115620007ea57620007ea62000638565b6200080281620007fb845462000740565b846200077c565b602080601f8311600181146200083a5760008415620008215750858301515b600019600386901b1c1916600185901b178555620007c6565b600085815260208120601f198616915b828110156200086b578886015182559484019460019091019084016200084a565b50858210156200088a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b80820180821115620004a057620004a06200089a565b634e487b7160e01b600052603260045260246000fd5b600060018201620008f157620008f16200089a565b5060010190565b612e9e80620009086000396000f3fe608060405234801561001057600080fd5b50600436106102535760003560e01c806370a082311161014657806395d89b41116100c3578063ca15c87311610087578063ca15c87314610517578063d547741f1461052a578063d91d2f601461053d578063dd62ed3e14610545578063f2fde38b14610558578063f544c35e1461056b57600080fd5b806395d89b41146104ba578063a217fddf146104c2578063a457c2d7146104ca578063a9059cbb146104dd578063b6804129146104f057600080fd5b806379cc67901161010a57806379cc67901461045457806386fe212d146104675780638da5cb5b1461047a5780639010d07c1461049457806391d14854146104a757600080fd5b806370a08231146103f3578063715018a61461041c57806375dadb321461042457806376d844541461042c5780637766912d1461044157600080fd5b8063248a9ca3116101d457806339444ffe1161019857806339444ffe1461039457806339509351146103a757806340c10f19146103ba57806342966c68146103cd5780636c9efc91146103e057600080fd5b8063248a9ca3146103295780632c678c641461034c5780632f2ff15d14610354578063313ce5671461036757806336568abe1461038157600080fd5b80630c7fa13e1161021b5780630c7fa13e146102de57806315e5f133146102e857806318160ddd146102fb5780631eaad2d41461030357806323b872dd1461031657600080fd5b806301ffc9a71461025857806306fdde0314610280578063080e13011461029557806308560eca146102b6578063095ea7b3146102cb575b600080fd5b61026b610266366004612741565b610594565b60405190151581526020015b60405180910390f35b6102886105a5565b604051610277919061278f565b6102a86102a3366004612873565b610637565b604051908152602001610277565b6102be61064b565b60405161027791906128ba565b61026b6102d9366004612917565b6106c2565b6102e66106da565b005b6102a86102f6366004612941565b6106fd565b6002546102a8565b6102a8610311366004612941565b6108bf565b61026b61032436600461295a565b610a3e565b6102a8610337366004612941565b60009081526005602052604090206001015490565b600b546102a8565b6102e6610362366004612996565b610a62565b61036f610a8c565b60405160ff9091168152602001610277565b6102e661038f366004612996565b610aff565b6102a86103a23660046129c2565b610b82565b61026b6103b5366004612917565b610d7b565b6102e66103c8366004612917565b610d9d565b6102e66103db366004612941565b610e49565b6102a86103ee3660046129c2565b610ecd565b6102a86104013660046129e4565b6001600160a01b031660009081526020819052604090205490565b6102e6611081565b6102a8611095565b6102a8600080516020612e4983398151915281565b6102a861044f3660046129ff565b611103565b6102e6610462366004612917565b611118565b6102e6610475366004612941565b61119d565b600d546001600160a01b03165b6040516102779190612a56565b6104876104a23660046129c2565b6111be565b61026b6104b5366004612996565b6111d6565b610288611201565b6102a8600081565b61026b6104d8366004612917565b611210565b61026b6104eb366004612917565b61128b565b6102a87fe1322164d2a9c594e09927ac212ba43210d25e7c9efc459689fb7b6107c895b181565b6102a8610525366004612941565b611299565b6102e6610538366004612996565b6112b0565b6102a86112d5565b6102a8610553366004612a6a565b6113e1565b6102e66105663660046129e4565b61140c565b6102a86105793660046129e4565b6001600160a01b031660009081526008602052604090205490565b600061059f8261151d565b92915050565b6060600380546105b490612a94565b80601f01602080910402602001604051908101604052809291908181526020018280546105e090612a94565b801561062d5780601f106106025761010080835404028352916020019161062d565b820191906000526020600020905b81548152906001019060200180831161061057829003601f168201915b5050505050905090565b600061064433848461155d565b9392505050565b6060600a80548060200260200160405190810160405280929190818152602001828054801561062d57602002820191906000526020600020906000905b825461010083900a900460ff1615158152602060019283018181049485019490930390920291018084116106885790505050505050905090565b6000336106d08185856117eb565b5060019392505050565b600080516020612e498339815191526106f28161190f565b6106fa611919565b50565b600c546040805163313ce56760e01b815290516000926001600160a01b03169163313ce5679160048083019260209291908290030181865afa158015610747573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076b9190612ace565b60ff16610776610a8c565b60ff161061081c57600c60009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f59190612ace565b6107fd610a8c565b6108079190612b07565b61081290600a612c04565b61059f9083612c13565b610824610a8c565b600c60009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610877573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089b9190612ace565b6108a59190612b07565b6108b090600a612c04565b61059f9083612c35565b919050565b600c546040805163313ce56760e01b815290516000926001600160a01b03169163313ce5679160048083019260209291908290030181865afa158015610909573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061092d9190612ace565b60ff16610938610a8c565b60ff16106109bf57600c60009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610993573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b79190612ace565b61089b610a8c565b6109c7610a8c565b600c60009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a1a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107fd9190612ace565b600033610a4c858285611977565b610a578585856119f1565b506001949350505050565b600082815260056020526040902060010154610a7d8161190f565b610a878383611b83565b505050565b600e546040805163313ce56760e01b815290516000926001600160a01b03169163313ce5679160048083019260209291908290030181865afa158015610ad6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610afa9190612ace565b905090565b6001600160a01b0381163314610b745760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b610b7e8282611ba5565b5050565b600060078281548110610b9757610b97612c4c565b600091825260209182902001546040805163313ce56760e01b815290516001600160a01b039092169263313ce567926004808401938290030181865afa158015610be5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c099190612ace565b60ff16610c14610a8c565b60ff1610610ccf5760078281548110610c2f57610c2f612c4c565b600091825260209182902001546040805163313ce56760e01b815290516001600160a01b039092169263313ce567926004808401938290030181865afa158015610c7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca19190612ace565b610ca9610a8c565b610cb39190612b07565b610cbe90600a612c04565b610cc89084612c13565b905061059f565b610cd7610a8c565b60078381548110610cea57610cea612c4c565b600091825260209182902001546040805163313ce56760e01b815290516001600160a01b039092169263313ce567926004808401938290030181865afa158015610d38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5c9190612ace565b610d669190612b07565b610d7190600a612c04565b610cc89084612c35565b6000336106d0818585610d8e83836113e1565b610d989190612c62565b6117eb565b610da5611bc7565b600e546001600160a01b03166323b872dd610dc8600d546001600160a01b031690565b30610dd285611c21565b6040518463ffffffff1660e01b8152600401610df093929190612c75565b6020604051808303816000875af1158015610e0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e339190612c99565b610e3f57610e3f612cbb565b610b7e8282611dbc565b610e5281611e69565b600e546001600160a01b031663a9059cbb33610e6d84611e73565b6040518363ffffffff1660e01b8152600401610e8a929190612cd1565b6020604051808303816000875af1158015610ea9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7e9190612c99565b600060078281548110610ee257610ee2612c4c565b600091825260209182902001546040805163313ce56760e01b815290516001600160a01b039092169263313ce567926004808401938290030181865afa158015610f30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f549190612ace565b60ff16610f5f610a8c565b60ff1610610ff45760078281548110610f7a57610f7a612c4c565b600091825260209182902001546040805163313ce56760e01b815290516001600160a01b039092169263313ce567926004808401938290030181865afa158015610fc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fec9190612ace565b610d5c610a8c565b610ffc610a8c565b6007838154811061100f5761100f612c4c565b600091825260209182902001546040805163313ce56760e01b815290516001600160a01b039092169263313ce567926004808401938290030181865afa15801561105d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca99190612ace565b611089611bc7565b6110936000611f76565b565b600e5460408051633aed6d9960e11b815290516000926001600160a01b0316916375dadb329160048083019260209291908290030181865afa1580156110df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610afa9190612cea565b600061111084848461155d565b949350505050565b6111228282611fc8565b600e546001600160a01b031663a9059cbb8361113d84611e73565b6040518363ffffffff1660e01b815260040161115a929190612cd1565b6020604051808303816000875af1158015611179573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a879190612c99565b600080516020612e498339815191526111b58161190f565b610b7e82611fdd565b6000828152600660205260408120610644908361201e565b60009182526005602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6060600480546105b490612a94565b6000338161121e82866113e1565b90508381101561127e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610b6b565b610a5782868684036117eb565b6000336106d08185856119f1565b600081815260066020526040812061059f9061202a565b6000828152600560205260409020600101546112cb8161190f565b610a878383611ba5565b600e546040516370a0823160e01b815260009182916001600160a01b03909116906370a082319061130a903090600401612a56565b602060405180830381865afa158015611327573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061134b9190612cea565b90506000306001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561138d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113b19190612cea565b905080156113d857806113c783620f4240612c35565b6113d19190612c13565b9250505090565b60009250505090565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b611414611bc7565b6001600160a01b0381166114795760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b6b565b6106fa81611f76565b61148c82826111d6565b610b7e5760008281526005602090815260408083206001600160a01b03851684529091529020805460ff191660011790556114c43390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610644836001600160a01b038416612034565b60006001600160e01b031982166336372b0760e01b148061154e57506001600160e01b0319821663a219a02560e01b145b8061059f575061059f82612083565b604080516001808252818301909252600091829190602080830190803683370190505090508260018151811061159557611595612c4c565b6020026020010151816000815181106115b0576115b0612c4c565b60200260200101818152505060006115e285856000815181106115d5576115d5612c4c565b6020026020010151610ecd565b9050600061160b8787876000815181106115fe576115fe612c4c565b602002602001015161208e565b905081811461161c5761161c612cbb565b6000611627836106fd565b90506000600c60009054906101000a90046001600160a01b03166001600160a01b03166339444ffe838760008151811061166357611663612c4c565b60200260200101516040518363ffffffff1660e01b8152600401611691929190918252602082015260400190565b602060405180830381865afa1580156116ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116d29190612cea565b600c54604051637766912d60e01b81529192506000916001600160a01b0390911690637766912d9061170c908d9086908b90600401612d03565b6020604051808303816000875af115801561172b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061174f9190612cea565b600c546040516323b872dd60e01b81529192506001600160a01b0316906323b872dd90611784908d9030908690600401612c75565b6020604051808303816000875af11580156117a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c79190612c99565b6117d3576117d3612cbb565b6117dd8a86611dbc565b509298975050505050505050565b6001600160a01b03831661184d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b6b565b6001600160a01b0382166118ae5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b6b565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6106fa8133612211565b60005b600a548110156106fa576001600a828154811061193b5761193b612c4c565b90600052602060002090602091828204019190066101000a81548160ff021916908315150217905550808061196f90612d60565b91505061191c565b600061198384846113e1565b905060001981146119eb57818110156119de5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610b6b565b6119eb84848484036117eb565b50505050565b6001600160a01b038316611a555760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b6b565b6001600160a01b038216611ab75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b6b565b6001600160a01b03831660009081526020819052604090205481811015611b2f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610b6b565b6001600160a01b0384811660008181526020818152604080832087870390559387168083529184902080548701905592518581529092600080516020612e29833981519152910160405180910390a36119eb565b611b8d8282611482565b6000828152600660205260409020610a879082611508565b611baf828261226a565b6000828152600660205260409020610a8790826122d1565b600d546001600160a01b031633146110935760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b6b565b600e546040516370a0823160e01b815260009182916001600160a01b03909116906370a0823190611c56903090600401612a56565b602060405180830381865afa158015611c73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c979190612cea565b90506000306001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cfd9190612cea565b611d079085612c62565b905081811115611db257600e546000906001600160a01b03166370a08231611d37600d546001600160a01b031690565b6040518263ffffffff1660e01b8152600401611d539190612a56565b602060405180830381865afa158015611d70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d949190612cea565b9050611da981611da48585612d79565b6122e6565b95945050505050565b5060009392505050565b6001600160a01b038216611e125760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610b6b565b8060026000828254611e249190612c62565b90915550506001600160a01b03821660008181526020818152604080832080548601905551848152600080516020612e29833981519152910160405180910390a35050565b6106fa33826122fc565b600e546040516370a0823160e01b815260009182916001600160a01b03909116906370a0823190611ea8903090600401612a56565b602060405180830381865afa158015611ec5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee99190612cea565b90506000306001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f4f9190612cea565b611f599085612c62565b90508015611db25780611f6c8386612c35565b6111109190612c13565b600d80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b611fd3823383611977565b610b7e82826122fc565b6001600a8281548110611ff257611ff2612c4c565b90600052602060002090602091828204019190066101000a81548160ff02191690831515021790555050565b6000610644838361241c565b600061059f825490565b600081815260018301602052604081205461207b5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561059f565b50600061059f565b600061059f82612446565b6000600a82815481106120a3576120a3612c4c565b90600052602060002090602091828204019190069054906101000a900460ff16156121035760405162461bcd60e51b815260206004820152601060248201526f1b5a59dc985d1a5bdb881cd9585b195960821b6044820152606401610b6b565b60095442908111156121495760405162461bcd60e51b815260206004820152600f60248201526e191958591b1a5b99481c185cdcd959608a1b6044820152606401610b6b565b6007838154811061215c5761215c612c4c565b60009182526020909120015460405163079cc67960e41b81526001600160a01b03909116906379cc6790906121979088908890600401612cd1565b600060405180830381600087803b1580156121b157600080fd5b505af11580156121c5573d6000803e3d6000fd5b5050505060008411806121d6575083155b6121e2576121e2612cbb565b60006121ee8585610ecd565b905080600b60008282546122029190612c62565b90915550909695505050505050565b61221b82826111d6565b610b7e576122288161246b565b61223383602061247d565b604051602001612244929190612d8c565b60408051601f198184030181529082905262461bcd60e51b8252610b6b9160040161278f565b61227482826111d6565b15610b7e5760008281526005602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610644836001600160a01b038416612619565b60008183106122f55781610644565b5090919050565b6001600160a01b03821661235c5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610b6b565b6001600160a01b038216600090815260208190526040902054818110156123d05760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610b6b565b6001600160a01b038316600081815260208181526040808320868603905560028054879003905551858152919291600080516020612e29833981519152910160405180910390a3505050565b600082600001828154811061243357612433612c4c565b9060005260206000200154905092915050565b60006001600160e01b03198216635a05180f60e01b148061059f575061059f8261270c565b606061059f6001600160a01b03831660145b6060600061248c836002612c35565b612497906002612c62565b67ffffffffffffffff8111156124af576124af6127c2565b6040519080825280601f01601f1916602001820160405280156124d9576020820181803683370190505b509050600360fc1b816000815181106124f4576124f4612c4c565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061252357612523612c4c565b60200101906001600160f81b031916908160001a9053506000612547846002612c35565b612552906001612c62565b90505b60018111156125ca576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061258657612586612c4c565b1a60f81b82828151811061259c5761259c612c4c565b60200101906001600160f81b031916908160001a90535060049490941c936125c381612dfb565b9050612555565b5083156106445760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610b6b565b6000818152600183016020526040812054801561270257600061263d600183612d79565b855490915060009061265190600190612d79565b90508181146126b657600086600001828154811061267157612671612c4c565b906000526020600020015490508087600001848154811061269457612694612c4c565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806126c7576126c7612e12565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061059f565b600091505061059f565b60006001600160e01b03198216637965db0b60e01b148061059f57506301ffc9a760e01b6001600160e01b031983161461059f565b60006020828403121561275357600080fd5b81356001600160e01b03198116811461064457600080fd5b60005b8381101561278657818101518382015260200161276e565b50506000910152565b60208152600082518060208401526127ae81604085016020870161276b565b601f01601f19169190910160400192915050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126127e957600080fd5b8135602067ffffffffffffffff80831115612806576128066127c2565b8260051b604051601f19603f8301168101818110848211171561282b5761282b6127c2565b60405293845285810183019383810192508785111561284957600080fd5b83870191505b848210156128685781358352918301919083019061284f565b979650505050505050565b6000806040838503121561288657600080fd5b82359150602083013567ffffffffffffffff8111156128a457600080fd5b6128b0858286016127d8565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b818110156128f45783511515835292840192918401916001016128d6565b50909695505050505050565b80356001600160a01b03811681146108ba57600080fd5b6000806040838503121561292a57600080fd5b61293383612900565b946020939093013593505050565b60006020828403121561295357600080fd5b5035919050565b60008060006060848603121561296f57600080fd5b61297884612900565b925061298660208501612900565b9150604084013590509250925092565b600080604083850312156129a957600080fd5b823591506129b960208401612900565b90509250929050565b600080604083850312156129d557600080fd5b50508035926020909101359150565b6000602082840312156129f657600080fd5b61064482612900565b600080600060608486031215612a1457600080fd5b612a1d84612900565b925060208401359150604084013567ffffffffffffffff811115612a4057600080fd5b612a4c868287016127d8565b9150509250925092565b6001600160a01b0391909116815260200190565b60008060408385031215612a7d57600080fd5b612a8683612900565b91506129b960208401612900565b600181811c90821680612aa857607f821691505b602082108103612ac857634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215612ae057600080fd5b815160ff8116811461064457600080fd5b634e487b7160e01b600052601160045260246000fd5b60ff828116828216039081111561059f5761059f612af1565b600181815b80851115612b5b578160001904821115612b4157612b41612af1565b80851615612b4e57918102915b93841c9390800290612b25565b509250929050565b600082612b725750600161059f565b81612b7f5750600061059f565b8160018114612b955760028114612b9f57612bbb565b600191505061059f565b60ff841115612bb057612bb0612af1565b50506001821b61059f565b5060208310610133831016604e8410600b8410161715612bde575081810a61059f565b612be88383612b20565b8060001904821115612bfc57612bfc612af1565b029392505050565b600061064460ff841683612b63565b600082612c3057634e487b7160e01b600052601260045260246000fd5b500490565b808202811582820484141761059f5761059f612af1565b634e487b7160e01b600052603260045260246000fd5b8082018082111561059f5761059f612af1565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600060208284031215612cab57600080fd5b8151801515811461064457600080fd5b634e487b7160e01b600052600160045260246000fd5b6001600160a01b03929092168252602082015260400190565b600060208284031215612cfc57600080fd5b5051919050565b6001600160a01b038416815260208082018490526060604083018190528351908301819052600091848101916080850190845b81811015612d5257845183529383019391830191600101612d36565b509098975050505050505050565b600060018201612d7257612d72612af1565b5060010190565b8181038181111561059f5761059f612af1565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351612dbe81601785016020880161276b565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612def81602884016020880161276b565b01602801949350505050565b600081612e0a57612e0a612af1565b506000190190565b634e487b7160e01b600052603160045260246000fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef59c5589e073e79cb068a473a938b08b6e078e7ab02c16b2566189f37d4ef86fea26469706673582212200095cf545db65d2412630a87db22f53bcb25bcbc05bdbaf06db032b70b55486764736f6c63430008120033e1322164d2a9c594e09927ac212ba43210d25e7c9efc459689fb7b6107c895b1000000000000000000000000e2dc552ab6848c2126229554ab3411911c28547b00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000007861f800000000000000000000000000000000000000000000000000000000000000008000000000000000000000000411c1ab1e4ccd16a0b6556c625caf5f556580995000000000000000000000000961359b67142d4fc86b65a50fdc2b006a0439ca600000000000000000000000042fa90abba2acd3b064dd3f29f99123fc68fdde3000000000000000000000000a63fba872931588e70a2cb4aaf94c34b78e17922000000000000000000000000b57ef0d6d4765cebd70222c9c92f0a789174b5e4000000000000000000000000bf2f5179e3159e6860ddbfc6d6ce83c3c586cf500000000000000000000000007a5f2225a501039cedd5cad2ef5e528ab00b67900000000000000000000000005ea0afe9002c76956a3fc70df36ad2e5ccf4e3da
0xa26469706673582212200095cf545db65d2412630a87db22f53bcb25bcbc05bdbaf06db032b70b55486764736f6c63430008120033e1322164d2a9c594e09927ac212ba43210d25e7c9efc459689fb7b6107c895b1000000000000000000000000e2dc552ab6848c2126229554ab3411911c28547b00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000007861f800000000000000000000000000000000000000000000000000000000000000008000000000000000000000000411c1ab1e4ccd16a0b6556c625caf5f556580995000000000000000000000000961359b67142d4fc86b65a50fdc2b006a0439ca600000000000000000000000042fa90abba2acd3b064dd3f29f99123fc68fdde3000000000000000000000000a63fba872931588e70a2cb4aaf94c34b78e17922000000000000000000000000b57ef0d6d4765cebd70222c9c92f0a789174b5e4000000000000000000000000bf2f5179e3159e6860ddbfc6d6ce83c3c586cf500000000000000000000000007a5f2225a501039cedd5cad2ef5e528ab00b67900000000000000000000000005ea0afe9002c76956a3fc70df36ad2e5ccf4e3da