[ { "inputs": [], "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": false, "internalType": "address", "name": "userAddress", "type": "address" }, { "indexed": false, "internalType": "address payable", "name": "relayerAddress", "type": "address" }, { "indexed": false, "internalType": "bytes", "name": "functionSignature", "type": "bytes" } ], "name": "MetaTransactionExecuted", "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": "ERC712_VERSION", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PREDICATE_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": [], "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": "address", "name": "userAddress", "type": "address" }, { "internalType": "bytes", "name": "functionSignature", "type": "bytes" }, { "internalType": "bytes32", "name": "sigR", "type": "bytes32" }, { "internalType": "bytes32", "name": "sigS", "type": "bytes32" }, { "internalType": "uint8", "name": "sigV", "type": "uint8" } ], "name": "executeMetaTransaction", "outputs": [ { "internalType": "bytes", "name": "", "type": "bytes" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "getChainId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "getDomainSeperator", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "getNonce", "outputs": [ { "internalType": "uint256", "name": "nonce", "type": "uint256" } ], "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": "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": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "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": [], "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": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "signer", "type": "address" }, { "internalType": "address[]", "name": "metaTx", "type": "address[]" }, { "internalType": "uint256", "name": "sig", "type": "uint256" } ], "name": "verify", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60a06040526000805460ff191690553480156200001b57600080fd5b5060408051808201825260088152674d6f6f2044656e6760c01b6020808301919091528251808401845260078152664d4f4f44454e4760c81b8183015283516004815260248101855291820180516001600160e01b031663d09b5abf60e01b178152935182519394919360609373022afa23c1fbe618d9d92ba50a6c9c248d22a6a3939092918291908083835b60208310620000c95780518252601f199092019160209182019101620000a8565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146200012d576040519150601f19603f3d011682016040523d82523d6000602084013e62000132565b606091505b509150508080602001905160208110156200014c57600080fd5b505160601b6001600160601b031916608052508151620001749060069060208501906200074f565b5080516200018a9060079060208401906200074f565b50506008805460ff19166012179055506040805180820190915260078152664d4f4f44454e4760c81b6020820152620001cc906001600160e01b036200026116565b604080516d5052454449434154455f524f4c4560901b8152905190819003600e019020620002059060006001600160e01b036200030716565b6040805180820190915260088152674d6f6f2044656e6760c01b602082015262000238906001600160e01b036200031c16565b6200025b336d04ee2d6d415b85acef81000000006001600160e01b036200038a16565b620007f1565b806040516020018082805190602001908083835b60208310620002965780518252601f19909201916020918201910162000275565b51815160209384036101000a60001901801990921691161790527f3a20494e53554646494349454e545f5045524d495353494f4e530000000000009190930190815260408051808303600519018152601a90920190528051620003039550600a945092019190506200074f565b5050565b6200030382826001600160e01b036200048f16565b60005460ff161562000366576040805162461bcd60e51b815260206004820152600e60248201526d185b1c9958591e481a5b9a5d195960921b604482015290519081900360640190fd5b6200037a816001600160e01b036200051316565b506000805460ff19166001179055565b6001600160a01b038216620003e6576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6200040281600554620005db60201b620014091790919060201c565b6005556001600160a01b0382166000908152600360209081526040909120546200043791839062001409620005db821b17901c565b6001600160a01b03831660008181526003602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6000828152600960209081526040909120620004b6918390620018826200063f821b17901c565b156200030357620004cf6001600160e01b036200065f16565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6040518060800160405280604f815260200162002448604f913980516020918201208251838301206040805180820190915260018152603160f81b930192909252907fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6306200058a6001600160e01b036200067c16565b604080516020808201979097528082019590955260608501939093526001600160a01b03909116608084015260a0808401919091528151808403909101815260c09092019052805191012060015550565b60008282018381101562000636576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b90505b92915050565b600062000636836001600160a01b0384166001600160e01b036200068016565b600062000676620006d860201b6200176f1760201c565b90505b90565b4690565b60006200069783836001600160e01b036200073716565b620006cf5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000639565b50600062000639565b600033301415620007325760606000368080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050503601516001600160a01b03169150620006799050565b503390565b60009081526001919091016020526040902054151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200079257805160ff1916838001178555620007c2565b82800160010185558215620007c2579182015b82811115620007c2578251825591602001919060010190620007a5565b50620007d0929150620007d4565b5090565b6200067991905b80821115620007d05760008155600101620007db565b60805160601c611c256200082360003980610ba05280610e245280610f085280611246528061150f5250611c256000f3fe6080604052600436106101815760003560e01c806339509351116100d1578063a217fddf1161008a578063ca15c87311610064578063ca15c87314610715578063d547741f1461073f578063dd62ed3e14610778578063e72db5fd146107b357610181565b8063a217fddf1461068e578063a457c2d7146106a3578063a9059cbb146106dc57610181565b806339509351146104c65780636bf513b1146104ff57806370a08231146105c15780639010d07c146105f457806391d148541461064057806395d89b411461067957610181565b806323b872dd1161013e5780632f2ff15d116101185780632f2ff15d14610412578063313ce5671461044d5780633408e4701461047857806336568abe1461048d57610181565b806323b872dd14610372578063248a9ca3146103b55780632d0335ab146103df57610181565b806306fdde0314610186578063095ea7b3146102105780630c53c51c1461025d5780630f7e59701461032157806318160ddd1461033657806320379ee51461035d575b600080fd5b34801561019257600080fd5b5061019b6107c8565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101d55781810151838201526020016101bd565b50505050905090810190601f1680156102025780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561021c57600080fd5b506102496004803603604081101561023357600080fd5b506001600160a01b03813516906020013561085e565b604080519115158252519081900360200190f35b61019b600480360360a081101561027357600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561029e57600080fd5b8201836020820111156102b057600080fd5b803590602001918460018302840111640100000000831117156102d257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550508235935050506020810135906040013560ff1661087c565b34801561032d57600080fd5b5061019b610b7f565b34801561034257600080fd5b5061034b610b9c565b60408051918252519081900360200190f35b34801561036957600080fd5b5061034b610c28565b34801561037e57600080fd5b506102496004803603606081101561039557600080fd5b506001600160a01b03813581169160208101359091169060400135610c2e565b3480156103c157600080fd5b5061034b600480360360208110156103d857600080fd5b5035610cbb565b3480156103eb57600080fd5b5061034b6004803603602081101561040257600080fd5b50356001600160a01b0316610cd0565b34801561041e57600080fd5b5061044b6004803603604081101561043557600080fd5b50803590602001356001600160a01b0316610ceb565b005b34801561045957600080fd5b50610462610d57565b6040805160ff9092168252519081900360200190f35b34801561048457600080fd5b5061034b610d60565b34801561049957600080fd5b5061044b600480360360408110156104b057600080fd5b50803590602001356001600160a01b0316610d64565b3480156104d257600080fd5b50610249600480360360408110156104e957600080fd5b506001600160a01b038135169060200135610dc5565b34801561050b57600080fd5b5061044b6004803603606081101561052257600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561054d57600080fd5b82018360208201111561055f57600080fd5b8035906020019184602083028401116401000000008311171561058157600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295505091359250610e19915050565b3480156105cd57600080fd5b5061034b600480360360208110156105e457600080fd5b50356001600160a01b0316610f04565b34801561060057600080fd5b506106246004803603604081101561061757600080fd5b5080359060200135610fae565b604080516001600160a01b039092168252519081900360200190f35b34801561064c57600080fd5b506102496004803603604081101561066357600080fd5b50803590602001356001600160a01b0316610fd3565b34801561068557600080fd5b5061019b610ff1565b34801561069a57600080fd5b5061034b611052565b3480156106af57600080fd5b50610249600480360360408110156106c657600080fd5b506001600160a01b038135169060200135611057565b3480156106e857600080fd5b50610249600480360360408110156106ff57600080fd5b506001600160a01b0381351690602001356110c5565b34801561072157600080fd5b5061034b6004803603602081101561073857600080fd5b50356110d9565b34801561074b57600080fd5b5061044b6004803603604081101561076257600080fd5b50803590602001356001600160a01b03166110f0565b34801561078457600080fd5b5061034b6004803603604081101561079b57600080fd5b506001600160a01b0381358116916020013516611149565b3480156107bf57600080fd5b5061034b611174565b60068054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108545780601f1061082957610100808354040283529160200191610854565b820191906000526020600020905b81548152906001019060200180831161083757829003601f168201915b5050505050905090565b600061087261086b61119a565b84846111a9565b5060015b92915050565b6060610886611a3c565b50604080516060810182526001600160a01b038816600081815260026020908152908490205483528201529081018690526108c4878287878761132c565b6108ff5760405162461bcd60e51b8152600401808060200182810382526021815260200180611b576021913960400191505060405180910390fd5b6001600160a01b03871660009081526002602052604090205461092990600163ffffffff61140916565b6001600160a01b03881660008181526002602090815260408083209490945583519283523383820181905260609484018581528b51958501959095528a517f5845892132946850460bff5a0083f71031bc5bf9aadcd40f1de79423eac9b10b958d9592948d94919260808501928601918190849084905b838110156109b85781810151838201526020016109a0565b50505050905090810190601f1680156109e55780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a160006060306001600160a01b0316888a6040516020018083805190602001908083835b60208310610a365780518252601f199092019160209182019101610a17565b6001836020036101000a038019825116818451168082178552505050505050905001826001600160a01b03166001600160a01b031660601b8152601401925050506040516020818303038152906040526040518082805190602001908083835b60208310610ab55780518252601f199092019160209182019101610a96565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610b17576040519150601f19603f3d011682016040523d82523d6000602084013e610b1c565b606091505b509150915081610b73576040805162461bcd60e51b815260206004820152601c60248201527f46756e6374696f6e2063616c6c206e6f74207375636365737366756c00000000604482015290519081900360640190fd5b98975050505050505050565b604051806040016040528060018152602001603160f81b81525081565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610bf757600080fd5b505afa158015610c0b573d6000803e3d6000fd5b505050506040513d6020811015610c2157600080fd5b5051905090565b60015490565b6000610c3b848484611463565b610cb184610c4761119a565b610cac85604051806060016040528060288152602001611b2f602891396001600160a01b038a16600090815260046020526040812090610c8561119a565b6001600160a01b03168152602081019190915260400160002054919063ffffffff6115ce16565b6111a9565b5060019392505050565b60009081526009602052604090206002015490565b6001600160a01b031660009081526002602052604090205490565b600082815260096020526040902060020154610d0e90610d0961119a565b610fd3565b610d495760405162461bcd60e51b815260040180806020018281038252602f815260200180611a89602f913960400191505060405180910390fd5b610d538282611665565b5050565b60085460ff1690565b4690565b610d6c61119a565b6001600160a01b0316816001600160a01b031614610dbb5760405162461bcd60e51b815260040180806020018281038252602f815260200180611bc1602f913960400191505060405180910390fd5b610d5382826116d4565b6000610872610dd261119a565b84610cac8560046000610de361119a565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff61140916565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015610e515750600081115b610e8c5760405162461bcd60e51b8152600401808060200182810382526025815260200180611b0a6025913960400191505060405180910390fd5b60005b8251811015610efe57828181518110610ea457fe5b60200260200101516001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600101610e8f565b50505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610f7c57600080fd5b505afa158015610f90573d6000803e3d6000fd5b505050506040513d6020811015610fa657600080fd5b505192915050565b6000828152600960205260408120610fcc908363ffffffff61174316565b9392505050565b6000828152600960205260408120610fcc908363ffffffff61174f16565b60078054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108545780601f1061082957610100808354040283529160200191610854565b600081565b600061087261106461119a565b84610cac85604051806060016040528060258152602001611b9c602591396004600061108e61119a565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff6115ce16565b60006108726110d261119a565b8484611463565b600081815260096020526040812061087690611764565b60008281526009602052604090206002015461110e90610d0961119a565b610dbb5760405162461bcd60e51b8152600401808060200182810382526030815260200180611ada6030913960400191505060405180910390fd5b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b604080516d5052454449434154455f524f4c4560901b8152905190819003600e01902081565b60006111a461176f565b905090565b6001600160a01b0383166111ee5760405162461bcd60e51b8152600401808060200182810382526024815260200180611b786024913960400191505060405180910390fd5b6001600160a01b0382166112335760405162461bcd60e51b8152600401808060200182810382526022815260200180611ab86022913960400191505060405180910390fd5b336001600160a01b03841614156112ca577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166320379ee56040518163ffffffff1660e01b815260040160206040518083038186803b15801561129d57600080fd5b505afa1580156112b1573d6000803e3d6000fd5b505050506040513d60208110156112c757600080fd5b50505b6001600160a01b03808416600081815260046020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b60006001600160a01b0386166113735760405162461bcd60e51b8152600401808060200182810382526025815260200180611b0a6025913960400191505060405180910390fd5b6001611386611381876117cd565b611836565b83868660405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156113e0573d6000803e3d6000fd5b505050602060405103516001600160a01b0316866001600160a01b031614905095945050505050565b600082820183811015610fcc576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3604080516001600160a01b038581166024830152848116604483015260648201849052336084808401919091528351808403909101815260a490920183526020820180516001600160e01b0316630431462b60e31b178152925182516000947f000000000000000000000000000000000000000000000000000000000000000093909316939282918083835b602083106115595780518252601f19909201916020918201910161153a565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146115bb576040519150601f19603f3d011682016040523d82523d6000602084013e6115c0565b606091505b5050905080610efe57600080fd5b6000818484111561165d5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561162257818101518382015260200161160a565b50505050905090810190601f16801561164f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828152600960205260409020611683908263ffffffff61188216565b15610d535761169061119a565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008281526009602052604090206116f2908263ffffffff61189716565b15610d53576116ff61119a565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b6000610fcc83836118ac565b6000610fcc836001600160a01b038416611910565b600061087682611928565b6000333014156117c75760606000368080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050503601516001600160a01b031691506117ca9050565b50335b90565b8051602080830151604093840151805190830120845173022afa23c1fbe618d9d92ba50a6c9c248d22a6a381850152808601949094526001600160a01b0390911660608401526080808401919091528351808403909101815260a0909201909252805191012090565b6000611840610c28565b82604051602001808061190160f01b81525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b6000610fcc836001600160a01b03841661192c565b6000610fcc836001600160a01b038416611976565b815460009082106118ee5760405162461bcd60e51b8152600401808060200182810382526022815260200180611a676022913960400191505060405180910390fd5b8260000182815481106118fd57fe5b9060005260206000200154905092915050565b60009081526001919091016020526040902054151590565b5490565b60006119388383611910565b61196e57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610876565b506000610876565b60008181526001830160205260408120548015611a3257835460001980830191908101906000908790839081106119a957fe5b90600052602060002001549050808760000184815481106119c657fe5b6000918252602080832090910192909255828152600189810190925260409020908401905586548790806119f657fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050610876565b6000915050610876565b60405180606001604052806000815260200160006001600160a01b0316815260200160608152509056fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e6473416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f206772616e7445524332303a20617070726f766520746f20746865207a65726f2061646472657373416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f207265766f6b654e61746976654d6574615472616e73616374696f6e3a20494e56414c49445f5349474e455245524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655369676e657220616e64207369676e617475726520646f206e6f74206d6174636845524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636520726f6c657320666f722073656c66a26469706673582212200bc398e86ee542f98eaf7b215c9efca7abba8c6bfa33a5a15e9e774d92ee106264736f6c63430006060033454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c6164647265737320766572696679696e67436f6e74726163742c627974657333322073616c7429