[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "ApprovalCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "ApprovalQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "ApprovalToCurrentOwner", "type": "error" }, { "inputs": [], "name": "ApproveToCaller", "type": "error" }, { "inputs": [], "name": "BalanceQueryForZeroAddress", "type": "error" }, { "inputs": [], "name": "MintToZeroAddress", "type": "error" }, { "inputs": [], "name": "MintZeroQuantity", "type": "error" }, { "inputs": [], "name": "OwnerQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "TransferCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "TransferFromIncorrectOwner", "type": "error" }, { "inputs": [], "name": "TransferToNonERC721ReceiverImplementer", "type": "error" }, { "inputs": [], "name": "TransferToZeroAddress", "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_FREE_PER_WALLET", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MAX_MINTS_PER_TX", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "numberOfTokens", "type": "uint256" } ], "name": "MintWithRewards", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "NUM_FREE_MINTS", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PUBLIC_SALE_PRICE", "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": [], "name": "baseTokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "quantity", "type": "uint256" } ], "name": "calculateMintingPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "freeNFTAlreadyMinted", "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": "isPublicSaleActive", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": "string", "name": "baseURI", "type": "string" } ], "name": "setBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_limit", "type": "uint256" } ], "name": "setFreeLimitPerWallet", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_isPublicSaleActive", "type": "bool" } ], "name": "setIsPublicSaleActive", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_limit", "type": "uint256" } ], "name": "setMaxLimitPerTransaction", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_numfreemints", "type": "uint256" } ], "name": "setNumFreeMints", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_price", "type": "uint256" } ], "name": "setSalePrice", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_maxSupply", "type": "uint256" } ], "name": "setmaxSupply", "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" }, { "inputs": [ { "internalType": "uint256", "name": "quantity", "type": "uint256" } ], "name": "treasuryMint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60806040526040518060400160405280601b81526020017f68747470733a2f2f6b696c6c6162656172732e636f6d2f6e66742f0000000000815250600a90816200004a9190620004c1565b50612710600b55611388600c556607e3140766c000600d556000600e556000600f5560006010556001601160006101000a81548160ff0219169083151502179055503480156200009957600080fd5b506040518060400160405280600b81526020017f4b494c4c412042454152530000000000000000000000000000000000000000008152506040518060400160405280600581526020017f42454152530000000000000000000000000000000000000000000000000000008152508160029081620001179190620004c1565b508060039081620001299190620004c1565b506200013a6200017060201b60201c565b600081905550505062000162620001566200017960201b60201c565b6200018160201b60201c565b6001600981905550620005a8565b60006001905090565b600033905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620002c957607f821691505b602082108103620002df57620002de62000281565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620003497fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200030a565b6200035586836200030a565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620003a26200039c62000396846200036d565b62000377565b6200036d565b9050919050565b6000819050919050565b620003be8362000381565b620003d6620003cd82620003a9565b84845462000317565b825550505050565b600090565b620003ed620003de565b620003fa818484620003b3565b505050565b5b81811015620004225762000416600082620003e3565b60018101905062000400565b5050565b601f82111562000471576200043b81620002e5565b6200044684620002fa565b8101602085101562000456578190505b6200046e6200046585620002fa565b830182620003ff565b50505b505050565b600082821c905092915050565b6000620004966000198460080262000476565b1980831691505092915050565b6000620004b1838362000483565b9150826002028217905092915050565b620004cc8262000247565b67ffffffffffffffff811115620004e857620004e762000252565b5b620004f48254620002b0565b6200050182828562000426565b600060209050601f83116001811462000539576000841562000524578287015190505b620005308582620004a3565b865550620005a0565b601f1984166200054986620002e5565b60005b8281101562000573578489015182556001820191506020850194506020810190506200054c565b868310156200059357848901516200058f601f89168262000483565b8355505b6001600288020188555050505b505050505050565b61408c80620005b86000396000f3fe60806040526004361061020f5760003560e01c806370a0823111610118578063b88d4fde116100a0578063d5abeb011161006f578063d5abeb0114610754578063e985e9c51461077f578063efdc7788146107bc578063f2fde38b146107e5578063f6511f931461080e5761020f565b8063b88d4fde14610698578063c6a91b42146106c1578063c87b56dd146106ec578063d547cfb7146107295761020f565b8063982d669e116100e7578063982d669e146105d457806398710d1e146105ff5780639bd6e3d71461062a5780639e9fcffc14610646578063a22cb4651461066f5761020f565b806370a082311461052a578063715018a6146105675780638da5cb5b1461057e57806395d89b41146105a95761020f565b80631e84c4131161019b57806328cad13d1161016a57806328cad13d1461045b5780633ccfd60b1461048457806342842e0e1461049b57806355f804b3146104c45780636352211e146104ed5761020f565b80631e84c413146103b5578063202f298a146103e0578063228025e81461040957806323b872dd146104325761020f565b8063095ea7b3116101e2578063095ea7b3146102e45780630a00ae831461030d57806318160ddd146103365780631919fed714610361578063193ad7b41461038a5761020f565b806301ffc9a71461021457806306fdde031461025157806307e89ec01461027c578063081812fc146102a7575b600080fd5b34801561022057600080fd5b5061023b60048036038101906102369190612d3c565b61084b565b6040516102489190612d84565b60405180910390f35b34801561025d57600080fd5b5061026661092d565b6040516102739190612e2f565b60405180910390f35b34801561028857600080fd5b506102916109bf565b60405161029e9190612e6a565b60405180910390f35b3480156102b357600080fd5b506102ce60048036038101906102c99190612eb1565b6109c5565b6040516102db9190612f1f565b60405180910390f35b3480156102f057600080fd5b5061030b60048036038101906103069190612f66565b610a41565b005b34801561031957600080fd5b50610334600480360381019061032f9190612eb1565b610b4b565b005b34801561034257600080fd5b5061034b610bd1565b6040516103589190612e6a565b60405180910390f35b34801561036d57600080fd5b5061038860048036038101906103839190612eb1565b610be8565b005b34801561039657600080fd5b5061039f610c6e565b6040516103ac9190612e6a565b60405180910390f35b3480156103c157600080fd5b506103ca610c74565b6040516103d79190612d84565b60405180910390f35b3480156103ec57600080fd5b5061040760048036038101906104029190612eb1565b610c87565b005b34801561041557600080fd5b50610430600480360381019061042b9190612eb1565b610d0d565b005b34801561043e57600080fd5b5061045960048036038101906104549190612fa6565b610d93565b005b34801561046757600080fd5b50610482600480360381019061047d9190613025565b610da3565b005b34801561049057600080fd5b50610499610e3c565b005b3480156104a757600080fd5b506104c260048036038101906104bd9190612fa6565b610f19565b005b3480156104d057600080fd5b506104eb60048036038101906104e69190613187565b610f39565b005b3480156104f957600080fd5b50610514600480360381019061050f9190612eb1565b610fc8565b6040516105219190612f1f565b60405180910390f35b34801561053657600080fd5b50610551600480360381019061054c91906131d0565b610fde565b60405161055e9190612e6a565b60405180910390f35b34801561057357600080fd5b5061057c6110ad565b005b34801561058a57600080fd5b50610593611135565b6040516105a09190612f1f565b60405180910390f35b3480156105b557600080fd5b506105be61115f565b6040516105cb9190612e2f565b60405180910390f35b3480156105e057600080fd5b506105e96111f1565b6040516105f69190612e6a565b60405180910390f35b34801561060b57600080fd5b506106146111f7565b6040516106219190612e6a565b60405180910390f35b610644600480360381019061063f9190612eb1565b6111fd565b005b34801561065257600080fd5b5061066d60048036038101906106689190612eb1565b61148c565b005b34801561067b57600080fd5b50610696600480360381019061069191906131fd565b611512565b005b3480156106a457600080fd5b506106bf60048036038101906106ba91906132de565b611689565b005b3480156106cd57600080fd5b506106d6611705565b6040516106e39190612e6a565b60405180910390f35b3480156106f857600080fd5b50610713600480360381019061070e9190612eb1565b61170b565b6040516107209190612e2f565b60405180910390f35b34801561073557600080fd5b5061073e611787565b60405161074b9190612e2f565b60405180910390f35b34801561076057600080fd5b50610769611815565b6040516107769190612e6a565b60405180910390f35b34801561078b57600080fd5b506107a660048036038101906107a19190613361565b61181b565b6040516107b39190612d84565b60405180910390f35b3480156107c857600080fd5b506107e360048036038101906107de9190612eb1565b6118af565b005b3480156107f157600080fd5b5061080c600480360381019061080791906131d0565b6119d2565b005b34801561081a57600080fd5b5061083560048036038101906108309190612eb1565b611ac9565b6040516108429190612e6a565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061091657507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610926575061092582611b58565b5b9050919050565b60606002805461093c906133d0565b80601f0160208091040260200160405190810160405280929190818152602001828054610968906133d0565b80156109b55780601f1061098a576101008083540402835291602001916109b5565b820191906000526020600020905b81548152906001019060200180831161099857829003601f168201915b5050505050905090565b600d5481565b60006109d082611bc2565b610a06576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610a4c82610fc8565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ab3576040517f943f7b8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610ad2611c10565b73ffffffffffffffffffffffffffffffffffffffff1614158015610b045750610b0281610afd611c10565b61181b565b155b15610b3b576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b46838383611c18565b505050565b610b53611c10565b73ffffffffffffffffffffffffffffffffffffffff16610b71611135565b73ffffffffffffffffffffffffffffffffffffffff1614610bc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbe9061344d565b60405180910390fd5b80600e8190555050565b6000610bdb611cca565b6001546000540303905090565b610bf0611c10565b73ffffffffffffffffffffffffffffffffffffffff16610c0e611135565b73ffffffffffffffffffffffffffffffffffffffff1614610c64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5b9061344d565b60405180910390fd5b80600d8190555050565b60105481565b601160009054906101000a900460ff1681565b610c8f611c10565b73ffffffffffffffffffffffffffffffffffffffff16610cad611135565b73ffffffffffffffffffffffffffffffffffffffff1614610d03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cfa9061344d565b60405180910390fd5b80600f8190555050565b610d15611c10565b73ffffffffffffffffffffffffffffffffffffffff16610d33611135565b73ffffffffffffffffffffffffffffffffffffffff1614610d89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d809061344d565b60405180910390fd5b80600b8190555050565b610d9e838383611cd3565b505050565b610dab611c10565b73ffffffffffffffffffffffffffffffffffffffff16610dc9611135565b73ffffffffffffffffffffffffffffffffffffffff1614610e1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e169061344d565b60405180910390fd5b80601160006101000a81548160ff02191690831515021790555050565b610e44611c10565b73ffffffffffffffffffffffffffffffffffffffff16610e62611135565b73ffffffffffffffffffffffffffffffffffffffff1614610eb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eaf9061344d565b60405180910390fd5b600260095403610efd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef4906134b9565b60405180910390fd5b6002600981905550610f0f3347612187565b6001600981905550565b610f3483838360405180602001604052806000815250611689565b505050565b610f41611c10565b73ffffffffffffffffffffffffffffffffffffffff16610f5f611135565b73ffffffffffffffffffffffffffffffffffffffff1614610fb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fac9061344d565b60405180910390fd5b80600a9081610fc49190613685565b5050565b6000610fd38261227b565b600001519050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611045576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff169050919050565b6110b5611c10565b73ffffffffffffffffffffffffffffffffffffffff166110d3611135565b73ffffffffffffffffffffffffffffffffffffffff1614611129576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111209061344d565b60405180910390fd5b611133600061250a565b565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606003805461116e906133d0565b80601f016020809104026020016040519081016040528092919081815260200182805461119a906133d0565b80156111e75780601f106111bc576101008083540402835291602001916111e7565b820191906000526020600020905b8154815290600101906020018083116111ca57829003601f168201915b5050505050905090565b600e5481565b600f5481565b6001600b5461120c9190613786565b81611215610bd1565b61121f9190613786565b1115611260576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125790613806565b60405180910390fd5b600061126b82611ac9565b9050600073bb203155ac1385b7827d4c80becd73fd50fad99e9050600e54836010546112979190613786565b111561132c57348211156112e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d790613872565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015611326573d6000803e3d6000fd5b5061147d565b600f548361133933610fde565b6113439190613786565b111561141d573482111561138c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138390613872565b60405180910390fd5b600c548311156113d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c890613904565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015611417573d6000803e3d6000fd5b5061147c565b600f54831115611462576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145990613904565b60405180910390fd5b82601060008282546114749190613786565b925050819055505b5b61148733846125d0565b505050565b611494611c10565b73ffffffffffffffffffffffffffffffffffffffff166114b2611135565b73ffffffffffffffffffffffffffffffffffffffff1614611508576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ff9061344d565b60405180910390fd5b80600c8190555050565b61151a611c10565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361157e576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806007600061158b611c10565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611638611c10565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161167d9190612d84565b60405180910390a35050565b611694848484611cd3565b6116b38373ffffffffffffffffffffffffffffffffffffffff166125ee565b80156116c857506116c684848484612611565b155b156116ff576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b600c5481565b606061171682611bc2565b611755576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174c90613996565b60405180910390fd5b600a61176083612761565b604051602001611771929190613b0d565b6040516020818303038152906040529050919050565b600a8054611794906133d0565b80601f01602080910402602001604051908101604052809291908181526020018280546117c0906133d0565b801561180d5780601f106117e25761010080835404028352916020019161180d565b820191906000526020600020905b8154815290600101906020018083116117f057829003601f168201915b505050505081565b600b5481565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6118b7611c10565b73ffffffffffffffffffffffffffffffffffffffff166118d5611135565b73ffffffffffffffffffffffffffffffffffffffff161461192b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119229061344d565b60405180910390fd5b6000811161196e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196590613b93565b60405180910390fd5b600b548161197a610bd1565b6119849190613786565b11156119c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119bc90613bff565b60405180910390fd5b6119cf33826125d0565b50565b6119da611c10565b73ffffffffffffffffffffffffffffffffffffffff166119f8611135565b73ffffffffffffffffffffffffffffffffffffffff1614611a4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a459061344d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611abd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab490613c91565b60405180910390fd5b611ac68161250a565b50565b600060c88203611ae357670dbd2fc137a300009050611b53565b605a8203611afb5767011c37aac67ee8009050611b53565b60468203611b135767011c37aac67ee8009050611b53565b60148203611b2a57665a981d69c5c0009050611b53565b60648203611b425767012fc1cc084bc0009050611b53565b81600d54611b509190613cb1565b90505b919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600081611bcd611cca565b11158015611bdc575060005482105b8015611c09575060046000838152602001908152602001600020600001601c9054906101000a900460ff16155b9050919050565b600033905090565b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b60006001905090565b6000611cde8261227b565b90508373ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614611d49576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008473ffffffffffffffffffffffffffffffffffffffff16611d6a611c10565b73ffffffffffffffffffffffffffffffffffffffff161480611d995750611d9885611d93611c10565b61181b565b5b80611dde5750611da7611c10565b73ffffffffffffffffffffffffffffffffffffffff16611dc6846109c5565b73ffffffffffffffffffffffffffffffffffffffff16145b905080611e17576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611e7d576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611e8a85858560016128c1565b611e9660008487611c18565b6001600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160392506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600460008581526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550428160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060006001850190506000600460008381526020019081526020016000209050600073ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361211557600054821461211457878160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084602001518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b505050828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461218085858560016128c7565b5050505050565b804710156121ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c190613d3f565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff16826040516121f090613d90565b60006040518083038185875af1925050503d806000811461222d576040519150601f19603f3d011682016040523d82523d6000602084013e612232565b606091505b5050905080612276576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226d90613e17565b60405180910390fd5b505050565b612283612c8d565b600082905080612291611cca565b111580156122a0575060005481105b156124d3576000600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff161515151581525050905080604001516124d157600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146123b5578092505050612505565b5b6001156124d057818060019003925050600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff1615151515815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146124cb578092505050612505565b6123b6565b5b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6125ea8282604051806020016040528060008152506128cd565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612637611c10565b8786866040518563ffffffff1660e01b81526004016126599493929190613e8c565b6020604051808303816000875af192505050801561269557506040513d601f19601f820116820180604052508101906126929190613eed565b60015b61270e573d80600081146126c5576040519150601f19603f3d011682016040523d82523d6000602084013e6126ca565b606091505b506000815103612706576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b6060600082036127a8576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506128bc565b600082905060005b600082146127da5780806127c390613f1a565b915050600a826127d39190613f91565b91506127b0565b60008167ffffffffffffffff8111156127f6576127f561305c565b5b6040519080825280601f01601f1916602001820160405280156128285781602001600182028036833780820191505090505b5090505b600085146128b5576001826128419190613fc2565b9150600a856128509190613ff6565b603061285c9190613786565b60f81b81838151811061287257612871614027565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856128ae9190613f91565b945061282c565b8093505050505b919050565b50505050565b50505050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612939576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008303612973576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61298060008583866128c1565b82600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555082600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160088282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550836004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600081905060008482019050612b418673ffffffffffffffffffffffffffffffffffffffff166125ee565b15612c06575b818673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612bb66000878480600101955087612611565b612bec576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b808203612b47578260005414612c0157600080fd5b612c71565b5b818060010192508673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4808203612c07575b816000819055505050612c8760008583866128c7565b50505050565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681526020016000151581525090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612d1981612ce4565b8114612d2457600080fd5b50565b600081359050612d3681612d10565b92915050565b600060208284031215612d5257612d51612cda565b5b6000612d6084828501612d27565b91505092915050565b60008115159050919050565b612d7e81612d69565b82525050565b6000602082019050612d996000830184612d75565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612dd9578082015181840152602081019050612dbe565b60008484015250505050565b6000601f19601f8301169050919050565b6000612e0182612d9f565b612e0b8185612daa565b9350612e1b818560208601612dbb565b612e2481612de5565b840191505092915050565b60006020820190508181036000830152612e498184612df6565b905092915050565b6000819050919050565b612e6481612e51565b82525050565b6000602082019050612e7f6000830184612e5b565b92915050565b612e8e81612e51565b8114612e9957600080fd5b50565b600081359050612eab81612e85565b92915050565b600060208284031215612ec757612ec6612cda565b5b6000612ed584828501612e9c565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612f0982612ede565b9050919050565b612f1981612efe565b82525050565b6000602082019050612f346000830184612f10565b92915050565b612f4381612efe565b8114612f4e57600080fd5b50565b600081359050612f6081612f3a565b92915050565b60008060408385031215612f7d57612f7c612cda565b5b6000612f8b85828601612f51565b9250506020612f9c85828601612e9c565b9150509250929050565b600080600060608486031215612fbf57612fbe612cda565b5b6000612fcd86828701612f51565b9350506020612fde86828701612f51565b9250506040612fef86828701612e9c565b9150509250925092565b61300281612d69565b811461300d57600080fd5b50565b60008135905061301f81612ff9565b92915050565b60006020828403121561303b5761303a612cda565b5b600061304984828501613010565b91505092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61309482612de5565b810181811067ffffffffffffffff821117156130b3576130b261305c565b5b80604052505050565b60006130c6612cd0565b90506130d2828261308b565b919050565b600067ffffffffffffffff8211156130f2576130f161305c565b5b6130fb82612de5565b9050602081019050919050565b82818337600083830152505050565b600061312a613125846130d7565b6130bc565b90508281526020810184848401111561314657613145613057565b5b613151848285613108565b509392505050565b600082601f83011261316e5761316d613052565b5b813561317e848260208601613117565b91505092915050565b60006020828403121561319d5761319c612cda565b5b600082013567ffffffffffffffff8111156131bb576131ba612cdf565b5b6131c784828501613159565b91505092915050565b6000602082840312156131e6576131e5612cda565b5b60006131f484828501612f51565b91505092915050565b6000806040838503121561321457613213612cda565b5b600061322285828601612f51565b925050602061323385828601613010565b9150509250929050565b600067ffffffffffffffff8211156132585761325761305c565b5b61326182612de5565b9050602081019050919050565b600061328161327c8461323d565b6130bc565b90508281526020810184848401111561329d5761329c613057565b5b6132a8848285613108565b509392505050565b600082601f8301126132c5576132c4613052565b5b81356132d584826020860161326e565b91505092915050565b600080600080608085870312156132f8576132f7612cda565b5b600061330687828801612f51565b945050602061331787828801612f51565b935050604061332887828801612e9c565b925050606085013567ffffffffffffffff81111561334957613348612cdf565b5b613355878288016132b0565b91505092959194509250565b6000806040838503121561337857613377612cda565b5b600061338685828601612f51565b925050602061339785828601612f51565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806133e857607f821691505b6020821081036133fb576133fa6133a1565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613437602083612daa565b915061344282613401565b602082019050919050565b600060208201905081810360008301526134668161342a565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b60006134a3601f83612daa565b91506134ae8261346d565b602082019050919050565b600060208201905081810360008301526134d281613496565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261353b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826134fe565b61354586836134fe565b95508019841693508086168417925050509392505050565b6000819050919050565b600061358261357d61357884612e51565b61355d565b612e51565b9050919050565b6000819050919050565b61359c83613567565b6135b06135a882613589565b84845461350b565b825550505050565b600090565b6135c56135b8565b6135d0818484613593565b505050565b5b818110156135f4576135e96000826135bd565b6001810190506135d6565b5050565b601f8211156136395761360a816134d9565b613613846134ee565b81016020851015613622578190505b61363661362e856134ee565b8301826135d5565b50505b505050565b600082821c905092915050565b600061365c6000198460080261363e565b1980831691505092915050565b6000613675838361364b565b9150826002028217905092915050565b61368e82612d9f565b67ffffffffffffffff8111156136a7576136a661305c565b5b6136b182546133d0565b6136bc8282856135f8565b600060209050601f8311600181146136ef57600084156136dd578287015190505b6136e78582613669565b86555061374f565b601f1984166136fd866134d9565b60005b8281101561372557848901518255600182019150602085019450602081019050613700565b86831015613742578489015161373e601f89168261364b565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061379182612e51565b915061379c83612e51565b92508282019050808211156137b4576137b3613757565b5b92915050565b7f4e6f206d6f726500000000000000000000000000000000000000000000000000600082015250565b60006137f0600783612daa565b91506137fb826137ba565b602082019050919050565b6000602082019050818103600083015261381f816137e3565b9050919050565b7f496e636f7272656374204554482076616c75652073656e740000000000000000600082015250565b600061385c601883612daa565b915061386782613826565b602082019050919050565b6000602082019050818103600083015261388b8161384f565b9050919050565b7f4d6178206d696e747320706572207472616e73616374696f6e2065786365656460008201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b60006138ee602283612daa565b91506138f982613892565b604082019050919050565b6000602082019050818103600083015261391d816138e1565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b6000613980602f83612daa565b915061398b82613924565b604082019050919050565b600060208201905081810360008301526139af81613973565b9050919050565b600081905092915050565b600081546139ce816133d0565b6139d881866139b6565b945060018216600081146139f35760018114613a0857613a3b565b60ff1983168652811515820286019350613a3b565b613a11856134d9565b60005b83811015613a3357815481890152600182019150602081019050613a14565b838801955050505b50505092915050565b7f2f00000000000000000000000000000000000000000000000000000000000000600082015250565b6000613a7a6001836139b6565b9150613a8582613a44565b600182019050919050565b6000613a9b82612d9f565b613aa581856139b6565b9350613ab5818560208601612dbb565b80840191505092915050565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b6000613af76005836139b6565b9150613b0282613ac1565b600582019050919050565b6000613b1982856139c1565b9150613b2482613a6d565b9150613b308284613a90565b9150613b3b82613aea565b91508190509392505050565b7f496e76616c6964206d696e7420616d6f756e7400000000000000000000000000600082015250565b6000613b7d601383612daa565b9150613b8882613b47565b602082019050919050565b60006020820190508181036000830152613bac81613b70565b9050919050565b7f4d6178696d756d20737570706c79206578636565646564000000000000000000600082015250565b6000613be9601783612daa565b9150613bf482613bb3565b602082019050919050565b60006020820190508181036000830152613c1881613bdc565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613c7b602683612daa565b9150613c8682613c1f565b604082019050919050565b60006020820190508181036000830152613caa81613c6e565b9050919050565b6000613cbc82612e51565b9150613cc783612e51565b9250828202613cd581612e51565b91508282048414831517613cec57613ceb613757565b5b5092915050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000613d29601d83612daa565b9150613d3482613cf3565b602082019050919050565b60006020820190508181036000830152613d5881613d1c565b9050919050565b600081905092915050565b50565b6000613d7a600083613d5f565b9150613d8582613d6a565b600082019050919050565b6000613d9b82613d6d565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b6000613e01603a83612daa565b9150613e0c82613da5565b604082019050919050565b60006020820190508181036000830152613e3081613df4565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000613e5e82613e37565b613e688185613e42565b9350613e78818560208601612dbb565b613e8181612de5565b840191505092915050565b6000608082019050613ea16000830187612f10565b613eae6020830186612f10565b613ebb6040830185612e5b565b8181036060830152613ecd8184613e53565b905095945050505050565b600081519050613ee781612d10565b92915050565b600060208284031215613f0357613f02612cda565b5b6000613f1184828501613ed8565b91505092915050565b6000613f2582612e51565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613f5757613f56613757565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613f9c82612e51565b9150613fa783612e51565b925082613fb757613fb6613f62565b5b828204905092915050565b6000613fcd82612e51565b9150613fd883612e51565b9250828203905081811115613ff057613fef613757565b5b92915050565b600061400182612e51565b915061400c83612e51565b92508261401c5761401b613f62565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea26469706673582212206174a40ea21e7e36ffd8edfc0c53dab5acc332f481b404b0da5218923c29a86464736f6c63430008110033