[ { "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" }, { "inputs": [], "name": "URIQueryForNonexistentToken", "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": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleRevoked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": true, "internalType": "uint256", "name": "time", "type": "uint256" } ], "name": "Staked", "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" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": true, "internalType": "uint256", "name": "time", "type": "uint256" } ], "name": "UnStaked", "type": "event" }, { "inputs": [], "name": "OPERATOR_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "_kycMintMerkleRoot", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "_preMintMerkleRoot", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "addOperator", "outputs": [], "stateMutability": "nonpayable", "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": "address", "name": "to", "type": "address" }, { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" } ], "name": "batchTransfer", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "createTBA", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "nonpayable", "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": "user", "type": "address" } ], "name": "getCanMintCount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getLicenseName", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getLicenseURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getMintCount", "outputs": [ { "internalType": "uint256", "name": "kycMintCount", "type": "uint256" }, { "internalType": "uint256", "name": "preMintCount", "type": "uint256" }, { "internalType": "uint256", "name": "publicMintCount", "type": "uint256" }, { "internalType": "uint256", "name": "superMintCount", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getMintLimit", "outputs": [ { "internalType": "uint256", "name": "kycMintLimit", "type": "uint256" }, { "internalType": "uint256", "name": "preMintLimit", "type": "uint256" }, { "internalType": "uint256", "name": "publicMintLimit", "type": "uint256" }, { "internalType": "uint256", "name": "addressMintLimit", "type": "uint256" }, { "internalType": "uint256", "name": "superMintLimit", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getMintPrice", "outputs": [ { "internalType": "uint256", "name": "kycMintPrice", "type": "uint256" }, { "internalType": "uint256", "name": "preMintPrice", "type": "uint256" }, { "internalType": "uint256", "name": "publicMintPrice", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getStakeTime", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "contractAddress", "type": "address" } ], "name": "getSuperAddress", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getSuperMintPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getSwith", "outputs": [ { "internalType": "bool", "name": "kycMintOpen", "type": "bool" }, { "internalType": "bool", "name": "preMintOpen", "type": "bool" }, { "internalType": "bool", "name": "publicMintOpen", "type": "bool" }, { "internalType": "bool", "name": "transferOpen", "type": "bool" }, { "internalType": "bool", "name": "superMintOpen", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "contractAddress", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getTokenCanMintCount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "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": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "isOperator", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32[]", "name": "kycMerkleProof", "type": "bytes32[]" }, { "internalType": "bytes32[]", "name": "preMerkleProof", "type": "bytes32[]" } ], "name": "isWhitelist", "outputs": [ { "internalType": "bool", "name": "isKycWhitelist", "type": "bool" }, { "internalType": "bool", "name": "isPreWhitelist", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32[]", "name": "merkleProof", "type": "bytes32[]" }, { "internalType": "uint256", "name": "count", "type": "uint256" } ], "name": "kycMint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "toAddresses", "type": "address[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" } ], "name": "operatorMint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" } ], "name": "operatorUnStake", "outputs": [], "stateMutability": "nonpayable", "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": [ { "internalType": "bytes32[]", "name": "merkleProof", "type": "bytes32[]" }, { "internalType": "uint256", "name": "count", "type": "uint256" } ], "name": "preMint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "count", "type": "uint256" } ], "name": "publicMint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeOperator", "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": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeTransferWhileStake", "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": "address", "name": "_erc6551RegistryAddress", "type": "address" }, { "internalType": "address", "name": "_erc6551AccountProxyAddress", "type": "address" }, { "internalType": "address", "name": "_erc6551ImplementationAddress", "type": "address" }, { "internalType": "uint256", "name": "chainID", "type": "uint256" } ], "name": "setERC6551Config", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "kycMintMerkleRoot", "type": "bytes32" }, { "internalType": "bytes32", "name": "preMintMerkleRoot", "type": "bytes32" } ], "name": "setMerkleRoot", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "kycMintLimit", "type": "uint256" }, { "internalType": "uint256", "name": "preMintLimit", "type": "uint256" }, { "internalType": "uint256", "name": "publicMintLimit", "type": "uint256" }, { "internalType": "uint256", "name": "addressMintLimit", "type": "uint256" }, { "internalType": "uint256", "name": "superMintLimit", "type": "uint256" } ], "name": "setMintLimit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "kycMintPrice", "type": "uint256" }, { "internalType": "uint256", "name": "preMintPrice", "type": "uint256" }, { "internalType": "uint256", "name": "publicMintPrice", "type": "uint256" } ], "name": "setMintPrice", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "open", "type": "bool" } ], "name": "setStakeOpen", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "contractAddress", "type": "address" }, { "internalType": "uint256", "name": "count", "type": "uint256" } ], "name": "setSuperAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "superMintPrice", "type": "uint256" } ], "name": "setSuperMintPrice", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "kycMintOpen", "type": "bool" }, { "internalType": "bool", "name": "preMintOpen", "type": "bool" }, { "internalType": "bool", "name": "publicMintOpen", "type": "bool" }, { "internalType": "bool", "name": "transferOpen", "type": "bool" }, { "internalType": "bool", "name": "superMintOpen", "type": "bool" } ], "name": "setSwith", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" } ], "name": "stake", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "stakeOpen", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "stakePeriod", "outputs": [ { "internalType": "bool", "name": "isStake", "type": "bool" }, { "internalType": "uint256", "name": "current", "type": "uint256" }, { "internalType": "uint256", "name": "total", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "contracts", "type": "address[]" }, { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "counts", "type": "uint256[]" } ], "name": "superMint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "supply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "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": "totalMinted", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": "tokenIds", "type": "uint256[]" } ], "name": "unStake", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "tokens", "type": "address[]" }, { "internalType": "address", "name": "_to", "type": "address" } ], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
600060118190556012819055601381905560148190556015819055601a819055601b819055601c55601d805463ffffffff191690556109c4601e556020805460ff1916905560c0604052601060809081526f506f636b65742077697468204c6f766560801b60a05260219062000076908262000429565b506040518060800160405280605c815260200162005183605c9139602290620000a0908262000429565b506027805460ff1916905560016028556000602a55348015620000c257600080fd5b50600060218054620000d4906200039a565b80601f016020809104026020016040519081016040528092919081815260200182805462000102906200039a565b8015620001535780601f10620001275761010080835404028352916020019162000153565b820191906000526020600020905b8154815290600101906020018083116200013557829003601f168201915b50505050506021805462000167906200039a565b80601f016020809104026020016040519081016040528092919081815260200182805462000195906200039a565b8015620001e65780601f10620001ba57610100808354040283529160200191620001e6565b820191906000526020600020905b815481529060010190602001808311620001c857829003601f168201915b50505050508160029081620001fc919062000429565b5060036200020b828262000429565b505060008055506200021d336200025e565b6001600a819055600b8054839260ff1990911690836005811115620002465762000246620004f5565b021790555062000258905033620002b0565b6200050b565b600880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b620002dc7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92982620002df565b50565b60008281526009602090815260408083206001600160a01b038516845290915290205460ff16620003805760008281526009602090815260408083206001600160a01b03851684529091529020805460ff191660011790556200033f3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620003af57607f821691505b602082108103620003d057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200042457600081815260208120601f850160051c81016020861015620003ff5750805b601f850160051c820191505b8181101562000420578281556001016200040b565b5050505b505050565b81516001600160401b0381111562000445576200044562000384565b6200045d816200045684546200039a565b84620003d6565b602080601f8311600181146200049557600084156200047c5750858301515b600019600386901b1c1916600185901b17855562000420565b600085815260208120601f198616915b82811015620004c657888601518255948401946001909101908401620004a5565b5085821015620004e55787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b614c68806200051b6000396000f3fe6080604052600436106103a25760003560e01c80638da5cb5b116101e7578063b4e78ea41161010d578063db6f2906116100a0578063f01288521161006f578063f012885214610ba3578063f2fde38b14610bb6578063f5b541a614610bd6578063fad8b32a14610c0a57600080fd5b8063db6f290614610b05578063e0e6389314610b25578063e985e9c514610b3a578063eeb86e7814610b8357600080fd5b8063c3e30196116100dc578063c3e3019614610a9d578063c7db289314610ab0578063c87b56dd14610ac5578063cf2bde3b14610ae557600080fd5b8063b4e78ea414610a06578063b824c19d14610a20578063b8323fc214610a40578063b88d4fde14610a7d57600080fd5b8063a22cb46511610185578063a89370e711610154578063a89370e714610942578063ab2cb8e9146109a6578063ac3c9952146109c6578063b10dcc93146109e657600080fd5b8063a22cb465146108c7578063a2309ff8146108e7578063a341793b146108fc578063a7f93ebd1461091157600080fd5b806395d89b41116101c157806395d89b41146108525780639870d7fe146108675780639ead7a1914610887578063a0bcfc7f146108a757600080fd5b80638da5cb5b146107b55780638fc3b549146107d357806391d148541461080c57600080fd5b80632db11544116102cc5780636352211e1161026a578063715018a611610239578063715018a61461071c57806375edcbe01461073157806381c8d149146107515780638ceb45a91461077e57600080fd5b80636352211e146106865780636d70f7ae146106a65780636dc25b93146106c657806370a08231146106fc57600080fd5b80634ad7b025116102a65780634ad7b025146105e25780634b3ed3721461060257806356bda4a2146106225780636102664a1461066657600080fd5b80632db115441461058f578063319948ba146105a257806342842e0e146105c257600080fd5b8063157620ab116103445780631d39191d116103135780631d39191d1461051957806323b872dd146105395780632a7ce051146105595780632bd19b771461056f57600080fd5b8063157620ab146104b75780631649698b146104d757806316504c0a146104ea57806318160ddd1461050057600080fd5b8063081812fc11610380578063081812fc1461041d578063095ea7b3146104555780630af2b562146104775780630fbf0a931461049757600080fd5b806301ffc9a7146103a7578063047fc9aa146103dc57806306fdde03146103fb575b600080fd5b3480156103b357600080fd5b506103c76103c2366004613fa3565b610c2a565b60405190151581526020015b60405180910390f35b3480156103e857600080fd5b50601e545b6040519081526020016103d3565b34801561040757600080fd5b50610410610c3b565b6040516103d39190614010565b34801561042957600080fd5b5061043d610438366004614023565b610ccd565b6040516001600160a01b0390911681526020016103d3565b34801561046157600080fd5b50610475610470366004614051565b610d2a565b005b34801561048357600080fd5b506103ed610492366004614051565b610de2565b3480156104a357600080fd5b506104756104b23660046140c9565b610e49565b3480156104c357600080fd5b506104756104d23660046141ea565b610fa0565b6104756104e536600461423c565b611195565b3480156104f657600080fd5b506103ed600c5481565b34801561050c57600080fd5b50600154600054036103ed565b34801561052557600080fd5b50610475610534366004614288565b611409565b34801561054557600080fd5b506104756105543660046142c3565b611479565b34801561056557600080fd5b506103ed600d5481565b34801561057b57600080fd5b5061047561058a366004614304565b611484565b61047561059d366004614023565b61152c565b3480156105ae57600080fd5b506104756105bd366004614355565b6116e7565b3480156105ce57600080fd5b506104756105dd3660046142c3565b61174e565b3480156105ee57600080fd5b506104756105fd366004614051565b611769565b34801561060e57600080fd5b5061047561061d3660046140c9565b6117de565b34801561062e57600080fd5b50601154601254601354601554601454604080519586526020860194909452928401919091526060830152608082015260a0016103d3565b34801561067257600080fd5b5061047561068136600461438f565b6118f7565b34801561069257600080fd5b5061043d6106a1366004614023565b6119b5565b3480156106b257600080fd5b506103c76106c1366004614400565b6119c7565b3480156106d257600080fd5b506103ed6106e1366004614400565b6001600160a01b03166000908152602b602052604090205490565b34801561070857600080fd5b506103ed610717366004614400565b611a07565b34801561072857600080fd5b50610475611a6f565b34801561073d57600080fd5b5061047561074c36600461441d565b611a83565b34801561075d57600080fd5b506103ed61076c366004614023565b6000908152600e602052604090205490565b34801561078a57600080fd5b5061079e61079936600461443f565b611ae7565b6040805192151583529015156020830152016103d3565b3480156107c157600080fd5b506008546001600160a01b031661043d565b3480156107df57600080fd5b506016546017546018546019546040805194855260208501939093529183015260608201526080016103d3565b34801561081857600080fd5b506103c76108273660046144ab565b60009182526009602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561085e57600080fd5b50610410611bb5565b34801561087357600080fd5b50610475610882366004614400565b611bc4565b34801561089357600080fd5b506104756108a23660046142c3565b611c47565b3480156108b357600080fd5b506104756108c2366004614528565b611cb9565b3480156108d357600080fd5b506104756108e2366004614571565b611d22565b3480156108f357600080fd5b50601f546103ed565b34801561090857600080fd5b50610410611dd0565b34801561091d57600080fd5b50601a54601b54601c54604080519384526020840192909252908201526060016103d3565b34801561094e57600080fd5b50601d54602080546040805160ff80861615158252610100860481161515948201949094526201000085048416151591810191909152908216151560608201526301000000909204161515608082015260a0016103d3565b3480156109b257600080fd5b5061043d6109c1366004614023565b611de7565b3480156109d257600080fd5b506104756109e13660046145fa565b611f70565b3480156109f257600080fd5b50610475610a013660046140c9565b611fb8565b348015610a1257600080fd5b506027546103c79060ff1681565b348015610a2c57600080fd5b50610475610a3b366004614023565b6120da565b348015610a4c57600080fd5b50610a60610a5b366004614023565b612138565b6040805193151584526020840192909252908201526060016103d3565b348015610a8957600080fd5b50610475610a9836600461464a565b612184565b610475610aab36600461423c565b6121c8565b348015610abc57600080fd5b5061041061241f565b348015610ad157600080fd5b50610410610ae0366004614023565b61247f565b348015610af157600080fd5b50610475610b003660046146ca565b6124b3565b348015610b1157600080fd5b50610475610b20366004614724565b61267d565b348015610b3157600080fd5b50602a546103ed565b348015610b4657600080fd5b506103c7610b55366004614741565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b348015610b8f57600080fd5b506103ed610b9e366004614400565b6126e9565b610475610bb136600461476f565b61270f565b348015610bc257600080fd5b50610475610bd1366004614400565b612d32565b348015610be257600080fd5b506103ed7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92981565b348015610c1657600080fd5b50610475610c25366004614400565b612dbf565b6000610c3582612e42565b92915050565b606060028054610c4a906147f7565b80601f0160208091040260200160405190810160405280929190818152602001828054610c76906147f7565b8015610cc35780601f10610c9857610100808354040283529160200191610cc3565b820191906000526020600020905b815481529060010190602001808311610ca657829003601f168201915b5050505050905090565b6000610cd882612e80565b610d0e576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506000908152600660205260409020546001600160a01b031690565b6000610d35826119b5565b9050806001600160a01b0316836001600160a01b031603610d82576040517f943f7b8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336001600160a01b03821614610dd257610d9c8133610b55565b610dd2576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ddd838383612eab565b505050565b6001600160a01b0382166000908152602b60205260408120548103610e0957506000610c35565b6001600160a01b0383166000818152602960209081526040808320868452825280832054938352602b909152902054610e429190614847565b9392505050565b60275460ff16610ea05760405162461bcd60e51b815260206004820152601860248201527f6572726f723a3130303036207374616b6520636c6f736564000000000000000060448201526064015b60405180910390fd5b8060005b81811015610f9a576000848483818110610ec057610ec061485a565b905060200201359050610ed03390565b6001600160a01b0316610ee282612f14565b516001600160a01b031614610f315760405162461bcd60e51b815260206004820152601560248201527432b93937b91d189818181a902737ba1037bbb732b960591b6044820152606401610e97565b6000818152600e602052604081205490819003610f87576000828152600e602052604080822042908190559051909184917f925435fa7e37e5d9555bb18ce0d62bb9627d0846942e58e5291e9a2dded462ed9190a35b505080610f9390614870565b9050610ea4565b50505050565b610fa9336119c7565b610ff95760405162461bcd60e51b815260206004820152602d6024820152600080516020614c1383398151915260448201526c103737ba1037b832b930ba37b960991b6064820152608401610e97565b60005b82518160ff16101561115c576000838260ff168151811061101f5761101f61485a565b60209081029190910101516040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529091506000906001600160a01b038316906370a0823190602401602060405180830381865afa15801561108d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b19190614889565b90508015611147576040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301526024820183905283169063a9059cbb906044016020604051808303816000875af1158015611121573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114591906148a2565b505b50508080611154906148bf565b915050610ffc565b5060405147906001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610f9a573d6000803e3d6000fd5b61119d613049565b60018110156111f95760405162461bcd60e51b815260206004820152602260248201527f6572726f723a3130303130204d7573742062652067726561746572207468616e604482015261203160f01b6064820152608401610e97565b80601a5461120791906148de565b34146112605760405162461bcd60e51b815260206004820152602260248201527f6572726f723a3130303030206d73672e76616c756520697320696e636f72726560448201526118dd60f21b6064820152608401610e97565b601d5460ff166112b25760405162461bcd60e51b815260206004820152601660248201527f6572726f723a313030303120737769746368206f6666000000000000000000006044820152606401610e97565b61132883838080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050600c546040516bffffffffffffffffffffffff193360601b16602082015290925060340190505b604051602081830303815290604052805190602001206130a2565b6113745760405162461bcd60e51b815260206004820181905260248201527f6572726f723a3130303032206e6f7420696e207468652077686974656c6973746044820152606401610e97565b60005b818110156113fe57601154601654106113d25760405162461bcd60e51b815260206004820152601b60248201527f6572726f723a313030303420526561636820746865206c696d697400000000006044820152606401610e97565b6113db336130b8565b6016546113e99060016148f5565b601655806113f681614870565b915050611377565b50610ddd6001600a55565b611412336119c7565b6114625760405162461bcd60e51b815260206004820152602d6024820152600080516020614c1383398151915260448201526c103737ba1037b832b930ba37b960991b6064820152608401610e97565b601194909455601292909255601355601555601455565b610ddd8383836131df565b61148d336119c7565b6114dd5760405162461bcd60e51b815260206004820152602d6024820152600080516020614c1383398151915260448201526c103737ba1037b832b930ba37b960991b6064820152608401610e97565b6023805473ffffffffffffffffffffffffffffffffffffffff199081166001600160a01b0396871617909155602480548216948616949094179093556025805490931691909316179055602655565b611534613049565b60018110156115905760405162461bcd60e51b815260206004820152602260248201527f6572726f723a3130303130204d7573742062652067726561746572207468616e604482015261203160f01b6064820152608401610e97565b80601c5461159e91906148de565b34146115f75760405162461bcd60e51b815260206004820152602260248201527f6572726f723a3130303030206d73672e76616c756520697320696e636f72726560448201526118dd60f21b6064820152608401610e97565b601d5462010000900460ff1661164f5760405162461bcd60e51b815260206004820152601660248201527f6572726f723a313030303120737769746368206f6666000000000000000000006044820152606401610e97565b60005b818110156116d957601354601854106116ad5760405162461bcd60e51b815260206004820152601b60248201527f6572726f723a313030303420526561636820746865206c696d697400000000006044820152606401610e97565b6116b6336130b8565b6018546116c49060016148f5565b601855806116d181614870565b915050611652565b506116e46001600a55565b50565b6116f0336119c7565b6117405760405162461bcd60e51b815260206004820152602d6024820152600080516020614c1383398151915260448201526c103737ba1037b832b930ba37b960991b6064820152608401610e97565b601a92909255601b55601c55565b610ddd83838360405180602001604052806000815250612184565b611772336119c7565b6117c25760405162461bcd60e51b815260206004820152602d6024820152600080516020614c1383398151915260448201526c103737ba1037b832b930ba37b960991b6064820152608401610e97565b6001600160a01b039091166000908152602b6020526040902055565b6117e7336119c7565b6118375760405162461bcd60e51b815260206004820152602d6024820152600080516020614c1383398151915260448201526c103737ba1037b832b930ba37b960991b6064820152608401610e97565b8060005b81811015610f9a5760008484838181106118575761185761485a565b602090810292909201356000818152600e9093526040909220549192505080156118e4576118858142614847565b6000838152600f6020526040812080549091906118a39084906148f5565b90915550506000828152600e602052604080822082905551429184917f69f6d6e6926b6914c628cca5ab19879a4099facaba2b44626e07d8e38ebd189b9190a35b5050806118f090614870565b905061183b565b611900336119c7565b6119505760405162461bcd60e51b815260206004820152602d6024820152600080516020614c1383398151915260448201526c103737ba1037b832b930ba37b960991b6064820152608401610e97565b601d80546020805460ff19169415159490941790935561ffff1990921694151561ff00191694909417610100931515939093029290921763ffff00001916620100009115159190910263ff000000191617630100000092151592909202919091179055565b60006119c082612f14565b5192915050565b6001600160a01b03811660009081527f84e70a45dc3cad9f831e8a7d9f4327701c9df1c790bfeaa7b6cb95e200be6733602052604081205460ff16610c35565b60006001600160a01b038216611a49576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506001600160a01b031660009081526005602052604090205467ffffffffffffffff1690565b611a77613427565b611a816000613481565b565b611a8c336119c7565b611adc5760405162461bcd60e51b815260206004820152602d6024820152600080516020614c1383398151915260448201526c103737ba1037b832b930ba37b960991b6064820152608401610e97565b600c91909155600d55565b600080611b4986868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050600c546040516bffffffffffffffffffffffff193360601b166020820152909250603401905061130d565b9150611baa84848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050600d546040516bffffffffffffffffffffffff193360601b166020820152909250603401905061130d565b905094509492505050565b606060038054610c4a906147f7565b611bcd336119c7565b611c1d5760405162461bcd60e51b815260206004820152602d6024820152600080516020614c1383398151915260448201526c103737ba1037b832b930ba37b960991b6064820152608401610e97565b6116e47f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929826134e0565b33611c51826119b5565b6001600160a01b031614611c9f5760405162461bcd60e51b815260206004820152601560248201527432b93937b91d189818181a902737ba1037bbb732b960591b6044820152606401610e97565b6002602855611caf83838361174e565b5050600160285550565b611cc2336119c7565b611d125760405162461bcd60e51b815260206004820152602d6024820152600080516020614c1383398151915260448201526c103737ba1037b832b930ba37b960991b6064820152608401610e97565b6022611d1e828261494e565b5050565b336001600160a01b03831603611d64576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360008181526007602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b600b54606090611de29060ff16613582565b905090565b600033611df383612f14565b516001600160a01b031614611e425760405162461bcd60e51b815260206004820152601560248201527432b93937b91d189818181a902737ba1037bbb732b960591b6044820152606401610e97565b602354602480546026546040517f8a54c52f0000000000000000000000000000000000000000000000000000000081526001600160a01b039283166004820152600093810184905260448101919091523060648201526084810186905291921690638a54c52f9060a4016020604051808303816000875af1158015611ecb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eef9190614a0e565b6025546040517fc4d66de80000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015291925082169063c4d66de890602401600060405180830381600087803b158015611f5157600080fd5b505af1158015611f65573d6000803e3d6000fd5b509295945050505050565b60005b8151811015610ddd576000828281518110611f9057611f9061485a565b60200260200101519050611fa5338583611479565b5080611fb081614870565b915050611f73565b8060005b81811015610f9a576000848483818110611fd857611fd861485a565b905060200201359050611fe83390565b6001600160a01b0316611ffa82612f14565b516001600160a01b0316146120495760405162461bcd60e51b815260206004820152601560248201527432b93937b91d189818181a902737ba1037bbb732b960591b6044820152606401610e97565b6000818152600e602052604090205480156120c7576120688142614847565b6000838152600f6020526040812080549091906120869084906148f5565b90915550506000828152600e602052604080822082905551429184917f69f6d6e6926b6914c628cca5ab19879a4099facaba2b44626e07d8e38ebd189b9190a35b5050806120d390614870565b9050611fbc565b6120e3336119c7565b6121335760405162461bcd60e51b815260206004820152602d6024820152600080516020614c1383398151915260448201526c103737ba1037b832b930ba37b960991b6064820152608401610e97565b602a55565b6000818152600e6020526040812054819081908015612162576001935061215f8142614847565b92505b6000858152600f602052604090205461217b90846148f5565b93959294505050565b61218f8484846131df565b6001600160a01b0383163b15610f9a576121ab84848484613779565b610f9a576040516368d2bf6b60e11b815260040160405180910390fd5b6121d0613049565b600181101561222c5760405162461bcd60e51b815260206004820152602260248201527f6572726f723a3130303130204d7573742062652067726561746572207468616e604482015261203160f01b6064820152608401610e97565b80601b5461223a91906148de565b34146122935760405162461bcd60e51b815260206004820152602260248201527f6572726f723a3130303030206d73672e76616c756520697320696e636f72726560448201526118dd60f21b6064820152608401610e97565b601d54610100900460ff166122ea5760405162461bcd60e51b815260206004820152601660248201527f6572726f723a313030303120737769746368206f6666000000000000000000006044820152606401610e97565b61234983838080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050600d546040516bffffffffffffffffffffffff193360601b166020820152909250603401905061130d565b6123955760405162461bcd60e51b815260206004820181905260248201527f6572726f723a3130303032206e6f7420696e207468652077686974656c6973746044820152606401610e97565b60005b818110156113fe57601254601754106123f35760405162461bcd60e51b815260206004820152601b60248201527f6572726f723a313030303420526561636820746865206c696d697400000000006044820152606401610e97565b6123fc336130b8565b60175461240a9060016148f5565b6017558061241781614870565b915050612398565b6060604051806060016040528060318152602001614be260319139600b5461245a9060ff16600581111561245557612455614a2b565b613865565b60405160200161246b929190614a41565b604051602081830303815290604052905090565b6060602261248c83613905565b60405160200161249d929190614a70565b6040516020818303038152906040529050919050565b6124bc336119c7565b61250c5760405162461bcd60e51b815260206004820152602d6024820152600080516020614c1383398151915260448201526c103737ba1037b832b930ba37b960991b6064820152608401610e97565b80518251146125835760405162461bcd60e51b815260206004820152603c60248201527f6572726f723a313030333320746f416464726573736573206c656e677468206460448201527f6f6573206e6f74206d6174636820616d6f756e7473206c656e677468000000006064820152608401610e97565b815160005b81811015610f9a5760008482815181106125a4576125a461485a565b6020026020010151905060008483815181106125c2576125c261485a565b6020026020010151905060005b8181101561266757601e54601f54106126395760405162461bcd60e51b815260206004820152602660248201527f6572726f723a313030313020457863656564696e672074686520746f74616c20604482015265185b5bdd5b9d60d21b6064820152608401610e97565b612644836001613a3a565b601f546126529060016148f5565b601f558061265f81614870565b9150506125cf565b505050808061267590614870565b915050612588565b612686336119c7565b6126d65760405162461bcd60e51b815260206004820152602d6024820152600080516020614c1383398151915260448201526c103737ba1037b832b930ba37b960991b6064820152608401610e97565b6027805460ff1916911515919091179055565b6001600160a01b038116600090815260106020526040812054601554610c359190614847565b612717613049565b815183511461278e5760405162461bcd60e51b815260206004820152603c60248201527f6572726f723a20313030303020636f6e747261637473206c656e67746820646f60448201527f6573206e6f74206d6174636820746f6b656e496473206c656e677468000000006064820152608401610e97565b80518251146128055760405162461bcd60e51b815260206004820152603960248201527f6572726f723a20313030303120746f6b656e496473206c656e67746820646f6560448201527f73206e6f74206d6174636820636f756e7473206c656e677468000000000000006064820152608401610e97565b601d546301000000900460ff1661285e5760405162461bcd60e51b815260206004820152601660248201527f6572726f723a313030303220737769746368206f6666000000000000000000006044820152606401610e97565b6000805b83518110156128a45782818151811061287d5761287d61485a565b60200260200101518261289091906148f5565b91508061289c81614870565b915050612862565b50601e81106128f55760405162461bcd60e51b815260206004820152601560248201527f6572726f723a203130303033204c696d697420333000000000000000000000006044820152606401610e97565b80602a5461290391906148de565b341461295c5760405162461bcd60e51b815260206004820152602260248201527f6572726f723a3130303034206d73672e76616c756520697320696e636f72726560448201526118dd60f21b6064820152608401610e97565b60005b8351811015612d2657600085828151811061297c5761297c61485a565b60200260200101519050600085838151811061299a5761299a61485a565b6020026020010151905060008584815181106129b8576129b861485a565b60200260200101519050336001600160a01b0316836001600160a01b0316636352211e846040518263ffffffff1660e01b81526004016129fa91815260200190565b602060405180830381865afa158015612a17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a3b9190614a0e565b6001600160a01b031614612a915760405162461bcd60e51b815260206004820152601460248201527f6572726f723a3130303035204e6f206f776e65720000000000000000000000006044820152606401610e97565b6001600160a01b0383166000908152602b6020526040902054612af65760405162461bcd60e51b815260206004820181905260248201527f6572726f723a313030303620436f6e74726163742063616e6e6f74206d696e746044820152606401610e97565b6001600160a01b0383166000908152602b60209081526040808320546029835281842086855290925290912054612b2e9083906148f5565b1115612ba25760405162461bcd60e51b815260206004820152602960248201527f6572726f723a31303030372047726561746572207468616e206d6178696d756d60448201527f207175616e7469747900000000000000000000000000000000000000000000006064820152608401610e97565b601e5481601f54612bb391906148f5565b1115612c105760405162461bcd60e51b815260206004820152602660248201527f6572726f723a313030303820457863656564696e672074686520746f74616c20604482015265185b5bdd5b9d60d21b6064820152608401610e97565b60145481601954612c2191906148f5565b1115612c6f5760405162461bcd60e51b815260206004820152601b60248201527f6572726f723a313030303920526561636820746865206c696d697400000000006044820152606401610e97565b60005b81811015612c9757612c85336001613a3a565b80612c8f81614870565b915050612c72565b5080601954612ca691906148f5565b601955601f54612cb79082906148f5565b601f556001600160a01b0383166000908152602960209081526040808320858452909152902054612ce99082906148f5565b6001600160a01b03909316600090815260296020908152604080832094835293905291909120919091555080612d1e81614870565b91505061295f565b5050610ddd6001600a55565b612d3a613427565b6001600160a01b038116612db65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610e97565b6116e481613481565b612dc8336119c7565b612e185760405162461bcd60e51b815260206004820152602d6024820152600080516020614c1383398151915260448201526c103737ba1037b832b930ba37b960991b6064820152608401610e97565b6116e47f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92982613a54565b60006001600160e01b031982167f649a51a8000000000000000000000000000000000000000000000000000000001480610c355750610c3582613ad7565b6000805482108015610c35575050600090815260046020526040902054600160e01b900460ff161590565b600082815260066020526040808220805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60408051606081018252600080825260208201819052918101919091528160005481101561301757600081815260046020908152604091829020825160608101845290546001600160a01b0381168252600160a01b810467ffffffffffffffff1692820192909252600160e01b90910460ff161515918101829052906130155780516001600160a01b031615612fab579392505050565b5060001901600081815260046020908152604091829020825160608101845290546001600160a01b038116808352600160a01b820467ffffffffffffffff1693830193909352600160e01b900460ff1615159281019290925215613010579392505050565b612fab565b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600a540361309b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610e97565b6002600a55565b6000826130af8584613b72565b14949350505050565b6015546001600160a01b038216600090815260106020526040902054106131215760405162461bcd60e51b815260206004820152601b60248201527f6572726f723a313030303320616c726561647920636c61696d656400000000006044820152606401610e97565b601e54601f54106131835760405162461bcd60e51b815260206004820152602660248201527f6572726f723a313030313020457863656564696e672074686520746f74616c20604482015265185b5bdd5b9d60d21b6064820152608401610e97565b61318e816001613a3a565b6001600160a01b0381166000908152601060205260409020546131b29060016148f5565b6001600160a01b038216600090815260106020526040902055601f546131d99060016148f5565b601f5550565b60006131ea82612f14565b9050836001600160a01b031681600001516001600160a01b03161461323b576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000336001600160a01b038616148061325957506132598533610b55565b8061327457503361326984610ccd565b6001600160a01b0316145b9050806132ad576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0384166132ed576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6132fa8585856001613bbf565b61330660008487612eab565b6001600160a01b038581166000908152600560209081526040808320805467ffffffffffffffff1980821667ffffffffffffffff92831660001901831617909255898616808652838620805493841693831660019081018416949094179055898652600490945282852080546001600160e01b031916909417600160a01b429092169190910217835587018084529220805491939091166133dc5760005482146133dc578054602086015167ffffffffffffffff16600160a01b026001600160e01b03199091166001600160a01b038a16171781555b50505082846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050505050565b6008546001600160a01b03163314611a815760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e97565b600880546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60008281526009602090815260408083206001600160a01b038516845290915290205460ff16611d1e5760008281526009602090815260408083206001600160a01b03851684529091529020805460ff1916600117905561353e3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6060600682600581111561359857613598614a2b565b60ff1611156135a657600080fd5b8160058111156135b8576135b8614a2b565b6000036135f857505060408051808201909152600681527f5055424c49430000000000000000000000000000000000000000000000000000602082015290565b81600581111561360a5761360a614a2b565b60010361364a57505060408051808201909152600981527f4558434c55534956450000000000000000000000000000000000000000000000602082015290565b81600581111561365c5761365c614a2b565b60020361369c57505060408051808201909152600a81527f434f4d4d45524349414c00000000000000000000000000000000000000000000602082015290565b8160058111156136ae576136ae614a2b565b6003036136ee57505060408051808201909152601281527f434f4d4d45524349414c5f4e4f5f484154450000000000000000000000000000602082015290565b81600581111561370057613700614a2b565b60040361374057505060408051808201909152600881527f504552534f4e414c000000000000000000000000000000000000000000000000602082015290565b505060408051808201909152601081527f504552534f4e414c5f4e4f5f4841544500000000000000000000000000000000602082015290565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a02906137ae903390899088908890600401614b4a565b6020604051808303816000875af19250505080156137e9575060408051601f3d908101601f191682019092526137e691810190614b86565b60015b613847573d808015613817576040519150601f19603f3d011682016040523d82523d6000602084013e61381c565b606091505b50805160000361383f576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490505b949350505050565b6060600061387283613c65565b600101905060008167ffffffffffffffff8111156138925761389261410b565b6040519080825280601f01601f1916602001820160405280156138bc576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85049450846138c657509392505050565b60608160000361394857505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115613972578061395c81614870565b915061396b9050600a83614bb9565b915061394c565b60008167ffffffffffffffff81111561398d5761398d61410b565b6040519080825280601f01601f1916602001820160405280156139b7576020820181803683370190505b5090505b841561385d576139cc600183614847565b91506139d9600a86614bcd565b6139e49060306148f5565b60f81b8183815181106139f9576139f961485a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350613a33600a86614bb9565b94506139bb565b611d1e828260405180602001604052806000815250613d47565b60008281526009602090815260408083206001600160a01b038516845290915290205460ff1615611d1e5760008281526009602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60006001600160e01b031982167f80ac58cd000000000000000000000000000000000000000000000000000000001480613b3a57506001600160e01b031982167f5b5e139f00000000000000000000000000000000000000000000000000000000145b80610c3557507f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b0319831614610c35565b600081815b8451811015613bb757613ba382868381518110613b9657613b9661485a565b6020026020010151613f5e565b915080613baf81614870565b915050613b77565b509392505050565b816000613bcc83836148f5565b90505b80821015613c5d576000828152600e60205260409020541580613bf457506028546002145b80613c01575060205460ff165b613c4d5760405162461bcd60e51b815260206004820181905260248201527f6572726f723a3130303037205374616b652063616e2774207472616e736665726044820152606401610e97565b613c5682614870565b9150613bcf565b505050505050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310613cae577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310613cda576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310613cf857662386f26fc10000830492506010015b6305f5e1008310613d10576305f5e100830492506008015b6127108310613d2457612710830492506004015b60648310613d36576064830492506002015b600a8310610c355760010192915050565b6000546001600160a01b038416613d8a576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003613dc4576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b613dd16000858386613bbf565b6001600160a01b038416600081815260056020908152604080832080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000811667ffffffffffffffff8083168b0181169182176801000000000000000067ffffffffffffffff1990941690921783900481168b01811690920217909155858452600490925290912080546001600160e01b0319168317600160a01b42909316929092029190911790558190818501903b15613f09575b60405182906001600160a01b038816906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4613ed26000878480600101955087613779565b613eef576040516368d2bf6b60e11b815260040160405180910390fd5b808210613e87578260005414613f0457600080fd5b613f4e565b5b6040516001830192906001600160a01b038816906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4808210613f0a575b506000908155610f9a9085838684565b6000818310613f7a576000828152602084905260409020610e42565b6000838152602083905260409020610e42565b6001600160e01b0319811681146116e457600080fd5b600060208284031215613fb557600080fd5b8135610e4281613f8d565b60005b83811015613fdb578181015183820152602001613fc3565b50506000910152565b60008151808452613ffc816020860160208601613fc0565b601f01601f19169290920160200192915050565b602081526000610e426020830184613fe4565b60006020828403121561403557600080fd5b5035919050565b6001600160a01b03811681146116e457600080fd5b6000806040838503121561406457600080fd5b823561406f8161403c565b946020939093013593505050565b60008083601f84011261408f57600080fd5b50813567ffffffffffffffff8111156140a757600080fd5b6020830191508360208260051b85010111156140c257600080fd5b9250929050565b600080602083850312156140dc57600080fd5b823567ffffffffffffffff8111156140f357600080fd5b6140ff8582860161407d565b90969095509350505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561414a5761414a61410b565b604052919050565b600067ffffffffffffffff82111561416c5761416c61410b565b5060051b60200190565b600082601f83011261418757600080fd5b8135602061419c61419783614152565b614121565b82815260059290921b840181019181810190868411156141bb57600080fd5b8286015b848110156141df5780356141d28161403c565b83529183019183016141bf565b509695505050505050565b600080604083850312156141fd57600080fd5b823567ffffffffffffffff81111561421457600080fd5b61422085828601614176565b92505060208301356142318161403c565b809150509250929050565b60008060006040848603121561425157600080fd5b833567ffffffffffffffff81111561426857600080fd5b6142748682870161407d565b909790965060209590950135949350505050565b600080600080600060a086880312156142a057600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b6000806000606084860312156142d857600080fd5b83356142e38161403c565b925060208401356142f38161403c565b929592945050506040919091013590565b6000806000806080858703121561431a57600080fd5b84356143258161403c565b935060208501356143358161403c565b925060408501356143458161403c565b9396929550929360600135925050565b60008060006060848603121561436a57600080fd5b505081359360208301359350604090920135919050565b80151581146116e457600080fd5b600080600080600060a086880312156143a757600080fd5b85356143b281614381565b945060208601356143c281614381565b935060408601356143d281614381565b925060608601356143e281614381565b915060808601356143f281614381565b809150509295509295909350565b60006020828403121561441257600080fd5b8135610e428161403c565b6000806040838503121561443057600080fd5b50508035926020909101359150565b6000806000806040858703121561445557600080fd5b843567ffffffffffffffff8082111561446d57600080fd5b6144798883890161407d565b9096509450602087013591508082111561449257600080fd5b5061449f8782880161407d565b95989497509550505050565b600080604083850312156144be57600080fd5b8235915060208301356142318161403c565b600067ffffffffffffffff8311156144ea576144ea61410b565b6144fd601f8401601f1916602001614121565b905082815283838301111561451157600080fd5b828260208301376000602084830101529392505050565b60006020828403121561453a57600080fd5b813567ffffffffffffffff81111561455157600080fd5b8201601f8101841361456257600080fd5b61385d848235602084016144d0565b6000806040838503121561458457600080fd5b823561458f8161403c565b9150602083013561423181614381565b600082601f8301126145b057600080fd5b813560206145c061419783614152565b82815260059290921b840181019181810190868411156145df57600080fd5b8286015b848110156141df57803583529183019183016145e3565b6000806040838503121561460d57600080fd5b82356146188161403c565b9150602083013567ffffffffffffffff81111561463457600080fd5b6146408582860161459f565b9150509250929050565b6000806000806080858703121561466057600080fd5b843561466b8161403c565b9350602085013561467b8161403c565b925060408501359150606085013567ffffffffffffffff81111561469e57600080fd5b8501601f810187136146af57600080fd5b6146be878235602084016144d0565b91505092959194509250565b600080604083850312156146dd57600080fd5b823567ffffffffffffffff808211156146f557600080fd5b61470186838701614176565b9350602085013591508082111561471757600080fd5b506146408582860161459f565b60006020828403121561473657600080fd5b8135610e4281614381565b6000806040838503121561475457600080fd5b823561475f8161403c565b915060208301356142318161403c565b60008060006060848603121561478457600080fd5b833567ffffffffffffffff8082111561479c57600080fd5b6147a887838801614176565b945060208601359150808211156147be57600080fd5b6147ca8783880161459f565b935060408601359150808211156147e057600080fd5b506147ed8682870161459f565b9150509250925092565b600181811c9082168061480b57607f821691505b60208210810361482b57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610c3557610c35614831565b634e487b7160e01b600052603260045260246000fd5b60006001820161488257614882614831565b5060010190565b60006020828403121561489b57600080fd5b5051919050565b6000602082840312156148b457600080fd5b8151610e4281614381565b600060ff821660ff81036148d5576148d5614831565b60010192915050565b8082028115828204841417610c3557610c35614831565b80820180821115610c3557610c35614831565b601f821115610ddd57600081815260208120601f850160051c8101602086101561492f5750805b601f850160051c820191505b81811015613c5d5782815560010161493b565b815167ffffffffffffffff8111156149685761496861410b565b61497c8161497684546147f7565b84614908565b602080601f8311600181146149b157600084156149995750858301515b600019600386901b1c1916600185901b178555613c5d565b600085815260208120601f198616915b828110156149e0578886015182559484019460019091019084016149c1565b50858210156149fe5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215614a2057600080fd5b8151610e428161403c565b634e487b7160e01b600052602160045260246000fd5b60008351614a53818460208801613fc0565b835190830190614a67818360208801613fc0565b01949350505050565b6000808454614a7e816147f7565b60018281168015614a965760018114614aab57614ada565b60ff1984168752821515830287019450614ada565b8860005260208060002060005b85811015614ad15781548a820152908401908201614ab8565b50505082870194505b507f2f00000000000000000000000000000000000000000000000000000000000000845286519250614b128382860160208a01613fc0565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000939092019182019290925260060195945050505050565b60006001600160a01b03808716835280861660208401525083604083015260806060830152614b7c6080830184613fe4565b9695505050505050565b600060208284031215614b9857600080fd5b8151610e4281613f8d565b634e487b7160e01b600052601260045260246000fd5b600082614bc857614bc8614ba3565b500490565b600082614bdc57614bdc614ba3565b50069056fe61723a2f2f7a6d63315754737049684679565938326277664149634945784c4648356c55634848554e307758673457382f4f70657261746f72416363657373436f6e74726f6c3a2063616c6c6572206973a2646970667358221220cee70ac57e621b75181506f217f9b9cdcabb3bf0cbae8b9c80d270d67adf1efa64736f6c6343000814003368747470733a2f2f73332e61702d736f757468656173742d312e616d617a6f6e6177732e636f6d2f747261646974696f6e6f772d6173736574732f747261646974696f6e6f772d6173736574732f506f636b6574576974684c6f7665