[ { "inputs": [ { "internalType": "address", "name": "_verifyAddress", "type": "address" }, { "internalType": "string", "name": "_baseTokenURI", "type": "string" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "oldGovernance", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newGovernance", "type": "address" } ], "name": "ChangeGovernance", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "indexed": false, "internalType": "uint256[]", "name": "values", "type": "uint256[]" } ], "name": "TransferBatch", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "id", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "TransferSingle", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "value", "type": "string" }, { "indexed": true, "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "URI", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "oldVerifyAddress", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newVer", "type": "address" } ], "name": "VerifyAddress", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "accounts", "type": "address[]" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" } ], "name": "balanceOfBatch", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "baseTokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_newGovernance", "type": "address" } ], "name": "changeGovernance", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_newVerifyAddress", "type": "address" } ], "name": "changeVerifyAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_id", "type": "uint256" } ], "name": "checkId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "contentURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "eoaBalance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "exists", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "governance", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "ids", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "validityStartTimestamp", "type": "uint256" }, { "internalType": "uint256", "name": "validityEndTimestamp", "type": "uint256" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address payable", "name": "toTba", "type": "address" }, { "internalType": "address", "name": "eoa", "type": "address" } ], "internalType": "struct OAT.VerifyRequest", "name": "_req", "type": "tuple" }, { "internalType": "bytes", "name": "_signature", "type": "bytes" } ], "name": "mint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeBatchTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_baseTokenURI", "type": "string" } ], "name": "setBaseTokenURI", "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": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "uri", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "verifyAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "validityStartTimestamp", "type": "uint256" }, { "internalType": "uint256", "name": "validityEndTimestamp", "type": "uint256" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address payable", "name": "toTba", "type": "address" }, { "internalType": "address", "name": "eoa", "type": "address" } ], "internalType": "struct OAT.VerifyRequest", "name": "_req", "type": "tuple" }, { "internalType": "bytes", "name": "_signature", "type": "bytes" } ], "name": "verifyRequest", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" } ]
600060395560e0604052602560808181529062002c6460a03980516200002e91603a916020909101906200032f565b5060408051808201909152600780825266141bd41413d05560ca1b60209092019182526200005f91603b916200032f565b503480156200006d57600080fd5b5060405162002ca938038062002ca98339810160408190526200009091620003eb565b806200009c816200020b565b50600454610100900460ff16620000ba5760045460ff1615620000c4565b620000c462000224565b6200012d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b600454610100900460ff1615801562000150576004805461ffff19166101011790555b620001b06040518060400160405280601781526020017f436c61696d546f6b656e576974685369676e6174757265000000000000000000815250604051806040016040528060018152602001603160f81b8152506200024260201b60201c565b603d8054336001600160a01b031991821617909155603e80549091166001600160a01b0385161790558151620001ee90603f9060208501906200032f565b50801562000202576004805461ff00191690555b50505062000528565b8051620002209060029060208401906200032f565b5050565b60006200023c30620002aa60201b62000d211760201c565b15905090565b600454610100900460ff166200029e5760405162461bcd60e51b815260206004820152602b602482015260008051602062002c8983398151915260448201526a6e697469616c697a696e6760a81b606482015260840162000124565b620002208282620002b9565b6001600160a01b03163b151590565b600454610100900460ff16620003155760405162461bcd60e51b815260206004820152602b602482015260008051602062002c8983398151915260448201526a6e697469616c697a696e6760a81b606482015260840162000124565b815160209283012081519190920120600591909155600655565b8280546200033d90620004eb565b90600052602060002090601f016020900481019282620003615760008555620003ac565b82601f106200037c57805160ff1916838001178555620003ac565b82800160010185558215620003ac579182015b82811115620003ac5782518255916020019190600101906200038f565b50620003ba929150620003be565b5090565b5b80821115620003ba5760008155600101620003bf565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215620003ff57600080fd5b82516001600160a01b03811681146200041757600080fd5b602084810151919350906001600160401b03808211156200043757600080fd5b818601915086601f8301126200044c57600080fd5b815181811115620004615762000461620003d5565b604051601f8201601f19908116603f011681019083821181831017156200048c576200048c620003d5565b816040528281528986848701011115620004a557600080fd5b600093505b82841015620004c95784840186015181850187015292850192620004aa565b82841115620004db5760008684830101525b8096505050505050509250929050565b600181811c908216806200050057607f821691505b602082108114156200052257634e487b7160e01b600052602260045260246000fd5b50919050565b61272c80620005386000396000f3fe608060405234801561001057600080fd5b50600436106101725760003560e01c80636e667c35116100de578063c2a0481011610097578063e985e9c511610071578063e985e9c51461033f578063f242432a1461037b578063fa4546461461038e578063fac333ac146103b657600080fd5b8063c2a0481014610324578063c87b56dd146101d5578063d547cfb71461033757600080fd5b80636e667c35146101d557806395d89b41146102c357806399572d6f146102cb578063a0d57ed4146102de578063a22cb465146102f1578063bd85b0391461030457600080fd5b80632f587016116101305780632f5870161461021d57806330176e13146102305780634e1273f4146102435780634f558e79146102635780635aa6e6751461028557806365925b90146102b057600080fd5b8062fdd58e1461017757806301ffc9a71461019d57806306fdde03146101c05780630e89341c146101d5578063205a26fb146101e85780632eb2c2d614610208575b600080fd5b61018a610185366004611c7b565b6103d6565b6040519081526020015b60405180910390f35b6101b06101ab366004611cbd565b61046d565b6040519015158152602001610194565b6101c86104bf565b6040516101949190611d3d565b6101c86101e3366004611d50565b61054d565b61018a6101f6366004611d50565b6000908152603c602052604090205490565b61021b610216366004611ebf565b610581565b005b6101b061022b366004611f6d565b610618565b61021b61023e366004611ff8565b610697565b610256610251366004612041565b6106d8565b6040516101949190612149565b6101b0610271366004611d50565b600090815260036020526040902054151590565b603d54610298906001600160a01b031681565b6040516001600160a01b039091168152602001610194565b603e54610298906001600160a01b031681565b6101c8610802565b61021b6102d936600461215c565b61080f565b61021b6102ec36600461215c565b61089b565b61021b6102ff366004612179565b61091f565b61018a610312366004611d50565b60009081526003602052604090205490565b61018a610332366004611f6d565b61092a565b6101c8610c8d565b6101b061034d3660046121b7565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b61021b6103893660046121e5565b610c9a565b61018a61039c366004611c7b565b604060208181526000938452818420905290825290205481565b61018a6103c4366004611d50565b603c6020526000908152604090205481565b60006001600160a01b0383166104475760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a2062616c616e636520717565727920666f7220746865207a60448201526a65726f206164647265737360a81b60648201526084015b60405180910390fd5b506000908152602081815260408083206001600160a01b03949094168352929052205490565b60006001600160e01b03198216636cdb3d1360e11b148061049e57506001600160e01b031982166303a24d0760e21b145b806104b957506301ffc9a760e01b6001600160e01b03198316145b92915050565b603a80546104cc9061224e565b80601f01602080910402602001604051908101604052809291908181526020018280546104f89061224e565b80156105455780601f1061051a57610100808354040283529160200191610545565b820191906000526020600020905b81548152906001019060200180831161052857829003601f168201915b505050505081565b6060603f61055a83610d30565b60405160200161056b9291906122a5565b6040516020818303038152906040529050919050565b6001600160a01b03851633148061059d575061059d853361034d565b6106045760405162461bcd60e51b815260206004820152603260248201527f455243313135353a207472616e736665722063616c6c6572206973206e6f74206044820152711bdddb995c881b9bdc88185c1c1c9bdd995960721b606482015260840161043e565b6106118585858585610e36565b5050505050565b600042846020013511158015610632575042846040013510155b6106705760405162461bcd60e51b815260206004820152600f60248201526e1c995c5d595cdd08195e1c1a5c9959608a1b604482015260640161043e565b600061067d858585611021565b603e546001600160a01b0390811691161495945050505050565b603d546001600160a01b031633146106c15760405162461bcd60e51b815260040161043e9061234c565b80516106d490603f906020840190611bcd565b5050565b6060815183511461073d5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b606482015260840161043e565b6000835167ffffffffffffffff81111561075957610759611d69565b604051908082528060200260200182016040528015610782578160200160208202803683370190505b50905060005b84518110156107fa576107cd8582815181106107a6576107a6612374565b60200260200101518583815181106107c0576107c0612374565b60200260200101516103d6565b8282815181106107df576107df612374565b60209081029190910101526107f3816123a0565b9050610788565b509392505050565b603b80546104cc9061224e565b603d546001600160a01b031633146108395760405162461bcd60e51b815260040161043e9061234c565b603d80546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527f95b941bbbf1347e24e6cbb14f7553d49f9244dc4dee558b79dcb1fd8b0434fb591015b60405180910390a15050565b603d546001600160a01b031633146108c55760405162461bcd60e51b815260040161043e9061234c565b603e80546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527fb0004d92f265dd463c0a0e5d05c6022df25ae52875f1e1a01c95e0a6c0cdc3e8910161088f565b6106d433838361107a565b6000808460600135116109715760405162461bcd60e51b815260206004820152600f60248201526e125b9d985b1a59081d1bdad95b9259608a1b604482015260640161043e565b61098160c0850160a0860161215c565b6001600160a01b0316336001600160a01b0316146109d25760405162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b21039b2b73232b960911b604482015260640161043e565b3360009081526040602081815281832060608801358452905290205415610a295760405162461bcd60e51b815260206004820152600b60248201526a496e76616c696420656f6160a81b604482015260640161043e565b83356000908152603c602052604090205415610a745760405162461bcd60e51b815260206004820152600a602482015269125b9d985b1a59081a5960b21b604482015260640161043e565b6000610a8660a086016080870161215c565b90506000806000836001600160a01b031663fc0c546a6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610acb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aef91906123bb565b6040516331a9108f60e11b815260048101829052929550909350915082906001600160a01b03821690636352211e90602401602060405180830381865afa158015610b3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6291906123f4565b6001600160a01b0316336001600160a01b031614610bb25760405162461bcd60e51b815260206004820152600d60248201526c2737ba103a31309037bbb732b960991b604482015260640161043e565b610bbd898989610618565b610bfd5760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b604482015260640161043e565b88356000908152603c6020908152604080832060608d0135908190553384528183528184209084529091528120805460019290610c3b908490612411565b90915550610c7b9050610c5460a08b0160808c0161215c565b8a60600135600160405180604001604052806002815260200161060f60f31b81525061115b565b50505060609095013595945050505050565b603f80546104cc9061224e565b6001600160a01b038516331480610cb65750610cb6853361034d565b610d145760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201526808185c1c1c9bdd995960ba1b606482015260840161043e565b610611858585858561126b565b6001600160a01b03163b151590565b606081610d545750506040805180820190915260018152600360fc1b602082015290565b8160005b8115610d7e5780610d68816123a0565b9150610d779050600a8361243f565b9150610d58565b60008167ffffffffffffffff811115610d9957610d99611d69565b6040519080825280601f01601f191660200182016040528015610dc3576020820181803683370190505b5090505b8415610e2e57610dd8600183612453565b9150610de5600a8661246a565b610df0906030612411565b60f81b818381518110610e0557610e05612374565b60200101906001600160f81b031916908160001a905350610e27600a8661243f565b9450610dc7565b949350505050565b8151835114610e985760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b606482015260840161043e565b6001600160a01b038416610ebe5760405162461bcd60e51b815260040161043e9061247e565b33610ecd818787878787611388565b60005b8451811015610fb3576000858281518110610eed57610eed612374565b602002602001015190506000858381518110610f0b57610f0b612374565b602090810291909101810151600084815280835260408082206001600160a01b038e168352909352919091205490915081811015610f5b5760405162461bcd60e51b815260040161043e906124c3565b6000838152602081815260408083206001600160a01b038e8116855292528083208585039055908b16825281208054849290610f98908490612411565b9250508190555050505080610fac906123a0565b9050610ed0565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb878760405161100392919061250d565b60405180910390a4611019818787878787611494565b505050505050565b6000610e2e61103e611032866115f0565b80519060200120611689565b84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506116d792505050565b816001600160a01b0316836001600160a01b031614156110ee5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b606482015260840161043e565b6001600160a01b03838116600081815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0384166111bb5760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b606482015260840161043e565b336111db816000876111cc886116f3565b6111d5886116f3565b87611388565b6000848152602081815260408083206001600160a01b03891684529091528120805485929061120b908490612411565b909155505060408051858152602081018590526001600160a01b0380881692600092918516917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46106118160008787878761173e565b6001600160a01b0384166112915760405162461bcd60e51b815260040161043e9061247e565b336112a18187876111cc886116f3565b6000848152602081815260408083206001600160a01b038a168452909152902054838110156112e25760405162461bcd60e51b815260040161043e906124c3565b6000858152602081815260408083206001600160a01b038b811685529252808320878503905590881682528120805486929061131f908490612411565b909155505060408051868152602081018690526001600160a01b03808916928a821692918616917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a461137f82888888888861173e565b50505050505050565b6001600160a01b03851661140f5760005b835181101561140d578281815181106113b4576113b4612374565b6020026020010151600360008684815181106113d2576113d2612374565b6020026020010151815260200190815260200160002060008282546113f79190612411565b909155506114069050816123a0565b9050611399565b505b6001600160a01b0384166110195760005b835181101561137f5782818151811061143b5761143b612374565b60200260200101516003600086848151811061145957611459612374565b60200260200101518152602001908152602001600020600082825461147e9190612453565b9091555061148d9050816123a0565b9050611420565b6001600160a01b0384163b156110195760405163bc197c8160e01b81526001600160a01b0385169063bc197c81906114d89089908990889088908890600401612532565b6020604051808303816000875af1925050508015611513575060408051601f3d908101601f1916820190925261151091810190612590565b60015b6115c05761151f6125ad565b806308c379a0141561155957506115346125c9565b8061153f575061155b565b8060405162461bcd60e51b815260040161043e9190611d3d565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e20455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b606482015260840161043e565b6001600160e01b0319811663bc197c8160e01b1461137f5760405162461bcd60e51b815260040161043e90612653565b60607fa1c7e2980a44ebdffc4ca34102b2daa62073922677b44f25b44ad2e292ae0c588235602084013560408501358585013561163360a088016080890161215c565b61164360c0890160a08a0161215c565b6040805160208101989098528701959095526060860193909352608085019190915260a08401526001600160a01b0390811660c08401521660e08201526101000161056b565b60006104b96116966117f9565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b60008060006116e68585611879565b915091506107fa816118e9565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061172d5761172d612374565b602090810291909101015292915050565b6001600160a01b0384163b156110195760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190611782908990899088908890889060040161269b565b6020604051808303816000875af19250505080156117bd575060408051601f3d908101601f191682019092526117ba91810190612590565b60015b6117c95761151f6125ad565b6001600160e01b0319811663f23a6e6160e01b1461137f5760405162461bcd60e51b815260040161043e90612653565b60006118747f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f61182860055490565b6006546040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b905090565b6000808251604114156118b05760208301516040840151606085015160001a6118a487828585611aa7565b945094505050506118e2565b8251604014156118da57602083015160408401516118cf868383611b94565b9350935050506118e2565b506000905060025b9250929050565b60008160048111156118fd576118fd6126e0565b14156119065750565b600181600481111561191a5761191a6126e0565b14156119685760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161043e565b600281600481111561197c5761197c6126e0565b14156119ca5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161043e565b60038160048111156119de576119de6126e0565b1415611a375760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161043e565b6004816004811115611a4b57611a4b6126e0565b1415611aa45760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b606482015260840161043e565b50565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115611ade5750600090506003611b8b565b8460ff16601b14158015611af657508460ff16601c14155b15611b075750600090506004611b8b565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611b5b573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116611b8457600060019250925050611b8b565b9150600090505b94509492505050565b6000806001600160ff1b03831681611bb160ff86901c601b612411565b9050611bbf87828885611aa7565b935093505050935093915050565b828054611bd99061224e565b90600052602060002090601f016020900481019282611bfb5760008555611c41565b82601f10611c1457805160ff1916838001178555611c41565b82800160010185558215611c41579182015b82811115611c41578251825591602001919060010190611c26565b50611c4d929150611c51565b5090565b5b80821115611c4d5760008155600101611c52565b6001600160a01b0381168114611aa457600080fd5b60008060408385031215611c8e57600080fd5b8235611c9981611c66565b946020939093013593505050565b6001600160e01b031981168114611aa457600080fd5b600060208284031215611ccf57600080fd5b8135611cda81611ca7565b9392505050565b60005b83811015611cfc578181015183820152602001611ce4565b83811115611d0b576000848401525b50505050565b60008151808452611d29816020860160208601611ce1565b601f01601f19169290920160200192915050565b602081526000611cda6020830184611d11565b600060208284031215611d6257600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b601f8201601f1916810167ffffffffffffffff81118282101715611da557611da5611d69565b6040525050565b600067ffffffffffffffff821115611dc657611dc6611d69565b5060051b60200190565b600082601f830112611de157600080fd5b81356020611dee82611dac565b604051611dfb8282611d7f565b83815260059390931b8501820192828101915086841115611e1b57600080fd5b8286015b84811015611e365780358352918301918301611e1f565b509695505050505050565b600067ffffffffffffffff831115611e5b57611e5b611d69565b604051611e72601f8501601f191660200182611d7f565b809150838152848484011115611e8757600080fd5b83836020830137600060208583010152509392505050565b600082601f830112611eb057600080fd5b611cda83833560208501611e41565b600080600080600060a08688031215611ed757600080fd5b8535611ee281611c66565b94506020860135611ef281611c66565b9350604086013567ffffffffffffffff80821115611f0f57600080fd5b611f1b89838a01611dd0565b94506060880135915080821115611f3157600080fd5b611f3d89838a01611dd0565b93506080880135915080821115611f5357600080fd5b50611f6088828901611e9f565b9150509295509295909350565b600080600083850360e0811215611f8357600080fd5b60c0811215611f9157600080fd5b5083925060c084013567ffffffffffffffff80821115611fb057600080fd5b818601915086601f830112611fc457600080fd5b813581811115611fd357600080fd5b876020828501011115611fe557600080fd5b6020830194508093505050509250925092565b60006020828403121561200a57600080fd5b813567ffffffffffffffff81111561202157600080fd5b8201601f8101841361203257600080fd5b610e2e84823560208401611e41565b6000806040838503121561205457600080fd5b823567ffffffffffffffff8082111561206c57600080fd5b818501915085601f83011261208057600080fd5b8135602061208d82611dac565b60405161209a8282611d7f565b83815260059390931b85018201928281019150898411156120ba57600080fd5b948201945b838610156120e15785356120d281611c66565b825294820194908201906120bf565b965050860135925050808211156120f757600080fd5b5061210485828601611dd0565b9150509250929050565b600081518084526020808501945080840160005b8381101561213e57815187529582019590820190600101612122565b509495945050505050565b602081526000611cda602083018461210e565b60006020828403121561216e57600080fd5b8135611cda81611c66565b6000806040838503121561218c57600080fd5b823561219781611c66565b9150602083013580151581146121ac57600080fd5b809150509250929050565b600080604083850312156121ca57600080fd5b82356121d581611c66565b915060208301356121ac81611c66565b600080600080600060a086880312156121fd57600080fd5b853561220881611c66565b9450602086013561221881611c66565b93506040860135925060608601359150608086013567ffffffffffffffff81111561224257600080fd5b611f6088828901611e9f565b600181811c9082168061226257607f821691505b6020821081141561228357634e487b7160e01b600052602260045260246000fd5b50919050565b6000815161229b818560208601611ce1565b9290920192915050565b600080845481600182811c9150808316806122c157607f831692505b60208084108214156122e157634e487b7160e01b86526022600452602486fd5b8180156122f5576001811461230657612333565b60ff19861689528489019650612333565b60008b81526020902060005b8681101561232b5781548b820152908501908301612312565b505084890196505b5050505050506123438185612289565b95945050505050565b6020808252600e908201526d4e6f7420676f7665726e616e636560901b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156123b4576123b461238a565b5060010190565b6000806000606084860312156123d057600080fd5b8351925060208401516123e281611c66565b80925050604084015190509250925092565b60006020828403121561240657600080fd5b8151611cda81611c66565b600082198211156124245761242461238a565b500190565b634e487b7160e01b600052601260045260246000fd5b60008261244e5761244e612429565b500490565b6000828210156124655761246561238a565b500390565b60008261247957612479612429565b500690565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b604081526000612520604083018561210e565b8281036020840152612343818561210e565b6001600160a01b0386811682528516602082015260a06040820181905260009061255e9083018661210e565b8281036060840152612570818661210e565b905082810360808401526125848185611d11565b98975050505050505050565b6000602082840312156125a257600080fd5b8151611cda81611ca7565b600060033d11156125c65760046000803e5060005160e01c5b90565b600060443d10156125d75790565b6040516003193d81016004833e81513d67ffffffffffffffff816024840111818411171561260757505050505090565b828501915081518181111561261f5750505050505090565b843d87010160208285010111156126395750505050505090565b61264860208286010187611d7f565b509095945050505050565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b6001600160a01b03868116825285166020820152604081018490526060810183905260a0608082018190526000906126d590830184611d11565b979650505050505050565b634e487b7160e01b600052602160045260246000fdfea264697066735822122035cd315759e439e1c5d39273cd2cc1d2b5c3931d3cc4acea5c61c75bbf57557364736f6c634300080a0033506f5020506c616e6574204f6e2d636861696e20416368696576656d656e7420546f6b656e496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069000000000000000000000000e1e7d71dc094f50346311389b94450047694c38d0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000004168747470733a2f2f67772e706f70702e636c75622f696d2f6d61726b6574696e672f6f61742f706173732f7075626c69632f64657461696c3f746f6b656e49643d00000000000000000000000000000000000000000000000000000000000000