[ { "inputs": [ { "internalType": "address", "name": "initialOwner", "type": "address" } ], "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" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "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": "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": "MAX_SUPPLY", "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": "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": "to", "type": "address" } ], "name": "safeMint", "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": "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" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60806040526001600b55610379600c553480156200001b575f80fd5b5060405162002e7c38038062002e7c833981810160405281019062000041919062000287565b806040518060400160405280601181526020017f46756e7469636f2053756d6d6f6e6572730000000000000000000000000000008152506040518060400160405280600381526020017f4653430000000000000000000000000000000000000000000000000000000000815250815f9081620000be91906200051b565b508060019081620000d091906200051b565b5050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000146575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016200013d919062000610565b60405180910390fd5b62000157816200015f60201b60201c565b50506200062b565b5f600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620002518262000226565b9050919050565b620002638162000245565b81146200026e575f80fd5b50565b5f81519050620002818162000258565b92915050565b5f602082840312156200029f576200029e62000222565b5b5f620002ae8482850162000271565b91505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200033357607f821691505b602082108103620003495762000348620002ee565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620003ad7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000370565b620003b9868362000370565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000403620003fd620003f784620003d1565b620003da565b620003d1565b9050919050565b5f819050919050565b6200041e83620003e3565b620004366200042d826200040a565b8484546200037c565b825550505050565b5f90565b6200044c6200043e565b6200045981848462000413565b505050565b5b818110156200048057620004745f8262000442565b6001810190506200045f565b5050565b601f821115620004cf5762000499816200034f565b620004a48462000361565b81016020851015620004b4578190505b620004cc620004c38562000361565b8301826200045e565b50505b505050565b5f82821c905092915050565b5f620004f15f1984600802620004d4565b1980831691505092915050565b5f6200050b8383620004e0565b9150826002028217905092915050565b6200052682620002b7565b67ffffffffffffffff811115620005425762000541620002c1565b5b6200054e82546200031b565b6200055b82828562000484565b5f60209050601f83116001811462000591575f84156200057c578287015190505b620005888582620004fe565b865550620005f7565b601f198416620005a1866200034f565b5f5b82811015620005ca57848901518255600182019150602085019450602081019050620005a3565b86831015620005ea5784890151620005e6601f891682620004e0565b8355505b6001600288020188555050505b505050505050565b6200060a8162000245565b82525050565b5f602082019050620006255f830184620005ff565b92915050565b61284380620006395f395ff3fe608060405234801561000f575f80fd5b5060043610610135575f3560e01c80634f6ccce7116100b657806395d89b411161007a57806395d89b411461034b578063a22cb46514610369578063b88d4fde14610385578063c87b56dd146103a1578063e985e9c5146103d1578063f2fde38b1461040157610135565b80634f6ccce7146102935780636352211e146102c357806370a08231146102f3578063715018a6146103235780638da5cb5b1461032d57610135565b806323b872dd116100fd57806323b872dd146101f15780632f745c591461020d57806332cb6b0c1461023d57806340d097c31461025b57806342842e0e1461027757610135565b806301ffc9a71461013957806306fdde0314610169578063081812fc14610187578063095ea7b3146101b757806318160ddd146101d3575b5f80fd5b610153600480360381019061014e9190611f3e565b61041d565b6040516101609190611f83565b60405180910390f35b61017161042e565b60405161017e9190612026565b60405180910390f35b6101a1600480360381019061019c9190612079565b6104bd565b6040516101ae91906120e3565b60405180910390f35b6101d160048036038101906101cc9190612126565b6104d8565b005b6101db6104ee565b6040516101e89190612173565b60405180910390f35b61020b6004803603810190610206919061218c565b6104fa565b005b61022760048036038101906102229190612126565b6105f9565b6040516102349190612173565b60405180910390f35b61024561069d565b6040516102529190612173565b60405180910390f35b610275600480360381019061027091906121dc565b6106a3565b005b610291600480360381019061028c919061218c565b61071d565b005b6102ad60048036038101906102a89190612079565b61073c565b6040516102ba9190612173565b60405180910390f35b6102dd60048036038101906102d89190612079565b6107ae565b6040516102ea91906120e3565b60405180910390f35b61030d600480360381019061030891906121dc565b6107bf565b60405161031a9190612173565b60405180910390f35b61032b610875565b005b610335610888565b60405161034291906120e3565b60405180910390f35b6103536108b0565b6040516103609190612026565b60405180910390f35b610383600480360381019061037e9190612231565b610940565b005b61039f600480360381019061039a919061239b565b610956565b005b6103bb60048036038101906103b69190612079565b610973565b6040516103c89190612026565b60405180910390f35b6103eb60048036038101906103e6919061241b565b6109d9565b6040516103f89190611f83565b60405180910390f35b61041b600480360381019061041691906121dc565b610a67565b005b5f61042782610aeb565b9050919050565b60605f805461043c90612486565b80601f016020809104026020016040519081016040528092919081815260200182805461046890612486565b80156104b35780601f1061048a576101008083540402835291602001916104b3565b820191905f5260205f20905b81548152906001019060200180831161049657829003601f168201915b5050505050905090565b5f6104c782610b64565b506104d182610bea565b9050919050565b6104ea82826104e5610c23565b610c2a565b5050565b5f600880549050905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361056a575f6040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260040161056191906120e3565b60405180910390fd5b5f61057d8383610578610c23565b610c3c565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146105f3578382826040517f64283d7b0000000000000000000000000000000000000000000000000000000081526004016105ea939291906124b6565b60405180910390fd5b50505050565b5f610603836107bf565b82106106485782826040517fa57d13dc00000000000000000000000000000000000000000000000000000000815260040161063f9291906124eb565b60405180910390fd5b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f2054905092915050565b600c5481565b6106ab610c51565b600c546106b66104ee565b106106f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ed9061255c565b60405180910390fd5b5f600b5f815480929190610709906125a7565b9190505590506107198282610cd8565b5050565b61073783838360405180602001604052805f815250610956565b505050565b5f6107456104ee565b821061078a575f826040517fa57d13dc0000000000000000000000000000000000000000000000000000000081526004016107819291906124eb565b60405180910390fd5b6008828154811061079e5761079d6125ee565b5b905f5260205f2001549050919050565b5f6107b882610b64565b9050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610830575f6040517f89c62b6400000000000000000000000000000000000000000000000000000000815260040161082791906120e3565b60405180910390fd5b60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61087d610c51565b6108865f610cf5565b565b5f600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600180546108bf90612486565b80601f01602080910402602001604051908101604052809291908181526020018280546108eb90612486565b80156109365780601f1061090d57610100808354040283529160200191610936565b820191905f5260205f20905b81548152906001019060200180831161091957829003601f168201915b5050505050905090565b61095261094b610c23565b8383610db8565b5050565b6109618484846104fa565b61096d84848484610f21565b50505050565b606061097e82610b64565b505f6109886110d3565b90505f8151116109a65760405180602001604052805f8152506109d1565b806109b0846110f3565b6040516020016109c1929190612655565b6040516020818303038152906040525b915050919050565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b610a6f610c51565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610adf575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610ad691906120e3565b60405180910390fd5b610ae881610cf5565b50565b5f7f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b5d5750610b5c826111bd565b5b9050919050565b5f80610b6f8361129e565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610be157826040517f7e273289000000000000000000000000000000000000000000000000000000008152600401610bd89190612173565b60405180910390fd5b80915050919050565b5f60045f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f33905090565b610c3783838360016112d7565b505050565b5f610c48848484611496565b90509392505050565b610c59610c23565b73ffffffffffffffffffffffffffffffffffffffff16610c77610888565b73ffffffffffffffffffffffffffffffffffffffff1614610cd657610c9a610c23565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610ccd91906120e3565b60405180910390fd5b565b610cf1828260405180602001604052805f8152506115b0565b5050565b5f600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e2857816040517f5b08ba18000000000000000000000000000000000000000000000000000000008152600401610e1f91906120e3565b60405180910390fd5b8060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610f149190611f83565b60405180910390a3505050565b5f8373ffffffffffffffffffffffffffffffffffffffff163b11156110cd578273ffffffffffffffffffffffffffffffffffffffff1663150b7a02610f64610c23565b8685856040518563ffffffff1660e01b8152600401610f8694939291906126ca565b6020604051808303815f875af1925050508015610fc157506040513d601f19601f82011682018060405250810190610fbe9190612728565b60015b611042573d805f8114610fef576040519150601f19603f3d011682016040523d82523d5f602084013e610ff4565b606091505b505f81510361103a57836040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260040161103191906120e3565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146110cb57836040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016110c291906120e3565b60405180910390fd5b505b50505050565b60606040518060600160405280602d81526020016127e1602d9139905090565b60605f6001611101846115cb565b0190505f8167ffffffffffffffff81111561111f5761111e612277565b5b6040519080825280601f01601f1916602001820160405280156111515781602001600182028036833780820191505090505b5090505f82602001820190505b6001156111b2578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85816111a7576111a6612753565b5b0494505f850361115e575b819350505050919050565b5f7f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061128757507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061129757506112968261171c565b5b9050919050565b5f60025f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b808061130f57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611441575f61131e84610b64565b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561138857508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b801561139b575061139981846109d9565b155b156113dd57826040517fa9fbf51f0000000000000000000000000000000000000000000000000000000081526004016113d491906120e3565b60405180910390fd5b811561143f57838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b8360045f8581526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b5f806114a3858585611785565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114e6576114e184611990565b611525565b8473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146115245761152381856119d4565b5b5b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036115665761156184611b1e565b6115a5565b8473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146115a4576115a38585611bde565b5b5b809150509392505050565b6115ba8383611c62565b6115c65f848484610f21565b505050565b5f805f90507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611627577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161161d5761161c612753565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310611664576d04ee2d6d415b85acef8100000000838161165a57611659612753565b5b0492506020810190505b662386f26fc10000831061169357662386f26fc10000838161168957611688612753565b5b0492506010810190505b6305f5e10083106116bc576305f5e10083816116b2576116b1612753565b5b0492506008810190505b61271083106116e15761271083816116d7576116d6612753565b5b0492506004810190505b6064831061170457606483816116fa576116f9612753565b5b0492506002810190505b600a8310611713576001810190505b80915050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f806117908461129e565b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146117d1576117d0818486611d55565b5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461185c576118105f855f806112d7565b600160035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825403925050819055505b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16146118db57600160035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8460025f8681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4809150509392505050565b60088054905060095f8381526020019081526020015f2081905550600881908060018154018082558091505060019003905f5260205f20015f909190919091505550565b5f6119de836107bf565b90505f60075f8481526020019081526020015f20549050818114611ab5575f60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8481526020019081526020015f205490508060065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8481526020019081526020015f20819055508160075f8381526020019081526020015f2081905550505b60075f8481526020019081526020015f205f905560065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f205f905550505050565b5f6001600880549050611b319190612780565b90505f60095f8481526020019081526020015f205490505f60088381548110611b5d57611b5c6125ee565b5b905f5260205f20015490508060088381548110611b7d57611b7c6125ee565b5b905f5260205f2001819055508160095f8381526020019081526020015f208190555060095f8581526020019081526020015f205f90556008805480611bc557611bc46127b3565b5b600190038181905f5260205f20015f9055905550505050565b5f6001611bea846107bf565b611bf49190612780565b90508160065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f20819055508060075f8481526020019081526020015f2081905550505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611cd2575f6040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401611cc991906120e3565b60405180910390fd5b5f611cde83835f610c3c565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611d50575f6040517f73c6ac6e000000000000000000000000000000000000000000000000000000008152600401611d4791906120e3565b60405180910390fd5b505050565b611d60838383611e18565b611e13575f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611dd457806040517f7e273289000000000000000000000000000000000000000000000000000000008152600401611dcb9190612173565b60405180910390fd5b81816040517f177e802f000000000000000000000000000000000000000000000000000000008152600401611e0a9291906124eb565b60405180910390fd5b505050565b5f8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611ecf57508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611e905750611e8f84846109d9565b5b80611ece57508273ffffffffffffffffffffffffffffffffffffffff16611eb683610bea565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611f1d81611ee9565b8114611f27575f80fd5b50565b5f81359050611f3881611f14565b92915050565b5f60208284031215611f5357611f52611ee1565b5b5f611f6084828501611f2a565b91505092915050565b5f8115159050919050565b611f7d81611f69565b82525050565b5f602082019050611f965f830184611f74565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015611fd3578082015181840152602081019050611fb8565b5f8484015250505050565b5f601f19601f8301169050919050565b5f611ff882611f9c565b6120028185611fa6565b9350612012818560208601611fb6565b61201b81611fde565b840191505092915050565b5f6020820190508181035f83015261203e8184611fee565b905092915050565b5f819050919050565b61205881612046565b8114612062575f80fd5b50565b5f813590506120738161204f565b92915050565b5f6020828403121561208e5761208d611ee1565b5b5f61209b84828501612065565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6120cd826120a4565b9050919050565b6120dd816120c3565b82525050565b5f6020820190506120f65f8301846120d4565b92915050565b612105816120c3565b811461210f575f80fd5b50565b5f81359050612120816120fc565b92915050565b5f806040838503121561213c5761213b611ee1565b5b5f61214985828601612112565b925050602061215a85828601612065565b9150509250929050565b61216d81612046565b82525050565b5f6020820190506121865f830184612164565b92915050565b5f805f606084860312156121a3576121a2611ee1565b5b5f6121b086828701612112565b93505060206121c186828701612112565b92505060406121d286828701612065565b9150509250925092565b5f602082840312156121f1576121f0611ee1565b5b5f6121fe84828501612112565b91505092915050565b61221081611f69565b811461221a575f80fd5b50565b5f8135905061222b81612207565b92915050565b5f806040838503121561224757612246611ee1565b5b5f61225485828601612112565b92505060206122658582860161221d565b9150509250929050565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6122ad82611fde565b810181811067ffffffffffffffff821117156122cc576122cb612277565b5b80604052505050565b5f6122de611ed8565b90506122ea82826122a4565b919050565b5f67ffffffffffffffff82111561230957612308612277565b5b61231282611fde565b9050602081019050919050565b828183375f83830152505050565b5f61233f61233a846122ef565b6122d5565b90508281526020810184848401111561235b5761235a612273565b5b61236684828561231f565b509392505050565b5f82601f8301126123825761238161226f565b5b813561239284826020860161232d565b91505092915050565b5f805f80608085870312156123b3576123b2611ee1565b5b5f6123c087828801612112565b94505060206123d187828801612112565b93505060406123e287828801612065565b925050606085013567ffffffffffffffff81111561240357612402611ee5565b5b61240f8782880161236e565b91505092959194509250565b5f806040838503121561243157612430611ee1565b5b5f61243e85828601612112565b925050602061244f85828601612112565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061249d57607f821691505b6020821081036124b0576124af612459565b5b50919050565b5f6060820190506124c95f8301866120d4565b6124d66020830185612164565b6124e360408301846120d4565b949350505050565b5f6040820190506124fe5f8301856120d4565b61250b6020830184612164565b9392505050565b7f4d6178696d756d20737570706c792072656163686564000000000000000000005f82015250565b5f612546601683611fa6565b915061255182612512565b602082019050919050565b5f6020820190508181035f8301526125738161253a565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6125b182612046565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036125e3576125e261257a565b5b600182019050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81905092915050565b5f61262f82611f9c565b612639818561261b565b9350612649818560208601611fb6565b80840191505092915050565b5f6126608285612625565b915061266c8284612625565b91508190509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f61269c82612678565b6126a68185612682565b93506126b6818560208601611fb6565b6126bf81611fde565b840191505092915050565b5f6080820190506126dd5f8301876120d4565b6126ea60208301866120d4565b6126f76040830185612164565b81810360608301526127098184612692565b905095945050505050565b5f8151905061272281611f14565b92915050565b5f6020828403121561273d5761273c611ee1565b5b5f61274a84828501612714565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61278a82612046565b915061279583612046565b92508282039050818111156127ad576127ac61257a565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfe68747470733a2f2f6e66742d6d6574612e66756e7469636f2e636f6d2f6170692f6e6563726f6d616e6365722fa2646970667358221220d5f2173d8afb0cca17de81338c6d8ff7fae37831383dd5ac0cb6c423689e839964736f6c6343000814003300000000000000000000000044aec819971e9c78dfe39bf1ad3e81691b331606