[ { "inputs": [ { "internalType": "address", "name": "artist_", "type": "address" }, { "internalType": "uint256", "name": "royaltyAmount_", "type": "uint256" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" }, { "internalType": "address", "name": "factory_", "type": "address" } ], "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": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "artist", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "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": [], "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": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "_salePrice", "type": "uint256" } ], "name": "royaltyInfo", "outputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint256", "name": "royaltyAmount", "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": "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": "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" } ]
60806040523480156200001157600080fd5b5060405162003dfa38038062003dfa8339818101604052810190620000379190620004b2565b828281600090805190602001906200005192919062000362565b5080600190805190602001906200006a92919062000362565b5050506200008d620000816200015460201b60201c565b6200015c60201b60201c565b83600a8190555084600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000149600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166200022260201b60201c565b505050505062000863565b600033905090565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620002326200015460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620002586200033860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620002b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002a890620005d6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141562000324576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200031b90620005b4565b60405180910390fd5b62000335816200015c60201b60201c565b50565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b8280546200037090620006dc565b90600052602060002090601f016020900481019282620003945760008555620003e0565b82601f10620003af57805160ff1916838001178555620003e0565b82800160010185558215620003e0579182015b82811115620003df578251825591602001919060010190620003c2565b5b509050620003ef9190620003f3565b5090565b5b808211156200040e576000816000905550600101620003f4565b5090565b600062000429620004238462000621565b620005f8565b9050828152602081018484840111156200044257600080fd5b6200044f848285620006a6565b509392505050565b60008151905062000468816200082f565b92915050565b600082601f8301126200048057600080fd5b81516200049284826020860162000412565b91505092915050565b600081519050620004ac8162000849565b92915050565b600080600080600060a08688031215620004cb57600080fd5b6000620004db8882890162000457565b9550506020620004ee888289016200049b565b945050604086015167ffffffffffffffff8111156200050c57600080fd5b6200051a888289016200046e565b935050606086015167ffffffffffffffff8111156200053857600080fd5b62000546888289016200046e565b9250506080620005598882890162000457565b9150509295509295909350565b60006200057560268362000657565b91506200058282620007b7565b604082019050919050565b60006200059c60208362000657565b9150620005a98262000806565b602082019050919050565b60006020820190508181036000830152620005cf8162000566565b9050919050565b60006020820190508181036000830152620005f1816200058d565b9050919050565b60006200060462000617565b905062000612828262000712565b919050565b6000604051905090565b600067ffffffffffffffff8211156200063f576200063e62000777565b5b6200064a82620007a6565b9050602081019050919050565b600082825260208201905092915050565b600062000675826200067c565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b83811015620006c6578082015181840152602081019050620006a9565b83811115620006d6576000848401525b50505050565b60006002820490506001821680620006f557607f821691505b602082108114156200070c576200070b62000748565b5b50919050565b6200071d82620007a6565b810181811067ffffffffffffffff821117156200073f576200073e62000777565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6200083a8162000668565b81146200084657600080fd5b50565b62000854816200069c565b81146200086057600080fd5b50565b61358780620008736000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c80636352211e116100ad578063a22cb46511610071578063a22cb46514610320578063b88d4fde1461033c578063c87b56dd14610358578063e985e9c514610388578063f2fde38b146103b85761012c565b80636352211e1461027a57806370a08231146102aa578063715018a6146102da5780638da5cb5b146102e457806395d89b41146103025761012c565b806318160ddd116100f457806318160ddd146101d557806323b872dd146101f35780632a55205a1461020f57806342842e0e1461024057806343bc16121461025c5761012c565b806301ffc9a71461013157806306fdde0314610161578063081812fc1461017f578063095ea7b3146101af5780631249c58b146101cb575b600080fd5b61014b6004803603810190610146919061239f565b6103d4565b60405161015891906128fb565b60405180910390f35b61016961043d565b6040516101769190612916565b60405180910390f35b61019960048036038101906101949190612432565b6104cf565b6040516101a6919061286b565b60405180910390f35b6101c960048036038101906101c49190612363565b610554565b005b6101d361066c565b005b6101dd610714565b6040516101ea9190612b78565b60405180910390f35b61020d6004803603810190610208919061225d565b610725565b005b6102296004803603810190610224919061245b565b610785565b6040516102379291906128d2565b60405180910390f35b61025a6004803603810190610255919061225d565b6107d1565b005b6102646107f1565b604051610271919061286b565b60405180910390f35b610294600480360381019061028f9190612432565b61081b565b6040516102a1919061286b565b60405180910390f35b6102c460048036038101906102bf91906121f8565b6108cd565b6040516102d19190612b78565b60405180910390f35b6102e2610985565b005b6102ec610a0d565b6040516102f9919061286b565b60405180910390f35b61030a610a37565b6040516103179190612916565b60405180910390f35b61033a60048036038101906103359190612327565b610ac9565b005b610356600480360381019061035191906122ac565b610adf565b005b610372600480360381019061036d9190612432565b610b41565b60405161037f9190612916565b60405180910390f35b6103a2600480360381019061039d9190612221565b610c93565b6040516103af91906128fb565b60405180910390f35b6103d260048036038101906103cd91906121f8565b610d27565b005b6000632a55205a60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561042c5760019050610438565b61043582610e1f565b90505b919050565b60606000805461044c90612e52565b80601f016020809104026020016040519081016040528092919081815260200182805461047890612e52565b80156104c55780601f1061049a576101008083540402835291602001916104c5565b820191906000526020600020905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b60006104da82610f01565b610519576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051090612ad8565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061055f8261081b565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156105d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105c790612b38565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166105ef610f6d565b73ffffffffffffffffffffffffffffffffffffffff16148061061e575061061d81610618610f6d565b610c93565b5b61065d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065490612a38565b60405180910390fd5b6106678383610f75565b505050565b610674610f6d565b73ffffffffffffffffffffffffffffffffffffffff16610692610a0d565b73ffffffffffffffffffffffffffffffffffffffff16146106e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106df90612af8565b60405180910390fd5b6106f2600b61102e565b60006106fe600b611044565b905061071161070b610a0d565b82611052565b50565b6000610720600b611044565b905090565b610736610730610f6d565b8261122c565b610775576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076c90612b58565b60405180910390fd5b61078083838361130a565b505050565b600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612710600a54856107bc9190612ce4565b6107c69190612cb3565b915091509250929050565b6107ec83838360405180602001604052806000815250610adf565b505050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156108c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108bb90612a78565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561093e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093590612a58565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61098d610f6d565b73ffffffffffffffffffffffffffffffffffffffff166109ab610a0d565b73ffffffffffffffffffffffffffffffffffffffff1614610a01576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f890612af8565b60405180910390fd5b610a0b6000611571565b565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060018054610a4690612e52565b80601f0160208091040260200160405190810160405280929190818152602001828054610a7290612e52565b8015610abf5780601f10610a9457610100808354040283529160200191610abf565b820191906000526020600020905b815481529060010190602001808311610aa257829003601f168201915b5050505050905090565b610adb610ad4610f6d565b8383611637565b5050565b610af0610aea610f6d565b8361122c565b610b2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2690612b58565b60405180910390fd5b610b3b848484846117a4565b50505050565b6060610b4c82610f01565b610b8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8290612ab8565b60405180910390fd5b6000600660008481526020019081526020016000208054610bab90612e52565b80601f0160208091040260200160405190810160405280929190818152602001828054610bd790612e52565b8015610c245780601f10610bf957610100808354040283529160200191610c24565b820191906000526020600020905b815481529060010190602001808311610c0757829003601f168201915b505050505090506000610c35611800565b9050600081511415610c4b578192505050610c8e565b600082511115610c80578082604051602001610c68929190612800565b60405160208183030381529060405292505050610c8e565b610c8984611943565b925050505b919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b610d2f610f6d565b73ffffffffffffffffffffffffffffffffffffffff16610d4d610a0d565b73ffffffffffffffffffffffffffffffffffffffff1614610da3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9a90612af8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610e13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0a90612978565b60405180910390fd5b610e1c81611571565b50565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610eea57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610efa5750610ef9826119ea565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16610fe88361081b565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6001816000016000828254019250508190555050565b600081600001549050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156110c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b990612a98565b60405180910390fd5b6110cb81610f01565b1561110b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611102906129b8565b60405180910390fd5b61111760008383611a54565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546111679190612c5d565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461122860008383611a59565b5050565b600061123782610f01565b611276576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126d90612a18565b60405180910390fd5b60006112818361081b565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806112f057508373ffffffffffffffffffffffffffffffffffffffff166112d8846104cf565b73ffffffffffffffffffffffffffffffffffffffff16145b8061130157506113008185610c93565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661132a8261081b565b73ffffffffffffffffffffffffffffffffffffffff1614611380576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137790612998565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e7906129d8565b60405180910390fd5b6113fb838383611a54565b611406600082610f75565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546114569190612d3e565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546114ad9190612c5d565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461156c838383611a59565b505050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156116a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169d906129f8565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161179791906128fb565b60405180910390a3505050565b6117af84848461130a565b6117bb84848484611a5e565b6117fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f190612958565b60405180910390fd5b50505050565b606060006118253073ffffffffffffffffffffffffffffffffffffffff166014611bf5565b9050600061186c600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166014611bf5565b90506000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663889a3f196040518163ffffffff1660e01b815260040160006040518083038186803b1580156118db57600080fd5b505afa1580156118ef573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061191891906123f1565b838360405160200161192c93929190612824565b604051602081830303815290604052935050505090565b606061194e82610f01565b61198d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198490612b18565b60405180910390fd5b6000611997611800565b905060008151116119b757604051806020016040528060008152506119e2565b806119c184611eef565b6040516020016119d2929190612800565b6040516020818303038152906040525b915050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b505050565b505050565b6000611a7f8473ffffffffffffffffffffffffffffffffffffffff1661209c565b15611be8578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611aa8610f6d565b8786866040518563ffffffff1660e01b8152600401611aca9493929190612886565b602060405180830381600087803b158015611ae457600080fd5b505af1925050508015611b1557506040513d601f19601f82011682018060405250810190611b1291906123c8565b60015b611b98573d8060008114611b45576040519150601f19603f3d011682016040523d82523d6000602084013e611b4a565b606091505b50600081511415611b90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8790612958565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050611bed565b600190505b949350505050565b606060006002836002611c089190612ce4565b611c129190612c5d565b67ffffffffffffffff811115611c51577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611c835781602001600182028036833780820191505090505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110611ce1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110611d6b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006001846002611dab9190612ce4565b611db59190612c5d565b90505b6001811115611ea1577f3031323334353637383961626364656600000000000000000000000000000000600f861660108110611e1d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b1a60f81b828281518110611e5a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c945080611e9a90612e28565b9050611db8565b5060008414611ee5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611edc90612938565b60405180910390fd5b8091505092915050565b60606000821415611f37576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612097565b600082905060005b60008214611f69578080611f5290612eb5565b915050600a82611f629190612cb3565b9150611f3f565b60008167ffffffffffffffff811115611fab577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611fdd5781602001600182028036833780820191505090505b5090505b6000851461209057600182611ff69190612d3e565b9150600a856120059190612efe565b60306120119190612c5d565b60f81b81838151811061204d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856120899190612cb3565b9450611fe1565b8093505050505b919050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60006120d26120cd84612bb8565b612b93565b9050828152602081018484840111156120ea57600080fd5b6120f5848285612de6565b509392505050565b600061211061210b84612be9565b612b93565b90508281526020810184848401111561212857600080fd5b612133848285612df5565b509392505050565b60008135905061214a816134f5565b92915050565b60008135905061215f8161350c565b92915050565b60008135905061217481613523565b92915050565b60008151905061218981613523565b92915050565b600082601f8301126121a057600080fd5b81356121b08482602086016120bf565b91505092915050565b600082601f8301126121ca57600080fd5b81516121da8482602086016120fd565b91505092915050565b6000813590506121f28161353a565b92915050565b60006020828403121561220a57600080fd5b60006122188482850161213b565b91505092915050565b6000806040838503121561223457600080fd5b60006122428582860161213b565b92505060206122538582860161213b565b9150509250929050565b60008060006060848603121561227257600080fd5b60006122808682870161213b565b93505060206122918682870161213b565b92505060406122a2868287016121e3565b9150509250925092565b600080600080608085870312156122c257600080fd5b60006122d08782880161213b565b94505060206122e18782880161213b565b93505060406122f2878288016121e3565b925050606085013567ffffffffffffffff81111561230f57600080fd5b61231b8782880161218f565b91505092959194509250565b6000806040838503121561233a57600080fd5b60006123488582860161213b565b925050602061235985828601612150565b9150509250929050565b6000806040838503121561237657600080fd5b60006123848582860161213b565b9250506020612395858286016121e3565b9150509250929050565b6000602082840312156123b157600080fd5b60006123bf84828501612165565b91505092915050565b6000602082840312156123da57600080fd5b60006123e88482850161217a565b91505092915050565b60006020828403121561240357600080fd5b600082015167ffffffffffffffff81111561241d57600080fd5b612429848285016121b9565b91505092915050565b60006020828403121561244457600080fd5b6000612452848285016121e3565b91505092915050565b6000806040838503121561246e57600080fd5b600061247c858286016121e3565b925050602061248d858286016121e3565b9150509250929050565b6124a081612d72565b82525050565b6124af81612d84565b82525050565b60006124c082612c1a565b6124ca8185612c30565b93506124da818560208601612df5565b6124e381612feb565b840191505092915050565b60006124f982612c25565b6125038185612c41565b9350612513818560208601612df5565b61251c81612feb565b840191505092915050565b600061253282612c25565b61253c8185612c52565b935061254c818560208601612df5565b80840191505092915050565b6000612565602083612c41565b915061257082612ffc565b602082019050919050565b6000612588603283612c41565b915061259382613025565b604082019050919050565b60006125ab602683612c41565b91506125b682613074565b604082019050919050565b60006125ce602583612c41565b91506125d9826130c3565b604082019050919050565b60006125f1601c83612c41565b91506125fc82613112565b602082019050919050565b6000612614602483612c41565b915061261f8261313b565b604082019050919050565b6000612637601983612c41565b91506126428261318a565b602082019050919050565b600061265a602c83612c41565b9150612665826131b3565b604082019050919050565b600061267d603883612c41565b915061268882613202565b604082019050919050565b60006126a0602a83612c41565b91506126ab82613251565b604082019050919050565b60006126c3602983612c41565b91506126ce826132a0565b604082019050919050565b60006126e6602083612c41565b91506126f1826132ef565b602082019050919050565b6000612709603183612c41565b915061271482613318565b604082019050919050565b600061272c602c83612c41565b915061273782613367565b604082019050919050565b600061274f602083612c41565b915061275a826133b6565b602082019050919050565b6000612772602f83612c41565b915061277d826133df565b604082019050919050565b6000612795602183612c41565b91506127a08261342e565b604082019050919050565b60006127b8603183612c41565b91506127c38261347d565b604082019050919050565b60006127db600183612c52565b91506127e6826134cc565b600182019050919050565b6127fa81612ddc565b82525050565b600061280c8285612527565b91506128188284612527565b91508190509392505050565b60006128308286612527565b915061283c8285612527565b9150612847826127ce565b91506128538284612527565b915061285e826127ce565b9150819050949350505050565b60006020820190506128806000830184612497565b92915050565b600060808201905061289b6000830187612497565b6128a86020830186612497565b6128b560408301856127f1565b81810360608301526128c781846124b5565b905095945050505050565b60006040820190506128e76000830185612497565b6128f460208301846127f1565b9392505050565b600060208201905061291060008301846124a6565b92915050565b6000602082019050818103600083015261293081846124ee565b905092915050565b6000602082019050818103600083015261295181612558565b9050919050565b600060208201905081810360008301526129718161257b565b9050919050565b600060208201905081810360008301526129918161259e565b9050919050565b600060208201905081810360008301526129b1816125c1565b9050919050565b600060208201905081810360008301526129d1816125e4565b9050919050565b600060208201905081810360008301526129f181612607565b9050919050565b60006020820190508181036000830152612a118161262a565b9050919050565b60006020820190508181036000830152612a318161264d565b9050919050565b60006020820190508181036000830152612a5181612670565b9050919050565b60006020820190508181036000830152612a7181612693565b9050919050565b60006020820190508181036000830152612a91816126b6565b9050919050565b60006020820190508181036000830152612ab1816126d9565b9050919050565b60006020820190508181036000830152612ad1816126fc565b9050919050565b60006020820190508181036000830152612af18161271f565b9050919050565b60006020820190508181036000830152612b1181612742565b9050919050565b60006020820190508181036000830152612b3181612765565b9050919050565b60006020820190508181036000830152612b5181612788565b9050919050565b60006020820190508181036000830152612b71816127ab565b9050919050565b6000602082019050612b8d60008301846127f1565b92915050565b6000612b9d612bae565b9050612ba98282612e84565b919050565b6000604051905090565b600067ffffffffffffffff821115612bd357612bd2612fbc565b5b612bdc82612feb565b9050602081019050919050565b600067ffffffffffffffff821115612c0457612c03612fbc565b5b612c0d82612feb565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000612c6882612ddc565b9150612c7383612ddc565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612ca857612ca7612f2f565b5b828201905092915050565b6000612cbe82612ddc565b9150612cc983612ddc565b925082612cd957612cd8612f5e565b5b828204905092915050565b6000612cef82612ddc565b9150612cfa83612ddc565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612d3357612d32612f2f565b5b828202905092915050565b6000612d4982612ddc565b9150612d5483612ddc565b925082821015612d6757612d66612f2f565b5b828203905092915050565b6000612d7d82612dbc565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015612e13578082015181840152602081019050612df8565b83811115612e22576000848401525b50505050565b6000612e3382612ddc565b91506000821415612e4757612e46612f2f565b5b600182039050919050565b60006002820490506001821680612e6a57607f821691505b60208210811415612e7e57612e7d612f8d565b5b50919050565b612e8d82612feb565b810181811067ffffffffffffffff82111715612eac57612eab612fbc565b5b80604052505050565b6000612ec082612ddc565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612ef357612ef2612f2f565b5b600182019050919050565b6000612f0982612ddc565b9150612f1483612ddc565b925082612f2457612f23612f5e565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f45524337323155524953746f726167653a2055524920717565727920666f722060008201527f6e6f6e6578697374656e7420746f6b656e000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f2f00000000000000000000000000000000000000000000000000000000000000600082015250565b6134fe81612d72565b811461350957600080fd5b50565b61351581612d84565b811461352057600080fd5b50565b61352c81612d90565b811461353757600080fd5b50565b61354381612ddc565b811461354e57600080fd5b5056fea264697066735822122053bc0ebaca8eea0a241ee071e77d2f069fd43b8a1bd11de736809becfcf8ffa364736f6c6343000801003300000000000000000000000047c102b534d0ee74f380606ac289aa70fedcb49d00000000000000000000000000000000000000000000000000000000000001f400000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000d410a3404c453e40d9d5b8435ff1761999c03f64000000000000000000000000000000000000000000000000000000000000000c6578706c6f726174696f6e730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000478706c7200000000000000000000000000000000000000000000000000000000