[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AccountBalanceOverflow", "type": "error" }, { "inputs": [], "name": "AddressAlreadyMinted", "type": "error" }, { "inputs": [], "name": "AddressNotSigned", "type": "error" }, { "inputs": [], "name": "AlreadyInitialized", "type": "error" }, { "inputs": [], "name": "BalanceQueryForZeroAddress", "type": "error" }, { "inputs": [], "name": "NewOwnerIsZeroAddress", "type": "error" }, { "inputs": [], "name": "NoHandoverRequest", "type": "error" }, { "inputs": [], "name": "NotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "TokenAlreadyExists", "type": "error" }, { "inputs": [], "name": "TokenDoesNotExist", "type": "error" }, { "inputs": [], "name": "TokenNotTransferable", "type": "error" }, { "inputs": [], "name": "TransferFromIncorrectOwner", "type": "error" }, { "inputs": [], "name": "TransferToNonERC721ReceiverImplementer", "type": "error" }, { "inputs": [], "name": "TransferToZeroAddress", "type": "error" }, { "inputs": [], "name": "Unauthorized", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "isApproved", "type": "bool" } ], "name": "ApprovalForAll", "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": "pendingOwner", "type": "address" } ], "name": "OwnershipHandoverCanceled", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "pendingOwner", "type": "address" } ], "name": "OwnershipHandoverRequested", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "oldOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "result", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "cancelOwnershipHandover", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "claimSignerAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pendingOwner", "type": "address" } ], "name": "completeOwnershipHandover", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "result", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner_", "type": "address" }, { "internalType": "address", "name": "claimSignerAddress_", "type": "address" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "result", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes", "name": "signature_", "type": "bytes" }, { "internalType": "bytes", "name": "data_", "type": "bytes" } ], "name": "mint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "result", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "result", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pendingOwner", "type": "address" } ], "name": "ownershipHandoverExpiresAt", "outputs": [ { "internalType": "uint256", "name": "result", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "hash_", "type": "bytes32" }, { "internalType": "bytes", "name": "signature_", "type": "bytes" } ], "name": "recoverSigner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "requestOwnershipHandover", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "isApproved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "claimSignerAddress_", "type": "address" } ], "name": "setClaimSignerAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "result", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "tokenURI", "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": "id", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "payable", "type": "function" } ]
608060405234801561001057600080fd5b5061001961001e565b6100dd565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100db576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b611519806100ec6000396000f3fe6080604052600436106101965760003560e01c806370a08231116100e1578063b4cbdd8b1161008a578063e985e9c511610064578063e985e9c514610460578063f04e283e14610496578063f2fde38b146104a9578063fee81cf4146104bc57600080fd5b8063b4cbdd8b1461040d578063b88d4fde1461042d578063c87b56dd1461044057600080fd5b806395d89b41116100bb57806395d89b411461038757806397aba7f9146103cd578063a22cb465146103ed57600080fd5b806370a0823114610338578063715018a6146103665780638da5cb5b1461036e57600080fd5b8063256929621161014357806354d1f13d1161011d57806354d1f13d146102fd5780636352211e146103055780636bc638931461032557600080fd5b806325692962146102c257806342842e0e146102ca578063485cc955146102dd57600080fd5b8063095ea7b311610174578063095ea7b3146102745780630b6fc1631461028957806323b872dd146102af57600080fd5b806301ffc9a71461019b57806306fdde03146101ed578063081812fc1461023c575b600080fd5b3480156101a757600080fd5b506101d86101b63660046110e6565b6301ffc9a760e09190911c9081146380ac58cd821417635b5e139f9091141790565b60405190151581526020015b60405180910390f35b3480156101f957600080fd5b5060408051808201909152600a81527f426f6f737420506173730000000000000000000000000000000000000000000060208201525b6040516101e49190611128565b34801561024857600080fd5b5061025c610257366004611176565b6104ef565b6040516001600160a01b0390911681526020016101e4565b6102876102823660046111a4565b61052e565b005b34801561029557600080fd5b5060005461025c906201000090046001600160a01b031681565b6102876102bd3660046111d0565b61053d565b61028761065f565b6102876102d83660046111d0565b6106af565b3480156102e957600080fd5b506102876102f8366004611211565b6106dc565b61028761084b565b34801561031157600080fd5b5061025c610320366004611176565b610887565b610287610333366004611293565b6108c5565b34801561034457600080fd5b506103586103533660046112ff565b6109e0565b6040519081526020016101e4565b610287610a1b565b34801561037a57600080fd5b50638b78c6d8195461025c565b34801561039357600080fd5b5060408051808201909152600281527f4250000000000000000000000000000000000000000000000000000000000000602082015261022f565b3480156103d957600080fd5b5061025c6103e836600461134b565b610a2f565b3480156103f957600080fd5b50610287610408366004611406565b610a70565b34801561041957600080fd5b506102876104283660046112ff565b610ac6565b61028761043b366004611439565b610b05565b34801561044c57600080fd5b5061022f61045b366004611176565b610b59565b34801561046c57600080fd5b506101d861047b366004611211565b601c52670a5a2e7a000000006008526000526030600c205490565b6102876104a43660046112ff565b610be6565b6102876104b73660046112ff565b610c26565b3480156104c857600080fd5b506103586104d73660046112ff565b63389a75e1600c908152600091909152602090205490565b600081600052673ec412a9852d173d60c11b601c52602060002082018201805460601b6105245763ceea21b66000526004601cfd5b6001015492915050565b610539338383610c4d565b5050565b610548838383610cee565b6000818152673ec412a9852d173d60c11b3317601c52602090208101810180546001600160a01b0394851694938416938116919082861483026105a657826105985763ceea21b66000526004601cfd5b63a11481006000526004601cfd5b846105b95763ea553b346000526004601cfd5b8560005281600101549250823314863314176105e7576030600c20546105e757634b6e7f186000526004601cfd5b82156105f557600082600101555b85851818905550601c600c8181208054600019019055600084905220805460010163ffffffff811661062f576301336cea6000526004601cfd5b90558082847fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600038a45b505050565b60006202a30067ffffffffffffffff164201905063389a75e1600c5233600052806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d600080a250565b6106ba83838361053d565b813b1561065a5761065a83838360405180602001604052806000815250610d2f565b600054610100900460ff16158080156106fc5750600054600160ff909116105b806107165750303b158015610716575060005460ff166001145b6107a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840160405180910390fd5b6000805460ff1916600117905580156107c9576000805461ff0019166101001790555b6107d283610dbb565b6000805475ffffffffffffffffffffffffffffffffffffffff00001916620100006001600160a01b03851602179055801561065a576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b63389a75e1600c523360005260006020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c92600080a2565b6000818152673ec412a9852d173d60c11b601c526020902081018101546001600160a01b0316806108c05763ceea21b66000526004601cfd5b919050565b60006108d3828401846112ff565b6000546040519192506201000090046001600160a01b031690610941906108fd90869086906114ac565b604051809103902087878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610a2f92505050565b6001600160a01b031614610981576040517f05d0fdda00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061098c826109e0565b11156109c4576040517ff5f915f000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180548101908190556109d9908290610df7565b5050505050565b6000816109f557638f4eb6046000526004601cfd5b673ec412a9852d173d60c11b601c528160005263ffffffff601c600c2054169050919050565b610a23610eb1565b610a2d6000610ecc565b565b6000610a69610a63846020527b19457468657265756d205369676e6564204d6573736167653a0a3332600052603c60042090565b83610f0a565b9392505050565b801515905081601c52670a5a2e7a0000000060085233600052806030600c2055806000528160601b60601c337f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160206000a35050565b610ace610eb1565b600080546001600160a01b03909216620100000275ffffffffffffffffffffffffffffffffffffffff000019909216919091179055565b610b1085858561053d565b833b156109d9576109d985858585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610d2f92505050565b60606000610b6683610887565b9050610a69610b7484610fb4565b610be06040518060400160405280600481526020017f3f69643d00000000000000000000000000000000000000000000000000000000815250610be06040518060600160405280602781526020016114bd60279139610bdb876001600160a01b0316610ff8565b61101c565b9061101c565b610bee610eb1565b63389a75e1600c52806000526020600c208054421115610c1657636f5e88186000526004601cfd5b60009055610c2381610ecc565b50565b610c2e610eb1565b8060601b610c4457637448fbae6000526004601cfd5b610c2381610ecc565b60001960601c828116925083811693508160005283673ec412a9852d173d60c11b17601c5260206000208201820180548216915081610c945763ceea21b66000526004601cfd5b818514851517610cba57816000526030600c2054610cba57634b6e7f186000526004601cfd5b6001018390558183827f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600038a450505050565b6001600160a01b0383161561065a576040517fc8fb086200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405163150b7a028082523360208301528560601b60601c604083015283606083015260808083015282518060a08401528015610d76578060c08401826020870160045afa505b60208360a48301601c860160008a5af1610d99573d15610d99573d6000843e3d83fd5b508060e01b825114610db35763d1a57ed66000526004601cfd5b505050505050565b6001600160a01b0316638b78c6d8198190558060007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b610e0360008383610cee565b6001600160a01b039091169081610e225763ea553b346000526004601cfd5b80600052673ec412a9852d173d60c11b601c5260206000208101810180548060601b15610e575763c991cbb16000526004601cfd5b831790556000829052601c600c20805460010163ffffffff8116610e83576301336cea6000526004601cfd5b9055808260007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8138a45050565b638b78c6d819543314610a2d576382b429006000526004601cfd5b638b78c6d81980546001600160a01b039092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a355565b6040516001908360005260208301516040526040835103610f5f57604083015160ff81901c601b016020527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16606052610f85565b6041835103610f8057606083015160001a6020526040830151606052610f85565b600091505b6020600160806000855afa5191503d610fa657638baa579f6000526004601cfd5b600060605260405292915050565b60606080604051019050602081016040526000815280600019835b928101926030600a8206018453600a900480610fcf575050819003601f19909101908152919050565b606061100382611077565b8051613078825260020160011990910190815292915050565b6040518251601f19906020810182165b858101518482015282018061102c575083518184018360208301165b86810151828201528401806110485750506000910183810160208101929092528352603f011660405292915050565b60606040519050608081016040526f30313233343536373839616263646566600f526002810190506028815260208101600060288201528260601b925060005b808101820184821a600f81165160018301538060041c51825350506001810190601219016110b7575050919050565b6000602082840312156110f857600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610a6957600080fd5b600060208083528351808285015260005b8181101561115557858101830151858201604001528201611139565b506000604082860101526040601f19601f8301168501019250505092915050565b60006020828403121561118857600080fd5b5035919050565b6001600160a01b0381168114610c2357600080fd5b600080604083850312156111b757600080fd5b82356111c28161118f565b946020939093013593505050565b6000806000606084860312156111e557600080fd5b83356111f08161118f565b925060208401356112008161118f565b929592945050506040919091013590565b6000806040838503121561122457600080fd5b823561122f8161118f565b9150602083013561123f8161118f565b809150509250929050565b60008083601f84011261125c57600080fd5b50813567ffffffffffffffff81111561127457600080fd5b60208301915083602082850101111561128c57600080fd5b9250929050565b600080600080604085870312156112a957600080fd5b843567ffffffffffffffff808211156112c157600080fd5b6112cd8883890161124a565b909650945060208701359150808211156112e657600080fd5b506112f38782880161124a565b95989497509550505050565b60006020828403121561131157600080fd5b8135610a698161118f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561135e57600080fd5b82359150602083013567ffffffffffffffff8082111561137d57600080fd5b818501915085601f83011261139157600080fd5b8135818111156113a3576113a361131c565b604051601f8201601f19908116603f011681019083821181831017156113cb576113cb61131c565b816040528281528860208487010111156113e457600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000806040838503121561141957600080fd5b82356114248161118f565b91506020830135801515811461123f57600080fd5b60008060008060006080868803121561145157600080fd5b853561145c8161118f565b9450602086013561146c8161118f565b935060408601359250606086013567ffffffffffffffff81111561148f57600080fd5b61149b8882890161124a565b969995985093965092949392505050565b818382376000910190815291905056fe68747470733a2f2f6170692e726162626974686f6c652e67672f76312f626f6f7374706173732fa264697066735822122062f8771e82b234d03d1d97368a0bf658308ea631e7963a9c3008afebc837beb864736f6c63430008130033