UNPKG

@gooddollar/goodprotocol

Version:
913 lines 65.8 kB
{ "_format": "hh-sol-artifact-1", "contractName": "AdminWalletFuse", "sourceName": "contracts/utils/AdminWalletFuse.sol", "abi": [ { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "previousAdmin", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newAdmin", "type": "address" } ], "name": "AdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address payable[]", "name": "admins", "type": "address[]" } ], "name": "AdminsAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address[]", "name": "admins", "type": "address[]" } ], "name": "AdminsRemoved", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "beacon", "type": "address" } ], "name": "BeaconUpgraded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_contract", "type": "address" }, { "indexed": false, "internalType": "bytes", "name": "_data", "type": "bytes" }, { "indexed": false, "internalType": "uint256", "name": "_value", "type": "uint256" }, { "indexed": false, "internalType": "bool", "name": "_success", "type": "bool" } ], "name": "GenericCall", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "version", "type": "uint8" } ], "name": "Initialized", "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": "implementation", "type": "address" } ], "name": "Upgraded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "WalletTopped", "type": "event" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "WALLET_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address payable[]", "name": "_admins", "type": "address[]" } ], "name": "addAdmins", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "adminToppingAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_user", "type": "address" } ], "name": "blacklist", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "day", "outputs": [ { "internalType": "uint64", "name": "", "type": "uint64" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "gasPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "gd", "outputs": [ { "internalType": "contract ERC20", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_contract", "type": "address" }, { "internalType": "bytes", "name": "_data", "type": "bytes" }, { "internalType": "uint256", "name": "_value", "type": "uint256" } ], "name": "genericCall", "outputs": [ { "internalType": "bool", "name": "success", "type": "bool" }, { "internalType": "bytes", "name": "returnValue", "type": "bytes" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "_contracts", "type": "address[]" }, { "internalType": "bytes[]", "name": "_datas", "type": "bytes[]" }, { "internalType": "uint256[]", "name": "_values", "type": "uint256[]" } ], "name": "genericCallBatch", "outputs": [ { "internalType": "bool", "name": "success", "type": "bool" }, { "internalType": "bytes", "name": "returnValue", "type": "bytes" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "getIdentity", "outputs": [ { "internalType": "contract IIdentityV2", "name": "", "type": "address" } ], "stateMutability": "view", "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": "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 payable[]", "name": "_admins", "type": "address[]" }, { "internalType": "contract NameService", "name": "_ns", "type": "address" }, { "internalType": "address", "name": "_owner", "type": "address" }, { "internalType": "uint256", "name": "_gasPrice", "type": "uint256" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_user", "type": "address" } ], "name": "isAdmin", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "lastGdBalance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxDailyNewWallets", "outputs": [ { "internalType": "uint64", "name": "", "type": "uint64" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "nameService", "outputs": [ { "internalType": "contract NameService", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "proxiableUUID", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "_admins", "type": "address[]" } ], "name": "removeAdmins", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_user", "type": "address" } ], "name": "removeBlacklist", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_user", "type": "address" } ], "name": "removeWhitelist", "outputs": [], "stateMutability": "nonpayable", "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": "_toppingAmount", "type": "uint256" }, { "internalType": "uint256", "name": "_adminToppingAmount", "type": "uint256" }, { "internalType": "uint256", "name": "_toppingTimes", "type": "uint256" }, { "internalType": "uint256", "name": "_gasPrice", "type": "uint256" } ], "name": "setDefaults", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "startIndex", "type": "uint256" }, { "internalType": "uint256", "name": "endIndex", "type": "uint256" } ], "name": "topAdmins", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "startIndex", "type": "uint256" } ], "name": "topAdmins", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address payable", "name": "_user", "type": "address" } ], "name": "topWallet", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "toppingAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "toppingTimes", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "upgrade", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newImplementation", "type": "address" } ], "name": "upgradeTo", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newImplementation", "type": "address" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "upgradeToAndCall", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "version", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_user", "type": "address" }, { "internalType": "string", "name": "_did", "type": "string" } ], "name": "whitelist", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_user", "type": "address" }, { "internalType": "string", "name": "_did", "type": "string" }, { "internalType": "uint256", "name": "orgChain", "type": "uint256" }, { "internalType": "uint256", "name": "dateAuthenticated", "type": "uint256" } ], "name": "whitelist", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ], "bytecode": "0x60a06040523060805234801561001457600080fd5b50608051612d6961004c600039600081816109ef01528181610a2f01528181610ea701528181610ee70152610f5f0152612d696000f3fe6080604052600436106101da5760003560e01c806301ffc9a7146101e6578063133d93a11461021b578063248a9ca31461024b57806324d7806c1461026b5780632beeaca41461028b5780632bf16458146102ad5780632f2ff15d146102db57806336568abe146102fb5780633659cfe61461031b57806336afc6fa1461033b5780633771dcf81461035d578063377e11e01461037d5780633e6326fc1461039d5780634f1ef286146103be57806352d1902d146103d157806354fd4d50146103e65780635b61e2c1146104205780635fc944e914610459578063715018a61461047957806378c8cda71461048e5780637b76ac91146104ae5780637e2c1355146104d65780637fad46f2146104f65780638da5cb5b1461051657806391d148541461052b578063971d902c1461054b5780639c54df641461056b578063a217fddf1461058b578063a5e598fc146105a0578063b712a2c1146105c1578063bf64e66c146105e1578063c48924961461060f578063d547741f14610626578063d55ec69714610646578063db6268381461065b578063e6ea39391461067b578063eb91e65114610692578063f2fde38b146106b2578063f3da9f05146106d2578063f9f92be4146106e9578063fe173b971461070957600080fd5b366101e157005b600080fd5b3480156101f257600080fd5b506102066102013660046122af565b610720565b60405190151581526020015b60405180910390f35b34801561022757600080fd5b5061023d600080516020612c8d83398151915281565b604051908152602001610212565b34801561025757600080fd5b5061023d6102663660046122d9565b610757565b34801561027757600080fd5b50610206610286366004612307565b61076c565b34801561029757600080fd5b506102ab6102a63660046123d9565b610786565b005b3480156102b957600080fd5b506102cd6102c8366004612428565b610851565b6040516102129291906124d0565b3480156102e757600080fd5b506102ab6102f63660046124f3565b61094a565b34801561030757600080fd5b506102ab6103163660046124f3565b61096b565b34801561032757600080fd5b506102ab610336366004612307565b6109e5565b34801561034757600080fd5b50610350610aad565b6040516102129190612523565b34801561036957600080fd5b506102ab610378366004612307565b610b39565b34801561038957600080fd5b506102ab6103983660046125ce565b610e04565b3480156103a957600080fd5b5061013254610350906001600160a01b031681565b6102ab6103cc3660046123d9565b610e9d565b3480156103dd57600080fd5b5061023d610f52565b3480156103f257600080fd5b506101345461040b90600160801b900463ffffffff1681565b60405163ffffffff9091168152602001610212565b34801561042c57600080fd5b5061013454610441906001600160401b031681565b6040516001600160401b039091168152602001610212565b34801561046557600080fd5b506102ab610474366004612602565b611000565b34801561048557600080fd5b506102ab61112e565b34801561049a57600080fd5b506102ab6104a9366004612307565b611142565b3480156104ba57600080fd5b506101345461044190600160401b90046001600160401b031681565b3480156104e257600080fd5b506102ab6104f1366004612624565b6111dc565b34801561050257600080fd5b506102ab6105113660046126ba565b6111f6565b34801561052257600080fd5b506103506113f5565b34801561053757600080fd5b506102066105463660046124f3565b611404565b34801561055757600080fd5b506102ab610566366004612723565b61142f565b34801561057757600080fd5b506102ab610586366004612782565b6114f1565b34801561059757600080fd5b5061023d600081565b3480156105ac57600080fd5b5061013554610350906001600160a01b031681565b3480156105cd57600080fd5b506102cd6105dc366004612811565b611606565b3480156105ed57600080fd5b5061023d6105fc366004612307565b6101366020526000908152604090205481565b34801561061b57600080fd5b5061023d61012f5481565b34801561063257600080fd5b506102ab6106413660046124f3565b61178a565b34801561065257600080fd5b506102ab6117a6565b34801561066757600080fd5b506102ab6106763660046122d9565b611841565b34801561068757600080fd5b5061023d61012e5481565b34801561069e57600080fd5b506102ab6106ad366004612307565b611860565b3480156106be57600080fd5b506102ab6106cd366004612307565b6118b8565b3480156106de57600080fd5b5061023d6101305481565b3480156106f557600080fd5b506102ab610704366004612307565b61192e565b34801561071557600080fd5b5061023d6101315481565b60006001600160e01b03198216637965db0b60e01b148061075157506301ffc9a760e01b6001600160e01b03198316145b92915050565b600090815260fb602052604090206001015490565b6000610751600080516020612c8d83398151915283611404565b61078f3361076c565b6107b45760405162461bcd60e51b81526004016107ab90612907565b60405180910390fd5b6107bc610aad565b6001600160a01b0316631b02709983836040518363ffffffff1660e01b81526004016107e9929190612934565b600060405180830381600087803b15801561080357600080fd5b505af1158015610817573d6000803e3d6000fd5b50505050600261012f5461082b919061296e565b33311180159061083f575061083f3361076c565b1561084d5761084d33611986565b5050565b6000606061085e3361076c565b61087a5760405162461bcd60e51b81526004016107ab90612907565b846001600160a01b031683856040516108939190612990565b60006040518083038185875af1925050503d80600081146108d0576040519150601f19603f3d011682016040523d82523d6000602084013e6108d5565b606091505b5060405191935091506001600160a01b03861690600080516020612cad83398151915290610908908790879087906129ac565b60405180910390a2600261012f54610920919061296e565b33311180159061093457506109343361076c565b156109425761094233611986565b935093915050565b61095382610757565b61095c81611a92565b6109668383611a9c565b505050565b6001600160a01b03811633146109db5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016107ab565b61084d8282611b22565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610a2d5760405162461bcd60e51b81526004016107ab906129d6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610a5f611b89565b6001600160a01b031614610a855760405162461bcd60e51b81526004016107ab90612a10565b610a8e81611ba5565b60408051600080825260208201909252610aaa91839190611bad565b50565b6101325460405163bf40fac160e01b81526020600482015260086024820152674944454e5449545960c01b60448201526000916001600160a01b03169063bf40fac190606401602060405180830381865afa158015610b10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b349190612a4a565b905090565b610b423361076c565b610b5e5760405162461bcd60e51b81526004016107ab90612907565b610135546040516370a0823160e01b81526000916001600160a01b0316906370a0823190610b90908590600401612523565b602060405180830381865afa158015610bad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd19190612a67565b9050610bdb610aad565b6001600160a01b0316633af32abf836040518263ffffffff1660e01b8152600401610c069190612523565b602060405180830381865afa158015610c23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c479190612a80565b80610c6b57506001600160a01b038216600090815261013660205260409020548114155b610cae5760405162461bcd60e51b8152602060048201526014602482015273155cd95c881a185cc81b9bdd081d5cd9590811c960621b60448201526064016107ab565b610130546101336000610cbf611d18565b81526020019081526020016000206000846001600160a01b03166001600160a01b031681526020019081526020016000205410610d575760405162461bcd60e51b815260206004820152603060248201527f557365722077616c6c657420686173206265656e20746f7070656420746f6f2060448201526f6d616e792074696d657320746f64617960801b60648201526084016107ab565b600461012e54610d67919061296e565b826001600160a01b03163110610dac5760405162461bcd60e51b815260206004820152600a60248201526968617342616c616e636560b01b60448201526064016107ab565b6001600160a01b038216600090815261013660205260409020819055610dd182611986565b50600261012f54610de2919061296e565b333111801590610df65750610df63361076c565b15610aaa57610aaa33611986565b610e0c611d27565b60005b8151811015610e5b57610e49600080516020612c8d833981519152838381518110610e3c57610e3c612aa2565b602002602001015161178a565b80610e5381612ab8565b915050610e0f565b5080604051610e6a9190612ad1565b604051908190038120907fd5e6894641b5030a67e637ab2e12da64d8aec689f8bd1328de2b04d6a439c81090600090a250565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610ee55760405162461bcd60e51b81526004016107ab906129d6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610f17611b89565b6001600160a01b031614610f3d5760405162461bcd60e51b81526004016107ab90612a10565b610f4682611ba5565b61084d82826001611bad565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610fed5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b60648201526084016107ab565b50600080516020612ced83398151915290565b61012d5482106110485760405162461bcd60e51b815260206004820152601360248201527241646d696e206c69737420697320656d70747960681b60448201526064016107ab565b815b61012d548110801561105b57508181105b1561111d5761109161012d828154811061107757611077612aa2565b6000918252602090912001546001600160a01b031661076c565b80156110d55750600261012f546110a8919061296e565b61012d82815481106110bc576110bc612aa2565b6000918252602090912001546001600160a01b03163111155b1561110b5761110b61012d82815481106110f1576110f1612aa2565b6000918252602090912001546001600160a01b0316611986565b8061111581612ab8565b91505061104a565b50600261012f5461082b919061296e565b611136611d27565b6111406000611d86565b565b61114b3361076c565b6111675760405162461bcd60e51b81526004016107ab90612907565b61116f610aad565b6001600160a01b031663291d9549826040518263ffffffff1660e01b815260040161119a9190612523565b600060405180830381600087803b1580156111b457600080fd5b505af11580156111c8573d6000803e3d6000fd5b50505050600261012f54610de2919061296e565b6111e4611d27565b6111f084848484611dd8565b50505050565b600054610100900460ff16158080156112165750600054600160ff909116105b80611237575061122530611e03565b158015611237575060005460ff166001145b61129a5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016107ab565b6000805460ff1916600117905580156112bd576000805461ff0019166101001790555b6112c5611e12565b6112cd611e39565b6112d8600084611e69565b6112eb620927c062895440600385611dd8565b61013280546001600160a01b0319166001600160a01b03861617905584511561131757611317856114f1565b6101325460405163bf40fac160e01b81526001600160a01b039091169063bf40fac19061134690600401612b10565b602060405180830381865afa158015611363573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113879190612a4a565b61013580546001600160a01b0319166001600160a01b039290921691909117905580156113ee576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6097546001600160a01b031690565b600091825260fb602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6114383361076c565b6114545760405162461bcd60e51b81526004016107ab90612907565b61145c610aad565b6001600160a01b031663e737031a858585856040518563ffffffff1660e01b815260040161148d9493929190612b34565b600060405180830381600087803b1580156114a757600080fd5b505af11580156114bb573d6000803e3d6000fd5b50505050600261012f546114cf919061296e565b3331118015906114e357506114e33361076c565b156111f0576111f033611986565b6114f9611d27565b60005b81518110156115c45761152782828151811061151a5761151a612aa2565b602002602001015161076c565b15156000036115b257611561600080516020612c8d83398151915283838151811061155457611554612aa2565b602002602001015161094a565b61012d82828151811061157657611576612aa2565b60209081029190910181015182546001810184556000938452919092200180546001600160a01b0319166001600160a01b039092169190911790555b806115bc81612ab8565b9150506114fc565b50806040516115d39190612ad1565b604051908190038120907f45486b220020cc2482ad1a5e0ae4d5f0b5372cea1b48173f6273c616a504726990600090a250565b600060606116133361076c565b61162f5760405162461bcd60e51b81526004016107ab90612907565b60005b85518110156117795785818151811061164d5761164d612aa2565b60200260200101516001600160a01b031684828151811061167057611670612aa2565b602002602001015186838151811061168a5761168a612aa2565b602002602001015160405161169f9190612990565b60006040518083038185875af1925050503d80600081146116dc576040519150601f19603f3d011682016040523d82523d6000602084013e6116e1565b606091505b50875191945092508690829081106116fb576116fb612aa2565b60200260200101516001600160a01b0316600080516020612cad83398151915286838151811061172d5761172d612aa2565b602002602001015186848151811061174757611747612aa2565b60200260200101518660405161175f939291906129ac565b60405180910390a28061177181612ab8565b915050611632565b50600261012f54610920919061296e565b61179382610757565b61179c81611a92565b6109668383611b22565b6117ae611d27565b6101325460405163bf40fac160e01b81526001600160a01b039091169063bf40fac1906117dd90600401612b10565b602060405180830381865afa1580156117fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061181e9190612a4a565b61013580546001600160a01b0319166001600160a01b0392909216919091179055565b61185081610474816032612b6b565b600261012f54610de2919061296e565b6118693361076c565b6118855760405162461bcd60e51b81526004016107ab90612907565b61188d610aad565b6001600160a01b031663c6a276c2826040518263ffffffff1660e01b815260040161119a9190612523565b6118c0611d27565b6001600160a01b0381166119255760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107ab565b610aaa81611d86565b6119373361076c565b6119535760405162461bcd60e51b81526004016107ab90612907565b61195b610aad565b6001600160a01b031663188efc16826040518263ffffffff1660e01b815260040161119a9190612523565b60016101336000611995611d18565b81526020019081526020016000206000836001600160a01b03166001600160a01b0316815260200190815260200160002060008282546119d59190612b6b565b90915550600090506119e68261076c565b6119f35761012e546119f8565b61012f545b90506000611a106001600160a01b0384163183612b7e565b6040519091506001600160a01b0384169082156108fc029083906000818181858888f19350505050158015611a49573d6000803e3d6000fd5b50826001600160a01b03167ff60e56b8021f6ac77bd50d4acdbed9ad9e85107144d43090774a9ebe5ffed98582604051611a8591815260200190565b60405180910390a2505050565b610aaa8133611e73565b611aa68282611404565b61084d57600082815260fb602090815260408083206001600160a01b03851684529091529020805460ff19166001179055611ade3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b611b2c8282611404565b1561084d57600082815260fb602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600080516020612ced833981519152546001600160a01b031690565b610aaa611d27565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611be05761096683611ecc565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611c3a575060408051601f3d908101601f19168201909252611c3791810190612a67565b60015b611c9d5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016107ab565b600080516020612ced8339815191528114611d0c5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016107ab565b50610966838383611f66565b6000610b34620151804261296e565b33611d306113f5565b6001600160a01b0316146111405760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107ab565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b610131819055611de88185612b91565b61012e55611df68184612b91565b61012f5550610130555050565b6001600160a01b03163b151590565b600054610100900460ff166111405760405162461bcd60e51b81526004016107ab90612ba8565b600054610100900460ff16611e605760405162461bcd60e51b81526004016107ab90612ba8565b61114033611d86565b61084d8282611a9c565b611e7d8282611404565b61084d57611e8a81611f8b565b611e95836020611f9d565b604051602001611ea6929190612bf3565b60408051601f198184030181529082905262461bcd60e51b82526107ab91600401612c62565b611ed581611e03565b611f375760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016107ab565b600080516020612ced83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b611f6f8361213f565b600082511180611f7c5750805b15610966576111f0838361217f565b60606107516001600160a01b03831660145b60606000611fac836002612b91565b611fb7906002612b6b565b6001600160401b03811115611fce57611fce612324565b6040519080825280601f01601f191660200182016040528015611ff8576020820181803683370190505b509050600360fc1b8160008151811061201357612013612aa2565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061204257612042612aa2565b60200101906001600160f81b031916908160001a9053506000612066846002612b91565b612071906001612b6b565b90505b60018111156120e9576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106120a5576120a5612aa2565b1a60f81b8282815181106120bb576120bb612aa2565b60200101906001600160f81b031916908160001a90535060049490941c936120e281612c75565b9050612074565b5083156121385760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016107ab565b9392505050565b61214881611ecc565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061218a83611e03565b6121e55760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016107ab565b600080846001600160a01b0316846040516122009190612990565b600060405180830381855af49150503d806000811461223b576040519150601f19603f3d011682016040523d82523d6000602084013e612240565b606091505b50915091506122688282604051806060016040528060278152602001612d0d60279139612271565b95945050505050565b60608315612280575081612138565b61213883838151156122955781518083602001fd5b8060405162461bcd60e51b81526004016107ab9190612c62565b6000602082840312156122c157600080fd5b81356001600160e01b03198116811461213857600080fd5b6000602082840312156122eb57600080fd5b5035919050565b6001600160a01b0381168114610aaa57600080fd5b60006020828403121561231957600080fd5b8135612138816122f2565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561236257612362612324565b604052919050565b600082601f83011261237b57600080fd5b81356001600160401b0381111561239457612394612324565b6123a7601f8201601f191660200161233a565b8181528460208386010111156123bc57600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156123ec57600080fd5b82356123f7816122f2565b915060208301356001600160401b0381111561241257600080fd5b61241e8582860161236a565b9150509250929050565b60008060006060848603121561243d57600080fd5b8335612448816122f2565b925060208401356001600160401b0381111561246357600080fd5b61246f8682870161236a565b925050604084013590509250925092565b60005b8381101561249b578181015183820152602001612483565b50506000910152565b600081518084526124bc816020860160208601612480565b601f01601f19169290920160200192915050565b82151581526040602082015260006124eb60408301846124a4565b949350505050565b6000806040838503121561250657600080fd5b823591506020830135612518816122f2565b809150509250929050565b6001600160a01b0391909116815260200190565b60006001600160401b0382111561255057612550612324565b5060051b60200190565b600082601f83011261256b57600080fd5b8135602061258061257b83612537565b61233a565b82815260059290921b8401810191818101908684111561259f57600080fd5b8286015b848110156125c35780356125b6816122f2565b83529183019183016125a3565b509695505050505050565b6000602082840312156125e057600080fd5b81356001600160401b038111156125f657600080fd5b6124eb8482850161255a565b6000806040838503121561261557600080fd5b50508035926020909101359150565b6000806000806080858703121561263a57600080fd5b5050823594602084013594506040840135936060013592509050565b600082601f83011261266757600080fd5b8135602061267761257b83612537565b82815260059290921b8401810191818101908684111561269657600080fd5b8286015b848110156125c35780356126ad816122f2565b835291830191830161269a565b600080600080608085870312156126d057600080fd5b84356001600160401b038111156126e657600080fd5b6126f287828801612656565b9450506020850135612703816122f2565b92506040850135612713816122f2565b9396929550929360600135925050565b6000806000806080858703121561273957600080fd5b8435612744816122f2565b935060208501356001600160401b0381111561275f57600080fd5b61276b8782880161236a565b949794965050505060408301359260600135919050565b60006020828403121561279457600080fd5b81356001600160401b038111156127aa57600080fd5b6124eb84828501612656565b600082601f8301126127c757600080fd5b813560206127d761257b83612537565b82815260059290921b840181019181810190868411156127f657600080fd5b8286015b848110156125c357803583529183019183016127fa565b60008060006060848603121561282657600080fd5b83356001600160401b038082111561283d57600080fd5b6128498783880161255a565b945060209150818601358181111561286057600080fd5b8601601f8101881361287157600080fd5b803561287f61257b82612537565b81815260059190911b8201840190848101908a83111561289e57600080fd5b8584015b838110156128d6578035868111156128ba5760008081fd5b6128c88d898389010161236a565b8452509186019186016128a2565b50965050505060408601359150808211156128f057600080fd5b506128fd868287016127b6565b9150509250925092565b60208082526013908201527221b0b63632b91034b9903737ba1030b236b4b760691b604082015260600190565b6001600160a01b03831681526040602082018190526000906124eb908301846124a4565b634e487b7160e01b600052601160045260246000fd5b60008261298b57634e487b7160e01b600052601260045260246000fd5b500490565b600082516129a2818460208701612480565b9190910192915050565b6060815260006129bf60608301866124a4565b602083019490945250901515604090910152919050565b6020808252602c90820152600080516020612ccd83398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c90820152600080516020612ccd83398151915260408201526b6163746976652070726f787960a01b606082015260800190565b600060208284031215612a5c57600080fd5b8151612138816122f2565b600060208284031215612a7957600080fd5b5051919050565b600060208284031215612a9257600080fd5b8151801515811461213857600080fd5b634e487b7160e01b600052603260045260246000fd5b600060018201612aca57612aca612958565b5060010190565b815160009082906020808601845b83811015612b045781516001600160a01b031685529382019390820190600101612adf565b50929695505050505050565b6020808252600a908201526923a7a7a22227a62620a960b11b604082015260600190565b6001600160a01b0385168152608060208201819052600090612b58908301866124a4565b6040830194909452506060015292915050565b8082018082111561075157610751612958565b8181038181111561075157610751612958565b808202811582820484141761075157610751612958565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351612c25816017850160208801612480565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612c56816028840160208801612480565b01602801949350505050565b60208152600061213860208301846124a4565b600081612c8457612c84612958565b50600019019056febf18f3bdda8a65fc5ec294c2c787f805aceec15eed9fe17fdb6588866be113dc534b52c783549f909f9e743120524d0b7154058e4a54cdc895c2c0b587a1c7e046756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220257f2aea7f77d24ca430047166bd58cc4bb745f3077c8f4a8d04e8b18c09225964736f6c63430008130033", "deployedBytecode": "0x6080604052600436106101da5760003560e01c806301ffc9a7146101e6578063133d93a11461021b578063248a9ca31461024b57806324d7806c1461026b5780632beeaca41461028b5780632bf16458146102ad5780632f2ff15d146102db57806336568abe146102fb5780633659cfe61461031b57806336afc6fa1461033b5780633771dcf81461035d578063377e11e01461037d5780633e6326fc1461039d5780634f1ef286146103be57806352d1902d146103d157806354fd4d50146103e65780635b61e2c1146104205780635fc944e914610459578063715018a61461047957806378c8cda71461048e5780637b76ac91146104ae5780637e2c1355146104d65780637fad46f2146104f65780638da5cb5b1461051657806391d148541461052b578063971d902c1461054b5780639c54df641461056b578063a217fddf1461058b578063a5e598fc146105a0578063b712a2c1146105c1578063bf64e66c146105e1578063c48924961461060f578063d547741f14610626578063d55ec69714610646578063db6268381461065b578063e6ea39391461067b578063eb91e65114610692578063f2fde38b146106b2578063f3da9f05146106d2578063f9f92be4146106e9578063fe173b971461070957600080fd5b366101e157005b600080fd5b3480156101f257600080fd5b506102066102013660046122af565b610720565b60405190151581526020015b60405180910390f35b34801561022757600080fd5b5061023d600080516020612c8d83398151915281565b604051908152602001610212565b34801561025757600080fd5b5061023d6102663660046122d9565b610757565b34801561027757600080fd5b50610206610286366004612307565b61076c565b34801561029757600080fd5b506102ab6102a63660046123d9565b610786565b005b3480156102b957600080fd5b506102cd6102c8366004612428565b610851565b6040516102129291906124d0565b3480156102e757600080fd5b506102ab6102f63660046124f3565b61094a565b34801561030757600080fd5b506102ab6103163660046124f3565b61096b565b34801561032757600080fd5b506102ab610336366004612307565b6109e5565b34801561034757600080fd5b50610350610aad565b6040516102129190612523565b34801561036957600080fd5b506102ab610378366004612307565b610b39565b34801561038957600080fd5b506102ab6103983660046125ce565b610e04565b3480156103a957600080fd5b5061013254610350906001600160a01b031681565b6102ab6103cc3660046123d9565b610e9d565b3480156103dd57600080fd5b5061023d610f52565b3480156103f257600080fd5b506101345461040b90600160801b900463ffffffff1681565b60405163ffffffff9091168152602001610212565b34801561042c57600080fd5b5061013454610441906001600160401b031681565b6040516001600160401b039091168152602001610212565b34801561046557600080fd5b506102ab610474366004612602565b611000565b34801561048557600080fd5b506102ab61112e565b34801561049a57600080fd5b506102ab6104a9366004612307565b611142565b3480156104ba57600080fd5b506101345461044190600160401b90046001600160401b031681565b3480156104e257600080fd5b506102ab6104f1366004612624565b6111dc565b34801561050257600080fd5b506102ab6105113660046126ba565b6111f6565b34801561052257600080fd5b506103506113f5565b34801561053757600080fd5b506102066105463660046124f3565b611404565b34801561055757600080fd5b506102ab610566366004612723565b61142f565b34801561057757600080fd5b506102ab610586366004612782565b6114f1565b34801561059757600080fd5b5061023d600081565b3480156105ac57600080fd5b5061013554610350906001600160a01b031681565b3480156105cd57600080fd5b506102cd6105dc366004612811565b611606565b3480156105ed57600080fd5b5061023d6105fc366004612307565b6101366020526000908152604090205481565b34801561061b57600080fd5b5061023d61012f5481565b34801561063257600080fd5b506102ab6106413660046124f3565b61178a565b34801561065257600080fd5b506102ab6117a6565b34801561066757600080fd5b506102ab6106763660046122d9565b611841565b34801561068757600080fd5b5061023d61012e5481565b34801561069e57600080fd5b506102ab6106ad366004612307565b611860565b3480156106be57600080fd5b506102ab6106cd366004612307565b6118b8565b3480156106de57600080fd5b5061023d6101305481565b3480156106f557600080fd5b506102ab610704366004612307565b61192e565b34801561071557600080fd5b5061023d6101315481565b60006001600160e01b03198216637965db0b60e01b148061075157506301ffc9a760e01b6001600160e01b03198316145b92915050565b600090815260fb602052604090206001015490565b6000610751600080516020612c8d83398151915283611404565b61078f3361076c565b6107b45760405162461bcd60e51b81526004016107ab90612907565b60405180910390fd5b6107bc610aad565b6001600160a01b0316631b02709983836040518363ffffffff1660e01b81526004016107e9929190612934565b600060405180830381600087803b15801561080357600080fd5b505af1158015610817573d6000803e3d6000fd5b50505050600261012f5461082b919061296e565b33311180159061083f575061083f3361076c565b1561084d5761084d33611986565b5050565b6000606061085e3361076c565b61087a5760405162461bcd60e51b81526004016107ab90612907565b846001600160a01b031683856040516108939190612990565b60006040518083038185875af1925050503d80600081146108d0576040519150601f19603f3d011682016040523d82523d6000602084013e6108d5565b606091505b5060405191935091506001600160a01b03861690600080516020612cad83398151915290610908908790879087906129ac565b60405180910390a2600261012f54610920919061296e565b33311180159061093457506109343361076c565b156109425761094233611986565b935093915050565b61095382610757565b61095c81611a92565b6109668383611a9c565b505050565b6001600160a01b03811633146109db5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016107ab565b61084d8282611b22565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610a2d5760405162461bcd60e51b81526004016107ab906129d6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610a5f611b89565b6001600160a01b031614610a855760405162461bcd60e51b81526004016107ab90612a10565b610a8e81611ba5565b60408051600080825260208201909252610aaa91839190611bad565b50565b6101325460405163bf40fac160e01b81526020600482015260086024820152674944454e5449545960c01b60448201526000916001600160a01b03169063bf40fac190606401602060405180830381865afa158015610b10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b349190612a4a565b905090565b610b423361076c565b610b5e5760405162461bcd60e51b81526004016107ab90612907565b610135546040516370a0823160e01b81526000916001600160a01b0316906370a0823190610b90908590600401612523565b602060405180830381865afa158015610bad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd19190612a67565b9050610bdb610aad565b6001600160a01b0316633af32abf836040518263ffffffff1660e01b8152600401610c069190612523565b602060405180830381865afa158015610c23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c479190612a80565b80610c6b57506001600160a01b038216600090815261013660205260409020548114155b610cae5760405162461bcd60e51b8152602060048201526014602482015273155cd95c881a185cc81b9bdd081d5cd9590811c960621b60448201526064016107ab565b610130546101336000610cbf611d18565b81526020019081526020016000206000846001600160a01b03166001600160a01b031681526020019081526020016000205410610d575760405162461bcd60e51b815260206004820152603060248201527f557365722077616c6c657420686173206265656e20746f7070656420746f6f2060448201526f6d616e792074696d657320746f64617960801b60648201526084016107ab565b600461012e54610d67919061296e565b826001600160a01b03163110610dac5760405162461bcd60e51b815260206004820152600a60248201526968617342616c616e636560b01b60448201526064016107ab565b6001600160a01b038216600090815261013660205260409020819055610dd182611986565b50600261012f54610de2919061296e565b333111801590610df65750610df63361076c565b15610aaa57610aaa33611986565b610e0c611d27565b60005b8151811015610e5b57610e49600080516020612c8d833981519152838381518110610e3c57610e3c612aa2565b602002602001015161178a565b80610e5381612ab8565b915050610e0f565b5080604051610e6a9190612ad1565b604051908190038120907fd5e6894641b5030a67e637ab2e12da64d8aec689f8bd1328de2b04d6a439c81090600090a250565b6001600160a01b037f0000000000000000000000000000000000000000000