[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "ERC721EnumerableForbiddenBatchMint", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC721IncorrectOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC721InsufficientApproval", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC721InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "name": "ERC721InvalidOperator", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC721InvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC721InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC721InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC721NonexistentToken", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "ERC721OutOfBoundsIndex", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "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": "approved", "type": "bool" } ], "name": "ApprovalForAll", "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": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "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": "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": "index", "type": "uint256" } ], "name": "tokenByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "tokenOfOwnerByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "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": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
608060405234801561001057600080fd5b506040518060400160405280600a81526020016943727970746f4465767360b01b8152506040518060400160405280600281526020016110d160f21b815250816000908161005e9190610112565b50600161006b8282610112565b5050506101d0565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061009d57607f821691505b6020821081036100bd57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561010d57806000526020600020601f840160051c810160208510156100ea5750805b601f840160051c820191505b8181101561010a57600081556001016100f6565b50505b505050565b81516001600160401b0381111561012b5761012b610073565b61013f816101398454610089565b846100c3565b6020601f821160018114610173576000831561015b5750848201515b600019600385901b1c1916600184901b17845561010a565b600084815260208120601f198516915b828110156101a35787850151825560209485019460019092019101610183565b50848210156101c15786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b611388806101df6000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c806342842e0e116100a257806395d89b411161007157806395d89b4114610219578063a22cb46514610221578063b88d4fde14610234578063c87b56dd14610247578063e985e9c51461025a57600080fd5b806342842e0e146101cd5780634f6ccce7146101e05780636352211e146101f357806370a082311461020657600080fd5b80631249c58b116100de5780631249c58b1461018d57806318160ddd1461019557806323b872dd146101a75780632f745c59146101ba57600080fd5b806301ffc9a71461011057806306fdde0314610138578063081812fc1461014d578063095ea7b314610178575b600080fd5b61012361011e366004610fa2565b61026d565b60405190151581526020015b60405180910390f35b610140610298565b60405161012f919061100f565b61016061015b366004611022565b61032a565b6040516001600160a01b03909116815260200161012f565b61018b610186366004611057565b610353565b005b61018b610362565b6008545b60405190815260200161012f565b61018b6101b5366004611081565b610376565b6101996101c8366004611057565b610406565b61018b6101db366004611081565b61046b565b6101996101ee366004611022565b61048b565b610160610201366004611022565b6104e4565b6101996102143660046110be565b6104ef565b610140610537565b61018b61022f3660046110d9565b610546565b61018b61024236600461112b565b610551565b610140610255366004611022565b610569565b61012361026836600461120f565b6105de565b60006001600160e01b0319821663780e9d6360e01b148061029257506102928261060c565b92915050565b6060600080546102a790611242565b80601f01602080910402602001604051908101604052809291908181526020018280546102d390611242565b80156103205780601f106102f557610100808354040283529160200191610320565b820191906000526020600020905b81548152906001019060200180831161030357829003601f168201915b5050505050905090565b60006103358261065c565b506000828152600460205260409020546001600160a01b0316610292565b61035e828233610695565b5050565b6103743361036f60085490565b6106a2565b565b6001600160a01b0382166103a557604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006103b28383336106bc565b9050836001600160a01b0316816001600160a01b031614610400576040516364283d7b60e01b81526001600160a01b038086166004830152602482018490528216604482015260640161039c565b50505050565b6000610411836104ef565b82106104425760405163295f44f760e21b81526001600160a01b03841660048201526024810183905260440161039c565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b61048683838360405180602001604052806000815250610551565b505050565b600061049660085490565b82106104bf5760405163295f44f760e21b8152600060048201526024810183905260440161039c565b600882815481106104d2576104d261127c565b90600052602060002001549050919050565b60006102928261065c565b60006001600160a01b03821661051b576040516322718ad960e21b81526000600482015260240161039c565b506001600160a01b031660009081526003602052604090205490565b6060600180546102a790611242565b61035e338383610791565b61055c848484610376565b6104003385858585610830565b60606105748261065c565b50600061058c60408051602081019091526000815290565b905060008151116105ac57604051806020016040528060008152506105d7565b806105b68461095b565b6040516020016105c7929190611292565b6040516020818303038152906040525b9392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006001600160e01b031982166380ac58cd60e01b148061063d57506001600160e01b03198216635b5e139f60e01b145b8061029257506301ffc9a760e01b6001600160e01b0319831614610292565b6000818152600260205260408120546001600160a01b03168061029257604051637e27328960e01b81526004810184905260240161039c565b61048683838360016109ee565b61035e828260405180602001604052806000815250610af4565b6000806106ca858585610b0c565b90506001600160a01b0381166107275761072284600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b61074a565b846001600160a01b0316816001600160a01b03161461074a5761074a8185610c05565b6001600160a01b0385166107665761076184610c86565b610789565b846001600160a01b0316816001600160a01b031614610789576107898585610d35565b949350505050565b6001600160a01b0382166107c357604051630b61174360e31b81526001600160a01b038316600482015260240161039c565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b1561095457604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906108729088908890879087906004016112c1565b6020604051808303816000875af19250505080156108ad575060408051601f3d908101601f191682019092526108aa918101906112fe565b60015b610916573d8080156108db576040519150601f19603f3d011682016040523d82523d6000602084013e6108e0565b606091505b50805160000361090e57604051633250574960e11b81526001600160a01b038516600482015260240161039c565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b1461095257604051633250574960e11b81526001600160a01b038516600482015260240161039c565b505b5050505050565b6060600061096883610d85565b600101905060008167ffffffffffffffff81111561098857610988611115565b6040519080825280601f01601f1916602001820160405280156109b2576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846109bc57509392505050565b8080610a0257506001600160a01b03821615155b15610ac4576000610a128461065c565b90506001600160a01b03831615801590610a3e5750826001600160a01b0316816001600160a01b031614155b8015610a515750610a4f81846105de565b155b15610a7a5760405163a9fbf51f60e01b81526001600160a01b038416600482015260240161039c565b8115610ac25783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b610afe8383610e5d565b610486336000858585610830565b6000828152600260205260408120546001600160a01b0390811690831615610b3957610b39818486610ec2565b6001600160a01b03811615610b7757610b566000856000806109ee565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b03851615610ba6576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6000610c10836104ef565b6000838152600760209081526040808320546001600160a01b0388168452600690925290912091925090818314610c6757600083815260208281526040808320548584528184208190558352600790915290208290555b6000938452600760209081526040808620869055938552525081205550565b600854600090610c989060019061131b565b60008381526009602052604081205460088054939450909284908110610cc057610cc061127c565b906000526020600020015490508060088381548110610ce157610ce161127c565b6000918252602080832090910192909255828152600990915260408082208490558582528120556008805480610d1957610d1961133c565b6001900381819060005260206000200160009055905550505050565b60006001610d42846104ef565b610d4c919061131b565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310610dc45772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310610df0576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610e0e57662386f26fc10000830492506010015b6305f5e1008310610e26576305f5e100830492506008015b6127108310610e3a57612710830492506004015b60648310610e4c576064830492506002015b600a83106102925760010192915050565b6001600160a01b038216610e8757604051633250574960e11b81526000600482015260240161039c565b6000610e95838360006106bc565b90506001600160a01b03811615610486576040516339e3563760e11b81526000600482015260240161039c565b610ecd838383610f26565b610486576001600160a01b038316610efb57604051637e27328960e01b81526004810182905260240161039c565b60405163177e802f60e01b81526001600160a01b03831660048201526024810182905260440161039c565b60006001600160a01b038316158015906107895750826001600160a01b0316846001600160a01b03161480610f605750610f6084846105de565b806107895750506000908152600460205260409020546001600160a01b03908116911614919050565b6001600160e01b031981168114610f9f57600080fd5b50565b600060208284031215610fb457600080fd5b81356105d781610f89565b60005b83811015610fda578181015183820152602001610fc2565b50506000910152565b60008151808452610ffb816020860160208601610fbf565b601f01601f19169290920160200192915050565b6020815260006105d76020830184610fe3565b60006020828403121561103457600080fd5b5035919050565b80356001600160a01b038116811461105257600080fd5b919050565b6000806040838503121561106a57600080fd5b6110738361103b565b946020939093013593505050565b60008060006060848603121561109657600080fd5b61109f8461103b565b92506110ad6020850161103b565b929592945050506040919091013590565b6000602082840312156110d057600080fd5b6105d78261103b565b600080604083850312156110ec57600080fd5b6110f58361103b565b91506020830135801515811461110a57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561114157600080fd5b61114a8561103b565b93506111586020860161103b565b925060408501359150606085013567ffffffffffffffff81111561117b57600080fd5b8501601f8101871361118c57600080fd5b803567ffffffffffffffff8111156111a6576111a6611115565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156111d5576111d5611115565b6040528181528282016020018910156111ed57600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b6000806040838503121561122257600080fd5b61122b8361103b565b91506112396020840161103b565b90509250929050565b600181811c9082168061125657607f821691505b60208210810361127657634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b600083516112a4818460208801610fbf565b8351908301906112b8818360208801610fbf565b01949350505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906112f490830184610fe3565b9695505050505050565b60006020828403121561131057600080fd5b81516105d781610f89565b8181038181111561029257634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fdfea26469706673582212207e2fdb76f81fc21f0f2a1321a49912aef6a5a7f52ab958607b83c64f499c6dac64736f6c634300081a0033