[ { "inputs": [ { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" }, { "internalType": "uint256", "name": "_maxSupply", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "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": "previousOwner", "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": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "_ids", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "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": "maxSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "mintNFT", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "minter", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "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": "address", "name": "_to", "type": "address" } ], "name": "setMinter", "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": "uint256", "name": "", "type": "uint256" } ], "name": "tokenIdAttribute", "outputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "string", "name": "text", "type": "string" } ], "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" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60806040523480156200001157600080fd5b5060405162003bc438038062003bc48339818101604052810190620000379190620002af565b828260006200004b6200016e60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35081600190805190602001906200010192919062000176565b5080600290805190602001906200011a92919062000176565b50505080600d8190555033600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050506200048c565b600033905090565b8280546200018490620003de565b90600052602060002090601f016020900481019282620001a85760008555620001f4565b82601f10620001c357805160ff1916838001178555620001f4565b82800160010185558215620001f4579182015b82811115620001f3578251825591602001919060010190620001d6565b5b50905062000203919062000207565b5090565b5b808211156200022257600081600090555060010162000208565b5090565b60006200023d62000237846200036b565b62000337565b9050828152602081018484840111156200025657600080fd5b62000263848285620003a8565b509392505050565b600082601f8301126200027d57600080fd5b81516200028f84826020860162000226565b91505092915050565b600081519050620002a98162000472565b92915050565b600080600060608486031215620002c557600080fd5b600084015167ffffffffffffffff811115620002e057600080fd5b620002ee868287016200026b565b935050602084015167ffffffffffffffff8111156200030c57600080fd5b6200031a868287016200026b565b92505060406200032d8682870162000298565b9150509250925092565b6000604051905081810181811067ffffffffffffffff8211171562000361576200036062000443565b5b8060405250919050565b600067ffffffffffffffff82111562000389576200038862000443565b5b601f19601f8301169050602081019050919050565b6000819050919050565b60005b83811015620003c8578082015181840152602081019050620003ab565b83811115620003d8576000848401525b50505050565b60006002820490506001821680620003f757607f821691505b602082108114156200040e576200040d62000414565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200047d816200039e565b81146200048957600080fd5b50565b613728806200049c6000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c80636352211e116100de578063b88d4fde11610097578063d5abeb0111610071578063d5abeb0114610473578063e985e9c514610491578063f2fde38b146104c1578063fca3b5aa146104dd57610173565b8063b88d4fde146103f6578063c04d5a2314610412578063c87b56dd1461044357610173565b80636352211e1461033457806370a0823114610364578063715018a6146103945780638da5cb5b1461039e57806395d89b41146103bc578063a22cb465146103da57610173565b806323b872dd1161013057806323b872dd1461024e5780632f745c591461026a57806342842e0e1461029a578063479e46a2146102b65780634f6ccce7146102d457806354ba0f271461030457610173565b806301ffc9a71461017857806306fdde03146101a857806307546172146101c6578063081812fc146101e4578063095ea7b31461021457806318160ddd14610230575b600080fd5b610192600480360381019061018d91906126d1565b6104f9565b60405161019f9190612fca565b60405180910390f35b6101b0610573565b6040516101bd9190612fe5565b60405180910390f35b6101ce610605565b6040516101db9190612f63565b60405180910390f35b6101fe60048036038101906101f99190612723565b61062b565b60405161020b9190612f63565b60405180910390f35b61022e60048036038101906102299190612695565b6106b0565b005b6102386107c8565b6040516102459190613287565b60405180910390f35b6102686004803603810190610263919061258f565b6107d5565b005b610284600480360381019061027f9190612695565b610835565b6040516102919190613287565b60405180910390f35b6102b460048036038101906102af919061258f565b6108da565b005b6102be6108fa565b6040516102cb9190613287565b60405180910390f35b6102ee60048036038101906102e99190612723565b610900565b6040516102fb9190613287565b60405180910390f35b61031e6004803603810190610319919061252a565b610997565b60405161032b9190613287565b60405180910390f35b61034e60048036038101906103499190612723565b610a9a565b60405161035b9190612f63565b60405180910390f35b61037e6004803603810190610379919061252a565b610b4c565b60405161038b9190613287565b60405180910390f35b61039c610c04565b005b6103a6610d57565b6040516103b39190612f63565b60405180910390f35b6103c4610d80565b6040516103d19190612fe5565b60405180910390f35b6103f460048036038101906103ef9190612659565b610e12565b005b610410600480360381019061040b91906125de565b610f93565b005b61042c60048036038101906104279190612723565b610ff5565b60405161043a9291906132a2565b60405180910390f35b61045d60048036038101906104589190612723565b6110a1565b60405161046a9190612fe5565b60405180910390f35b61047b611148565b6040516104889190613287565b60405180910390f35b6104ab60048036038101906104a69190612553565b61114e565b6040516104b89190612fca565b60405180910390f35b6104db60048036038101906104d6919061252a565b6111e2565b005b6104f760048036038101906104f2919061252a565b6113a4565b005b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061056c575061056b8261147d565b5b9050919050565b6060600180546105829061351d565b80601f01602080910402602001604051908101604052809291908181526020018280546105ae9061351d565b80156105fb5780601f106105d0576101008083540402835291602001916105fb565b820191906000526020600020905b8154815290600101906020018083116105de57829003601f168201915b5050505050905090565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006106368261155f565b610675576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066c90613187565b60405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006106bb82610a9a565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561072c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072390613227565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1661074b6115cb565b73ffffffffffffffffffffffffffffffffffffffff16148061077a5750610779816107746115cb565b61114e565b5b6107b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b090613107565b60405180910390fd5b6107c383836115d3565b505050565b6000600980549050905090565b6107e66107e06115cb565b8261168c565b610825576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081c90613247565b60405180910390fd5b61083083838361176a565b505050565b600061084083610b4c565b8210610881576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087890613007565b60405180910390fd5b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b6108f583838360405180602001604052806000815250610f93565b505050565b600c5481565b600061090a6107c8565b821061094b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094290613267565b60405180910390fd5b60098281548110610985577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549050919050565b6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2090613207565b60405180910390fd5b600d54600c5410610a6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6690613087565b60405180910390fd5b6001600c54610a7e9190613376565b600c81905550610a9082600c546119c6565b600c549050919050565b6000806003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610b43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3a90613147565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610bbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb490613127565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610c0c6115cb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c90906131a7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060028054610d8f9061351d565b80601f0160208091040260200160405190810160405280929190818152602001828054610dbb9061351d565b8015610e085780601f10610ddd57610100808354040283529160200191610e08565b820191906000526020600020905b815481529060010190602001808311610deb57829003601f168201915b5050505050905090565b610e1a6115cb565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7f906130c7565b60405180910390fd5b8060066000610e956115cb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16610f426115cb565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610f879190612fca565b60405180910390a35050565b610fa4610f9e6115cb565b8361168c565b610fe3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fda90613247565b60405180910390fd5b610fef84848484611b94565b50505050565b600b60205280600052604060002060009150905080600001549080600101805461101e9061351d565b80601f016020809104026020016040519081016040528092919081815260200182805461104a9061351d565b80156110975780601f1061106c57610100808354040283529160200191611097565b820191906000526020600020905b81548152906001019060200180831161107a57829003601f168201915b5050505050905082565b60606110ac8261155f565b6110eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e2906131e7565b60405180910390fd5b60006110f5611bf0565b905060008151116111155760405180602001604052806000815250611140565b8061111f84611c07565b604051602001611130929190612f3f565b6040516020818303038152906040525b915050919050565b600d5481565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6111ea6115cb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611277576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126e906131a7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156112e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112de90613047565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6113ac6115cb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611439576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611430906131a7565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061154857507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611558575061155782611db4565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661164683610a9a565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006116978261155f565b6116d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cd906130e7565b60405180910390fd5b60006116e183610a9a565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061175057508373ffffffffffffffffffffffffffffffffffffffff166117388461062b565b73ffffffffffffffffffffffffffffffffffffffff16145b806117615750611760818561114e565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661178a82610a9a565b73ffffffffffffffffffffffffffffffffffffffff16146117e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d7906131c7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611850576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611847906130a7565b60405180910390fd5b61185b838383611e1e565b6118666000826115d3565b6001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546118b691906133fd565b925050819055506001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461190d9190613376565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2d90613167565b60405180910390fd5b611a3f8161155f565b15611a7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7690613067565b60405180910390fd5b611a8b60008383611e1e565b6001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611adb9190613376565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b611b9f84848461176a565b611bab84848484611f32565b611bea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be190613027565b60405180910390fd5b50505050565b606060405180602001604052806000815250905090565b60606000821415611c4f576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611daf565b600082905060005b60008214611c81578080611c6a9061354f565b915050600a82611c7a91906133cc565b9150611c57565b60008167ffffffffffffffff811115611cc3577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611cf55781602001600182028036833780820191505090505b5090505b60008514611da857600182611d0e91906133fd565b9150600a85611d1d9190613598565b6030611d299190613376565b60f81b818381518110611d65577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85611da191906133cc565b9450611cf9565b8093505050505b919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b611e298383836120c9565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611e6c57611e67816120ce565b611eab565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611eaa57611ea98382612117565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611eee57611ee981612284565b611f2d565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611f2c57611f2b82826123c7565b5b5b505050565b6000611f538473ffffffffffffffffffffffffffffffffffffffff16612446565b156120bc578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611f7c6115cb565b8786866040518563ffffffff1660e01b8152600401611f9e9493929190612f7e565b602060405180830381600087803b158015611fb857600080fd5b505af1925050508015611fe957506040513d601f19601f82011682018060405250810190611fe691906126fa565b60015b61206c573d8060008114612019576040519150601f19603f3d011682016040523d82523d6000602084013e61201e565b606091505b50600081511415612064576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205b90613027565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506120c1565b600190505b949350505050565b505050565b600980549050600a600083815260200190815260200160002081905550600981908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000600161212484610b4c565b61212e91906133fd565b9050600060086000848152602001908152602001600020549050818114612213576000600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816008600083815260200190815260200160002081905550505b6008600084815260200190815260200160002060009055600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b6000600160098054905061229891906133fd565b90506000600a60008481526020019081526020016000205490506000600983815481106122ee577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020015490508060098381548110612336577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020018190555081600a600083815260200190815260200160002081905550600a60008581526020019081526020016000206000905560098054806123ab577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160009055905550505050565b60006123d283610b4c565b905081600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806008600084815260200190815260200160002081905550505050565b600080823b905060008111915050919050565b600061246c61246784613303565b6132d2565b90508281526020810184848401111561248457600080fd5b61248f8482856134db565b509392505050565b6000813590506124a681613696565b92915050565b6000813590506124bb816136ad565b92915050565b6000813590506124d0816136c4565b92915050565b6000815190506124e5816136c4565b92915050565b600082601f8301126124fc57600080fd5b813561250c848260208601612459565b91505092915050565b600081359050612524816136db565b92915050565b60006020828403121561253c57600080fd5b600061254a84828501612497565b91505092915050565b6000806040838503121561256657600080fd5b600061257485828601612497565b925050602061258585828601612497565b9150509250929050565b6000806000606084860312156125a457600080fd5b60006125b286828701612497565b93505060206125c386828701612497565b92505060406125d486828701612515565b9150509250925092565b600080600080608085870312156125f457600080fd5b600061260287828801612497565b945050602061261387828801612497565b935050604061262487828801612515565b925050606085013567ffffffffffffffff81111561264157600080fd5b61264d878288016124eb565b91505092959194509250565b6000806040838503121561266c57600080fd5b600061267a85828601612497565b925050602061268b858286016124ac565b9150509250929050565b600080604083850312156126a857600080fd5b60006126b685828601612497565b92505060206126c785828601612515565b9150509250929050565b6000602082840312156126e357600080fd5b60006126f1848285016124c1565b91505092915050565b60006020828403121561270c57600080fd5b600061271a848285016124d6565b91505092915050565b60006020828403121561273557600080fd5b600061274384828501612515565b91505092915050565b612755816134a5565b82525050565b61276481613431565b82525050565b61277381613443565b82525050565b600061278482613333565b61278e8185613349565b935061279e8185602086016134ea565b6127a781613685565b840191505092915050565b60006127bd8261333e565b6127c7818561335a565b93506127d78185602086016134ea565b6127e081613685565b840191505092915050565b60006127f68261333e565b612800818561336b565b93506128108185602086016134ea565b80840191505092915050565b6000612829602b8361335a565b91507f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008301527f74206f6620626f756e64730000000000000000000000000000000000000000006020830152604082019050919050565b600061288f60328361335a565b91507f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008301527f63656976657220696d706c656d656e74657200000000000000000000000000006020830152604082019050919050565b60006128f560268361335a565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061295b601c8361335a565b91507f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006000830152602082019050919050565b600061299b600b8361335a565b91507f216d617820737570706c790000000000000000000000000000000000000000006000830152602082019050919050565b60006129db60248361335a565b91507f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612a4160198361335a565b91507f4552433732313a20617070726f766520746f2063616c6c6572000000000000006000830152602082019050919050565b6000612a81602c8361335a565b91507f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008301527f697374656e7420746f6b656e00000000000000000000000000000000000000006020830152604082019050919050565b6000612ae760388361335a565b91507f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008301527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006020830152604082019050919050565b6000612b4d602a8361335a565b91507f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008301527f726f2061646472657373000000000000000000000000000000000000000000006020830152604082019050919050565b6000612bb360298361335a565b91507f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008301527f656e7420746f6b656e00000000000000000000000000000000000000000000006020830152604082019050919050565b6000612c1960208361335a565b91507f4552433732313a206d696e7420746f20746865207a65726f20616464726573736000830152602082019050919050565b6000612c59602c8361335a565b91507f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008301527f697374656e7420746f6b656e00000000000000000000000000000000000000006020830152604082019050919050565b6000612cbf60208361335a565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000612cff60298361335a565b91507f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008301527f73206e6f74206f776e00000000000000000000000000000000000000000000006020830152604082019050919050565b6000612d65602f8361335a565b91507f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008301527f6e6578697374656e7420746f6b656e00000000000000000000000000000000006020830152604082019050919050565b6000612dcb600a8361335a565b91507f216e6f206d696e746572000000000000000000000000000000000000000000006000830152602082019050919050565b6000612e0b60218361335a565b91507f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008301527f72000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612e7160318361335a565b91507f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008301527f776e6572206e6f7220617070726f7665640000000000000000000000000000006020830152604082019050919050565b6000612ed7602c8361335a565b91507f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008301527f7574206f6620626f756e647300000000000000000000000000000000000000006020830152604082019050919050565b612f398161349b565b82525050565b6000612f4b82856127eb565b9150612f5782846127eb565b91508190509392505050565b6000602082019050612f78600083018461275b565b92915050565b6000608082019050612f93600083018761274c565b612fa0602083018661275b565b612fad6040830185612f30565b8181036060830152612fbf8184612779565b905095945050505050565b6000602082019050612fdf600083018461276a565b92915050565b60006020820190508181036000830152612fff81846127b2565b905092915050565b600060208201905081810360008301526130208161281c565b9050919050565b6000602082019050818103600083015261304081612882565b9050919050565b60006020820190508181036000830152613060816128e8565b9050919050565b600060208201905081810360008301526130808161294e565b9050919050565b600060208201905081810360008301526130a08161298e565b9050919050565b600060208201905081810360008301526130c0816129ce565b9050919050565b600060208201905081810360008301526130e081612a34565b9050919050565b6000602082019050818103600083015261310081612a74565b9050919050565b6000602082019050818103600083015261312081612ada565b9050919050565b6000602082019050818103600083015261314081612b40565b9050919050565b6000602082019050818103600083015261316081612ba6565b9050919050565b6000602082019050818103600083015261318081612c0c565b9050919050565b600060208201905081810360008301526131a081612c4c565b9050919050565b600060208201905081810360008301526131c081612cb2565b9050919050565b600060208201905081810360008301526131e081612cf2565b9050919050565b6000602082019050818103600083015261320081612d58565b9050919050565b6000602082019050818103600083015261322081612dbe565b9050919050565b6000602082019050818103600083015261324081612dfe565b9050919050565b6000602082019050818103600083015261326081612e64565b9050919050565b6000602082019050818103600083015261328081612eca565b9050919050565b600060208201905061329c6000830184612f30565b92915050565b60006040820190506132b76000830185612f30565b81810360208301526132c981846127b2565b90509392505050565b6000604051905081810181811067ffffffffffffffff821117156132f9576132f8613656565b5b8060405250919050565b600067ffffffffffffffff82111561331e5761331d613656565b5b601f19601f8301169050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006133818261349b565b915061338c8361349b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156133c1576133c06135c9565b5b828201905092915050565b60006133d78261349b565b91506133e28361349b565b9250826133f2576133f16135f8565b5b828204905092915050565b60006134088261349b565b91506134138361349b565b925082821015613426576134256135c9565b5b828203905092915050565b600061343c8261347b565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006134b0826134b7565b9050919050565b60006134c2826134c9565b9050919050565b60006134d48261347b565b9050919050565b82818337600083830152505050565b60005b838110156135085780820151818401526020810190506134ed565b83811115613517576000848401525b50505050565b6000600282049050600182168061353557607f821691505b6020821081141561354957613548613627565b5b50919050565b600061355a8261349b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561358d5761358c6135c9565b5b600182019050919050565b60006135a38261349b565b91506135ae8361349b565b9250826135be576135bd6135f8565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b61369f81613431565b81146136aa57600080fd5b50565b6136b681613443565b81146136c157600080fd5b50565b6136cd8161344f565b81146136d857600080fd5b50565b6136e48161349b565b81146136ef57600080fd5b5056fea264697066735822122037703bd2a895350c3df623d7caa426209725b1fa30f4350f22821c0f015c1b8b64736f6c63430008000033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000003e8000000000000000000000000000000000000000000000000000000000000000754797266696e6700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000754797266696e6700000000000000000000000000000000000000000000000000