[ { "inputs": [ { "internalType": "address", "name": "initialOwner_", "type": "address" }, { "internalType": "address[4]", "name": "initialAddresses", "type": "address[4]" }, { "internalType": "string[2]", "name": "initialURIs", "type": "string[2]" }, { "internalType": "uint256[8]", "name": "initialPricesAndLimits", "type": "uint256[8]" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AlreadyExists", "type": "error" }, { "inputs": [], "name": "DecimalsTooLow", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "numerator", "type": "uint256" }, { "internalType": "uint256", "name": "denominator", "type": "uint256" } ], "name": "ERC2981InvalidDefaultRoyalty", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC2981InvalidDefaultRoyaltyReceiver", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "numerator", "type": "uint256" }, { "internalType": "uint256", "name": "denominator", "type": "uint256" } ], "name": "ERC2981InvalidTokenRoyalty", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC2981InvalidTokenRoyaltyReceiver", "type": "error" }, { "inputs": [], "name": "InsufficientAllowance", "type": "error" }, { "inputs": [], "name": "InvalidApproval", "type": "error" }, { "inputs": [], "name": "InvalidExemption", "type": "error" }, { "inputs": [], "name": "InvalidOperator", "type": "error" }, { "inputs": [], "name": "InvalidRecipient", "type": "error" }, { "inputs": [], "name": "InvalidSender", "type": "error" }, { "inputs": [], "name": "InvalidSigner", "type": "error" }, { "inputs": [], "name": "InvalidSpender", "type": "error" }, { "inputs": [], "name": "InvalidTokenId", "type": "error" }, { "inputs": [], "name": "MintLimitReached", "type": "error" }, { "inputs": [], "name": "NotFound", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "inputs": [], "name": "OwnedIndexOverflow", "type": "error" }, { "inputs": [], "name": "PermitDeadlineExpired", "type": "error" }, { "inputs": [], "name": "QueueEmpty", "type": "error" }, { "inputs": [], "name": "QueueFull", "type": "error" }, { "inputs": [], "name": "QueueOutOfBounds", "type": "error" }, { "inputs": [], "name": "RecipientIsERC721TransferExempt", "type": "error" }, { "inputs": [], "name": "Unauthorized", "type": "error" }, { "inputs": [], "name": "UnsafeRecipient", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "id", "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": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "TaxPaid", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Transfer", "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": "id", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "ID_ENCODING_PREFIX", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MAX_TOKENS", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender_", "type": "address" }, { "internalType": "uint256", "name": "valueOrId_", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "baseURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_whitelistedAddress", "type": "address" }, { "internalType": "bytes32[]", "name": "_merkleProof", "type": "bytes32[]" } ], "name": "checkUserWhitelisted", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "dexAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender_", "type": "address" }, { "internalType": "uint256", "name": "value_", "type": "uint256" } ], "name": "erc20Approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner_", "type": "address" } ], "name": "erc20BalanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "erc20TotalSupply", "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": "value_", "type": "uint256" } ], "name": "erc20TransferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender_", "type": "address" }, { "internalType": "uint256", "name": "id_", "type": "uint256" } ], "name": "erc721Approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner_", "type": "address" } ], "name": "erc721BalanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "erc721TotalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "target_", "type": "address" } ], "name": "erc721TransferExempt", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from_", "type": "address" }, { "internalType": "address", "name": "to_", "type": "address" }, { "internalType": "uint256", "name": "id_", "type": "uint256" } ], "name": "erc721TransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "getAllData", "outputs": [ { "components": [ { "internalType": "uint256", "name": "timestamp", "type": "uint256" }, { "internalType": "string", "name": "baseURI", "type": "string" }, { "internalType": "string", "name": "infoURI", "type": "string" }, { "internalType": "bool", "name": "isPrivate", "type": "bool" }, { "internalType": "uint256", "name": "MAX_TOKENS", "type": "uint256" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "privateMintPrice", "type": "uint256" }, { "internalType": "uint256", "name": "privateMaxMintAmount", "type": "uint256" }, { "internalType": "uint256", "name": "privateMintStart", "type": "uint256" }, { "internalType": "uint256", "name": "privateMintEnd", "type": "uint256" }, { "internalType": "uint256", "name": "publicMintPrice", "type": "uint256" }, { "internalType": "uint256", "name": "publicMaxMintAmount", "type": "uint256" }, { "internalType": "uint256", "name": "publicMintStart", "type": "uint256" }, { "internalType": "uint256", "name": "publicMintEnd", "type": "uint256" }, { "internalType": "string", "name": "symbol", "type": "string" }, { "internalType": "uint256", "name": "totalSupply", "type": "uint256" } ], "internalType": "struct HyperRIPZ.AllData", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getERC721QueueLength", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "start_", "type": "uint256" }, { "internalType": "uint256", "name": "count_", "type": "uint256" } ], "name": "getERC721TokensInQueue", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getRecipients", "outputs": [ { "components": [ { "internalType": "address", "name": "recipientAddress", "type": "address" }, { "internalType": "uint96", "name": "percentage", "type": "uint96" } ], "internalType": "struct HyperRIPZ.Recipient[]", "name": "", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "infoURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "isPrivate", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "numberOfTokens", "type": "uint256" }, { "internalType": "bytes32[]", "name": "merkleProof", "type": "bytes32[]" } ], "name": "mint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "mintActive", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "minted", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner_", "type": "address" } ], "name": "owned", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id_", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "erc721Owner", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner_", "type": "address" }, { "internalType": "address", "name": "spender_", "type": "address" }, { "internalType": "uint256", "name": "value_", "type": "uint256" }, { "internalType": "uint256", "name": "deadline_", "type": "uint256" }, { "internalType": "uint8", "name": "v_", "type": "uint8" }, { "internalType": "bytes32", "name": "r_", "type": "bytes32" }, { "internalType": "bytes32", "name": "s_", "type": "bytes32" } ], "name": "permit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "privateMaxMintAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "privateMintEnd", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "privateMintPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "privateMintStart", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "publicMaxMintAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "publicMintEnd", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "publicMintPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "publicMintStart", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "royaltyAmount", "outputs": [ { "internalType": "uint96", "name": "", "type": "uint96" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "salePrice", "type": "uint256" } ], "name": "royaltyInfo", "outputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_salePrice", "type": "uint256" } ], "name": "royaltyInfo", "outputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from_", "type": "address" }, { "internalType": "address", "name": "to_", "type": "address" }, { "internalType": "uint256", "name": "id_", "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": "id_", "type": "uint256" }, { "internalType": "bytes", "name": "data_", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address[4]", "name": "newAddresses", "type": "address[4]" } ], "name": "setAddresses", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator_", "type": "address" }, { "internalType": "bool", "name": "approved_", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account_", "type": "address" }, { "internalType": "bool", "name": "value_", "type": "bool" } ], "name": "setERC721TransferExempt", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "newMerkleRoot", "type": "bytes32" } ], "name": "setMerkleRoot", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256[8]", "name": "pricesAndLimits", "type": "uint256[8]" } ], "name": "setPricesAndLimits", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "addresses", "type": "address[]" }, { "internalType": "uint96[]", "name": "percentages", "type": "uint96[]" } ], "name": "setRecipients", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "state_", "type": "bool" } ], "name": "setSelfERC721TransferExempt", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string[2]", "name": "initialURIs", "type": "string[2]" } ], "name": "setURIs", "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": [], "name": "taxRecipientAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_owner", "type": "address" } ], "name": "tokensOfOwner", "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": "to_", "type": "address" }, { "internalType": "uint256", "name": "value_", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from_", "type": "address" }, { "internalType": "address", "name": "to_", "type": "address" }, { "internalType": "uint256", "name": "valueOrId_", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "units", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
61010060405234801561001157600080fd5b506040516158a13803806158a183398101604081905261003091610f15565b6040805180820182526009815268243cb832b92924a82d60b91b6020808301919091528251808401909352600383526205249560ec1b90830152906012866001600160a01b03811661009d57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6100a681610232565b5060036100b38482611052565b5060046100c08382611052565b5060128160ff1610156100e6576040516398790fd560e01b815260040160405180910390fd5b60ff811660808190526100fa90600a61120b565b60a0524660c052610109610282565b60e05250508351601180546001600160a01b03199081166001600160a01b0393841617909155602086015160138054831691841691909117905560408601516014805490921690831617905560608501516101e0601255600360155516607d60a21b8117601681905561018d92506001600160601b03600160a01b9091041661031c565b815160179061019c9082611052565b5060208201516018906101af9082611052565b508051601955602080820151601a556040820151601b556060820151601c556080820151601d5560a0820151601e5560c0820151601f5560e08201519055601154610204906001600160a01b031660016103bf565b60115460a051601254610229926001600160a01b03169161022491611237565b61042e565b5050505061133b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60036040516102b4919061124e565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6127106001600160601b03821681101561035b57604051636f483d0960e01b81526001600160601b038316600482015260248101829052604401610094565b6001600160a01b03831661038557604051635b6cc80560e11b815260006004820152602401610094565b50604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600f55565b6001600160a01b0382166103e65760405163a41e3d3f60e01b815260040160405180910390fd5b80156103fa576103f582610498565b610403565b610403826104cc565b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b6001600160a01b03821661045557604051634e46966960e11b815260040160405180910390fd5b600160ff1b8160055461046891906112c4565b11156104875760405163303b682f60e01b815260040160405180910390fd5b6104936000838361054b565b505050565b6001600160a01b0381166000908152600c6020526040812054905b81811015610493576104c4836107bd565b6001016104b3565b60a0516000906104f1836001600160a01b031660009081526007602052604090205490565b6104fb91906112d7565b9050600061051e836001600160a01b03166000908152600c602052604090205490565b905060005b61052d82846112f9565b8110156105455761053d84610848565b600101610523565b50505050565b6001600160a01b0383811660009081526007602052604080822054928516825281205490919061057c868686610930565b6000610587876109da565b90506000610594876109da565b90508180156105a05750805b6107af57811561060f57600060a051846105ba91906112d7565b60a0516001600160a01b038a166000908152600760205260409020546105e091906112d7565b6105ea91906112f9565b905060005b818110156106085761060089610848565b6001016105ef565b50506107af565b80156106715760a0516001600160a01b038916600090815260076020526040812054909161063c916112d7565b60a05161064990876112d7565b61065391906112f9565b905060005b81811015610608576106698a6107bd565b600101610658565b600060a0518761068191906112d7565b905060005b8181101561070a576001600160a01b038a166000908152600c60205260408120546106b3906001906112f9565b6001600160a01b038c166000908152600c6020526040812080549293509091839081106106e2576106e2611221565b906000526020600020015490506107008c8c83610a1060201b60201c565b5050600101610686565b5060a051819061072f8b6001600160a01b031660009081526007602052604090205490565b61073991906112d7565b60a05161074690886112d7565b61075091906112f9565b111561075f5761075f896107bd565b8060a0518561076e91906112d7565b60a0516001600160a01b038b1660009081526007602052604090205461079491906112d7565b61079e91906112f9565b11156107ad576107ad88610848565b505b506001979650505050505050565b6001600160a01b0381166107e457604051636edaef2f60e11b815260040160405180910390fd5b6001600160a01b0381166000908152600c60205260408120805461080a906001906112f9565b8154811061081a5761081a611221565b9060005260206000200154905061083982600083610a1060201b60201c565b610844600182610bd6565b5050565b6001600160a01b03811661086f57604051634e46966960e11b815260040160405180910390fd5b600061088f600154600160801b81046001600160801b0390811691161490565b6108a45761089d6001610c40565b90506108ee565b6006600081546108b39061130c565b909155506006546001016108da5760405163303b682f60e01b815260040160405180910390fd5b6006546108eb90600160ff1b6112c4565b90505b6000818152600b60205260409020546001600160a01b031680156109255760405163119b4fd360e11b815260040160405180910390fd5b610493818484610a10565b6001600160a01b03831661095b57806005600082825461095091906112c4565b909155506109899050565b6001600160a01b038316600090815260076020526040812080548392906109839084906112f9565b90915550505b6001600160a01b0380831660008181526007602052604090819020805485019055519091851690600080516020615881833981519152906109cd9085815260200190565b60405180910390a3505050565b60006001600160a01b0382161580610a0a57506001600160a01b0382166000908152600d602052604090205460ff165b92915050565b6001600160a01b03831615610b1b57600081815260096020908152604080832080546001600160a01b03191690556001600160a01b0386168352600c90915281208054610a5f906001906112f9565b81548110610a6f57610a6f611221565b90600052602060002001549050818114610adc576000828152600b602052604081205460a01c6001600160a01b0386166000908152600c602052604090208054919250839183908110610ac457610ac4611221565b600091825260209091200155610ada8282610cb0565b505b6001600160a01b0384166000908152600c60205260409020805480610b0357610b03611325565b60019003818190600052602060002001600090559055505b6001600160a01b03821615610b92576000818152600b6020908152604080832080546001600160a01b0319166001600160a01b038716908101909155808452600c83529083208054600181810183558286529385200185905592529054610b8d918391610b8891906112f9565b610cb0565b610ba2565b6000818152600b60205260408120555b80826001600160a01b0316846001600160a01b031660008051602061588183398151915260405160405180910390a4505050565b81546001600160801b038082166000190191600160801b9004811690821603610c1257604051638acb5f2760e01b815260040160405180910390fd5b6001600160801b0316600081815260018401602052604090209190915581546001600160801b031916179055565b80546000906001600160801b03600160801b8204811691168103610c77576040516375e52f4f60e01b815260040160405180910390fd5b600019016001600160801b039081166000818152600185016020526040812080549190558454909216600160801b909102179092555090565b6000828152600b60205260409020546001600160601b03821115610ce757604051633f2cd0e360e21b815260040160405180910390fd5b6000928352600b60205260409092206001600160a01b039290921660a09190911b6001600160a01b031916019055565b80516001600160a01b0381168114610d2e57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715610d6b57610d6b610d33565b60405290565b604051608081016001600160401b0381118282101715610d6b57610d6b610d33565b604051601f8201601f191681016001600160401b0381118282101715610dbb57610dbb610d33565b604052919050565b6000601f83601f840112610dd657600080fd5b610dde610d49565b806040850186811115610df057600080fd5b855b81811015610e9c5780516001600160401b0380821115610e125760008081fd5b81890191508987830112610e265760008081fd5b815181811115610e3857610e38610d33565b60209150610e4d818901601f19168301610d93565b8181528b83838601011115610e625760008081fd5b60005b82811015610e80578481018401518282018501528301610e65565b5060009181018301919091528652949094019350602001610df2565b50909695505050505050565b600082601f830112610eb957600080fd5b6040516101008082016001600160401b0381118382101715610edd57610edd610d33565b60405283018185821115610ef057600080fd5b845b82811015610f0a578051825260209182019101610ef2565b509195945050505050565b6000806000806101c08587031215610f2c57600080fd5b610f3585610d17565b9350602086603f870112610f4857600080fd5b610f50610d71565b8060a0880189811115610f6257600080fd5b602089015b81811015610f8557610f7881610d17565b8452928401928401610f67565b50519095509150506001600160401b03811115610fa157600080fd5b610fad87828801610dc3565b925050610fbd8660c08701610ea8565b905092959194509250565b600181811c90821680610fdc57607f821691505b602082108103610ffc57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610493576000816000526020600020601f850160051c8101602086101561102b5750805b601f850160051c820191505b8181101561104a57828155600101611037565b505050505050565b81516001600160401b0381111561106b5761106b610d33565b61107f816110798454610fc8565b84611002565b602080601f8311600181146110b4576000841561109c5750858301515b600019600386901b1c1916600185901b17855561104a565b600085815260208120601f198616915b828110156110e3578886015182559484019460019091019084016110c4565b50858210156111015787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561116257816000190482111561114857611148611111565b8085161561115557918102915b93841c939080029061112c565b509250929050565b60008261117957506001610a0a565b8161118657506000610a0a565b816001811461119c57600281146111a6576111c2565b6001915050610a0a565b60ff8411156111b7576111b7611111565b50506001821b610a0a565b5060208310610133831016604e8410600b84101617156111e5575081810a610a0a565b6111ef8383611127565b806000190482111561120357611203611111565b029392505050565b600061121a60ff84168361116a565b9392505050565b634e487b7160e01b600052603260045260246000fd5b8082028115828204841417610a0a57610a0a611111565b600080835461125c81610fc8565b600182811680156112745760018114611289576112b8565b60ff19841687528215158302870194506112b8565b8760005260208060002060005b858110156112af5781548a820152908401908201611296565b50505082870194505b50929695505050505050565b80820180821115610a0a57610a0a611111565b6000826112f457634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610a0a57610a0a611111565b60006001820161131e5761131e611111565b5060010190565b634e487b7160e01b600052603160045260246000fd5b60805160a05160c05160e0516144b96113c86000396000611450015260006114200152600081816109a301528181611ef5015281816124e70152818161303e0152818161311301528181613157015281816131d0015281816131fa0152818161324e015281816132fa015281816133470152818161338b01526133b2015260006106a101526144b96000f3fe6080604052600436106103f95760003560e01c80637ecebe0011610213578063c6e672b911610123578063dd637699116100ab578063ed56f5a21161007a578063ed56f5a214610c6f578063f2fde38b14610c8f578063f47c84c514610caf578063f780bc1a14610cc5578063faff660e14610ce557600080fd5b8063dd63769914610bde578063df98cd0414610bfe578063dfabc03314610c14578063e985e9c514610c3457600080fd5b8063d505accf116100f2578063d505accf14610b2e578063d78d610b14610b4e578063d96ca0b914610b70578063dc53fd9214610b90578063dd62ed3e14610ba657600080fd5b8063c6e672b914610ab8578063c87b56dd14610ad8578063cce54e4414610af8578063cef6d36814610b0e57600080fd5b8063976a8435116101a6578063b3f9ea3411610175578063b3f9ea3414610a25578063b88d4fde14610a5b578063ba41b0c614610a7b578063bea8003814610a8e578063c5ab3ba614610aa357600080fd5b8063976a843514610991578063a22cb465146109c5578063a9059cbb146109e5578063b1ab931714610a0557600080fd5b80638a696e50116101e25780638a696e50146109285780638cfec4c0146109485780638da5cb5b1461095e57806395d89b411461097c57600080fd5b80637ecebe00146108995780638462151c146108c6578063850de740146108f357806389fb4c661461091357600080fd5b80632d10fa281161030e5780636352211e116102a1578063715018a611610270578063715018a6146107ef578063745fba84146108045780637c6e551d146108245780637cb64759146108635780637dcd7c6f1461088357600080fd5b80636352211e146107755780636c0360eb146107955780636e8f624b146107aa57806370a08231146107c257600080fd5b806342842e0e116102dd57806342842e0e146106ff57806345d1a6b71461071f5780634d9660721461073f5780634f02c4201461075f57600080fd5b80632d10fa281461066d578063313ce5671461068f5780633644e515146106d55780633ccfd60b146106ea57600080fd5b806318160ddd1161039157806323b872dd1161036057806323b872dd146105c057806325fd90f3146105e05780632a196e1b146105f85780632a55205a1461060e5780632b9ab4f61461064d57600080fd5b806318160ddd1461055257806319119d20146105685780631b63c5ae1461058a57806320801842146105a057600080fd5b8063081812fc116103cd578063081812fc146104af578063095ea7b3146104fd57806309674eb01461051d57806309f0ef651461053257600080fd5b806204348e146103fe57806301ffc9a71461042757806302519da31461045757806306fdde031461048d575b600080fd5b34801561040a57600080fd5b5061041460195481565b6040519081526020015b60405180910390f35b34801561043357600080fd5b50610447610442366004613825565b610cfa565b604051901515815260200161041e565b34801561046357600080fd5b50610414610472366004613859565b6001600160a01b031660009081526007602052604090205490565b34801561049957600080fd5b506104a2610d0b565b60405161041e91906138c4565b3480156104bb57600080fd5b506104e56104ca3660046138d7565b6009602052600090815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161041e565b34801561050957600080fd5b506104476105183660046138f0565b610d99565b34801561052957600080fd5b50610414610dd2565b34801561053e57600080fd5b5061044761054d366004613859565b610dfc565b34801561055e57600080fd5b5061041460055481565b34801561057457600080fd5b50610588610583366004613a30565b610e2e565b005b34801561059657600080fd5b50610414601b5481565b3480156105ac57600080fd5b506104476105bb366004613b33565b610f44565b3480156105cc57600080fd5b506104476105db366004613b85565b610fcc565b3480156105ec57600080fd5b50601b54421015610447565b34801561060457600080fd5b5061041460205481565b34801561061a57600080fd5b5061062e610629366004613bc1565b611008565b604080516001600160a01b03909316835260208301919091520161041e565b34801561065957600080fd5b506014546104e5906001600160a01b031681565b34801561067957600080fd5b506106826110b6565b60405161041e9190613be3565b34801561069b57600080fd5b506106c37f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff909116815260200161041e565b3480156106e157600080fd5b5061041461141c565b3480156106f657600080fd5b50610588611472565b34801561070b57600080fd5b5061058861071a366004613b85565b6116df565b34801561072b57600080fd5b5061058861073a366004613d78565b6116fa565b34801561074b57600080fd5b5061044761075a3660046138f0565b611724565b34801561076b57600080fd5b5061041460065481565b34801561078157600080fd5b506104e56107903660046138d7565b6117b1565b3480156107a157600080fd5b506104a261181b565b3480156107b657600080fd5b50610414600160ff1b81565b3480156107ce57600080fd5b506104146107dd366004613859565b60076020526000908152604090205481565b3480156107fb57600080fd5b50610588611828565b34801561081057600080fd5b506013546104e5906001600160a01b031681565b34801561083057600080fd5b5060165461084b90600160a01b90046001600160601b031681565b6040516001600160601b03909116815260200161041e565b34801561086f57600080fd5b5061058861087e3660046138d7565b61183c565b34801561088f57600080fd5b50610414601a5481565b3480156108a557600080fd5b506104146108b4366004613859565b600e6020526000908152604090205481565b3480156108d257600080fd5b506108e66108e1366004613859565b611849565b60405161041e9190613e28565b3480156108ff57600080fd5b5061058861090e366004613e6c565b6118f7565b34801561091f57600080fd5b50600554610414565b34801561093457600080fd5b50610588610943366004613efa565b6119e9565b34801561095457600080fd5b50610414601f5481565b34801561096a57600080fd5b506000546001600160a01b03166104e5565b34801561098857600080fd5b506104a26119f3565b34801561099d57600080fd5b506104147f000000000000000000000000000000000000000000000000000000000000000081565b3480156109d157600080fd5b506105886109e0366004613f15565b611a00565b3480156109f157600080fd5b50610447610a003660046138f0565b611a93565b348015610a1157600080fd5b506108e6610a20366004613859565b611b5f565b348015610a3157600080fd5b50610414610a40366004613859565b6001600160a01b03166000908152600c602052604090205490565b348015610a6757600080fd5b50610588610a76366004613f48565b611bcb565b610588610a89366004613fc3565b611cb9565b348015610a9a57600080fd5b506104a2611f28565b348015610aaf57600080fd5b50600654610414565b348015610ac457600080fd5b50610588610ad3366004613f15565b611f35565b348015610ae457600080fd5b506104a2610af33660046138d7565b611f47565b348015610b0457600080fd5b50610414601e5481565b348015610b1a57600080fd5b5061062e610b293660046138d7565b611fd9565b348015610b3a57600080fd5b50610588610b49366004613ff5565b61201d565b348015610b5a57600080fd5b50610b63612260565b60405161041e9190614068565b348015610b7c57600080fd5b50610447610b8b366004613b85565b6122e4565b348015610b9c57600080fd5b50610414601d5481565b348015610bb257600080fd5b50610414610bc13660046140c9565b600860209081526000928352604080842090915290825290205481565b348015610bea57600080fd5b50610588610bf9366004613b85565b6123b5565b348015610c0a57600080fd5b50610414601c5481565b348015610c2057600080fd5b50610588610c2f3660046138f0565b612516565b348015610c4057600080fd5b50610447610c4f3660046140c9565b600a60209081526000928352604080842090915290825290205460ff1681565b348015610c7b57600080fd5b50610588610c8a3660046140f3565b6125db565b348015610c9b57600080fd5b50610588610caa366004613859565b612640565b348015610cbb57600080fd5b5061041461096481565b348015610cd157600080fd5b506108e6610ce0366004613bc1565b61267b565b348015610cf157600080fd5b5061044761270f565b6000610d0582612736565b92915050565b60038054610d1890614177565b80601f0160208091040260200160405190810160405280929190818152602001828054610d4490614177565b8015610d915780601f10610d6657610100808354040283529160200191610d91565b820191906000526020600020905b815481529060010190602001808311610d7457829003601f168201915b505050505081565b6000610da48261276b565b15610db857610db38383612516565b610dc9565b610dc28383611724565b9050610d05565b50600192915050565b6000610df76001546001600160801b03808216600160801b9092048116919091031690565b905090565b60006001600160a01b0382161580610d055750506001600160a01b03166000908152600d602052604090205460ff1690565b610e36612784565b8051825114610e8c5760405162461bcd60e51b815260206004820152601f60248201527f4552524f525f414444524553535f50455243454e54414745535f4d415443480060448201526064015b60405180910390fd5b610e98602260006137dd565b60005b8251811015610f3f5760226040518060400160405280858481518110610ec357610ec36141ab565b60200260200101516001600160a01b03168152602001848481518110610eeb57610eeb6141ab565b6020908102919091018101516001600160601b0390811690925283546001818101865560009586529482902084519490920151909216600160a01b026001600160a01b039093169290921791015501610e9b565b505050565b6040516bffffffffffffffffffffffff19606085901b1660208201526000908190603401604051602081830303815290604052805190602001209050610fc18484808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505060215491508490506127b1565b9150505b9392505050565b6000610fd78261276b565b15610fec57610fe78484846123b5565b610ffe565b610ff78484846122e4565b9050610fc5565b5060019392505050565b60008281526010602090815260408083208151808301909252546001600160a01b038116808352600160a01b9091046001600160601b031692820192909252829161107d575060408051808201909152600f546001600160a01b0381168252600160a01b90046001600160601b031660208201525b60208101516000906127109061109c906001600160601b0316876141d7565b6110a691906141ee565b91519350909150505b9250929050565b611148604051806102200160405280600081526020016060815260200160608152602001600015158152602001600081526020016060815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160608152602001600081525090565b6040518061022001604052804281526020016017805461116790614177565b80601f016020809104026020016040519081016040528092919081815260200182805461119390614177565b80156111e05780601f106111b5576101008083540402835291602001916111e0565b820191906000526020600020905b8154815290600101906020018083116111c357829003601f168201915b50505050508152602001601880546111f790614177565b80601f016020809104026020016040519081016040528092919081815260200182805461122390614177565b80156112705780601f1061124557610100808354040283529160200191611270565b820191906000526020600020905b81548152906001019060200180831161125357829003601f168201915b5050505050815260200161128261270f565b1515815260200161096481526020016003805461129e90614177565b80601f01602080910402602001604051908101604052809291908181526020018280546112ca90614177565b80156113175780601f106112ec57610100808354040283529160200191611317565b820191906000526020600020905b8154815290600101906020018083116112fa57829003601f168201915b505050505081526020016113336000546001600160a01b031690565b6001600160a01b031681526020016019548152602001601a548152602001601b548152602001601c548152602001601d548152602001601e548152602001601f54815260200160205481526020016004805461138e90614177565b80601f01602080910402602001604051908101604052809291908181526020018280546113ba90614177565b80156114075780601f106113dc57610100808354040283529160200191611407565b820191906000526020600020905b8154815290600101906020018083116113ea57829003601f168201915b50505050508152602001600554815250905090565b60007f0000000000000000000000000000000000000000000000000000000000000000461461144d57610df76127c7565b507f000000000000000000000000000000000000000000000000000000000000000090565b61147a612784565b47806114c85760405162461bcd60e51b815260206004820152601960248201527f4552524f525f57495448445241575f4e4f5f42414c414e4345000000000000006044820152606401610e83565b60225460000361157957600080546040516001600160a01b039091169083908381818185875af1925050503d806000811461151f576040519150601f19603f3d011682016040523d82523d6000602084013e611524565b606091505b50509050806115755760405162461bcd60e51b815260206004820152601e60248201527f4552524f525f57495448445241575f5452414e534645525f4641494c454400006044820152606401610e83565b5050565b6022546115da5760405162461bcd60e51b815260206004820152602960248201527f4552524f525f57495448445241575f4e4f545f494e495449414c495a45445f526044820152684543495049454e545360b81b6064820152608401610e83565b60006115e582612861565b905060005b602254811015610f3f57600060228281548110611609576116096141ab565b60009182526020909120015483516001600160a01b0390911690849084908110611635576116356141ab565b602002602001015160405160006040518083038185875af1925050503d806000811461167d576040519150601f19603f3d011682016040523d82523d6000602084013e611682565b606091505b50509050806116d35760405162461bcd60e51b815260206004820152601e60248201527f4552524f525f57495448445241575f5452414e534645525f4641494c454400006044820152606401610e83565b506001016115ea565b50565b610f3f83838360405180602001604052806000815250611bcb565b611702612784565b80516017906117119082614260565b5060208101516018906115759082614260565b60006001600160a01b03831661174d57604051635461585f60e01b815260040160405180910390fd5b3360008181526008602090815260408083206001600160a01b03881680855290835292819020869055518581529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350600192915050565b6000818152600b60205260409020546001600160a01b03166117d28261276b565b6117ef576040516307ed98ed60e31b815260040160405180910390fd5b6001600160a01b0381166118165760405163c5723b5160e01b815260040160405180910390fd5b919050565b60178054610d1890614177565b611830612784565b61183a600061297e565b565b611844612784565b602155565b6001600160a01b0381166000908152600c60205260408120546060918190036118865760408051600080825260208201909252905b509392505050565b6001600160a01b0383166000908152600c6020908152604091829020805483518184028101840190945280845290918301828280156118e457602002820191906000526020600020905b8154815260200190600101908083116118d0575b5050505050915050919050565b50919050565b6118ff612784565b6020810151610964116119545760405162461bcd60e51b815260206004820152601d60248201527f4552524f525f505249564154455f4d41585f4d494e545f414d4f554e540000006044820152606401610e83565b60a0810151610964116119a95760405162461bcd60e51b815260206004820152601c60248201527f4552524f525f5055424c49435f4d41585f4d494e545f414d4f554e54000000006044820152606401610e83565b8051601955602080820151601a556040820151601b556060820151601c556080820151601d5560a0820151601e5560c0820151601f5560e0909101519055565b6116dc33826129ce565b60048054610d1890614177565b6001600160a01b038216611a275760405163ccea9e6f60e01b815260040160405180910390fd5b336000818152600a602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b600080611aae846013546001600160a01b0391821691161490565b15611b4d576000606460155485611ac591906141d7565b611acf91906141ee565b90506000611add828661431f565b601454909150611af6906001600160a01b031683612a3d565b50611b018682612a3d565b6014546040518481529194506001600160a01b03169033907f53d7ee05b2e51bca8f97e94deef1c963b7d00427f8e0ed4957833199d6ed3c899060200160405180910390a35050610fc5565b611b578484612a3d565b949350505050565b6001600160a01b0381166000908152600c6020908152604091829020805483518184028101840190945280845260609392830182828015611bbf57602002820191906000526020600020905b815481526020019060010190808311611bab575b50505050509050919050565b611bd48261276b565b611bf1576040516307ed98ed60e31b815260040160405180910390fd5b611bfc848484610fcc565b506001600160a01b0383163b15801590611c955750604051630a85bd0160e11b808252906001600160a01b0385169063150b7a0290611c45903390899088908890600401614332565b6020604051808303816000875af1158015611c64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c88919061436f565b6001600160e01b03191614155b15611cb357604051633da6393160e01b815260040160405180910390fd5b50505050565b601b54421015611cff5760405162461bcd60e51b81526020600482015260116024820152704552524f525f4d494e545f41435449564560781b6044820152606401610e83565b6000611d0961270f565b9050600081611d1a57601d54611d1e565b6019545b336000908152600c60205260409020546006549192509083611d41576001611d4c565b611d4c338787610f44565b611d8a5760405162461bcd60e51b815260206004820152600f60248201526e11549493d497d5d2125511531254d5608a1b6044820152606401610e83565b83611d9757601e54611d9b565b601a545b611da5888461438c565b111584611de7576040518060400160405280601781526020017f4552524f525f4d41585f414d4f554e545f5055424c4943000000000000000000815250611e1e565b6040518060400160405280601881526020017f4552524f525f4d41585f414d4f554e545f5052495641544500000000000000008152505b90611e3c5760405162461bcd60e51b8152600401610e8391906138c4565b506000546001600160a01b0316331480611e5f5750611e5b87846141d7565b3410155b611e9e5760405162461bcd60e51b815260206004820152601060248201526f4552524f525f4d494e545f505249434560801b6044820152606401610e83565b610964611eab888361438c565b1115611eec5760405162461bcd60e51b815260206004820152601060248201526f4552524f525f4d41585f544f4b454e5360801b6044820152606401610e83565b611f1f33611f1a7f00000000000000000000000000000000000000000000000000000000000000008a6141d7565b612a71565b50505050505050565b60188054610d1890614177565b611f3d612784565b61157582826129ce565b60606000611f54836117b1565b6001600160a01b031603611f9b5760405162461bcd60e51b815260206004820152600e60248201526d11549493d497d513d2d15397d25160921b6044820152606401610e83565b6000611fa5612ad6565b905080611fb184612b68565b604051602001611fc292919061439f565b604051602081830303815290604052915050919050565b60165460009081906001600160a01b038116906127109061200a90600160a01b90046001600160601b0316866141d7565b61201491906141ee565b91509150915091565b4284101561203e576040516305787bdf60e01b815260040160405180910390fd5b6120478561276b565b15612065576040516303e7c1bd60e31b815260040160405180910390fd5b6001600160a01b03861661208c57604051635461585f60e01b815260040160405180910390fd5b6000600161209861141c565b6001600160a01b038a81166000818152600e602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e08301909152805192019190912061190160f01b6101008301526101028201929092526101228101919091526101420160408051601f198184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa1580156121a4573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615806121d95750876001600160a01b0316816001600160a01b031614155b156121f757604051632057875960e21b815260040160405180910390fd5b6001600160a01b0390811660009081526008602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b606061226a612784565b6022805480602002602001604051908101604052809291908181526020016000905b828210156122db57600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b03168183015282526001909201910161228c565b50505050905090565b6000806122ff846013546001600160a01b0391821691161490565b156123a157600060646015548561231691906141d7565b61232091906141ee565b9050600061232e828661431f565b6014549091506123499088906001600160a01b031684612bfa565b50612355878783612bfa565b6014546040518481529194506001600160a01b03169033907f53d7ee05b2e51bca8f97e94deef1c963b7d00427f8e0ed4957833199d6ed3c899060200160405180910390a35050611b57565b6123ac858585612bfa565b95945050505050565b6001600160a01b0383166123dc57604051636edaef2f60e11b815260040160405180910390fd5b6001600160a01b03821661240357604051634e46966960e11b815260040160405180910390fd5b6000818152600b60205260409020546001600160a01b0384811691161461243c576040516282b42960e81b815260040160405180910390fd5b336001600160a01b0384161480159061247957506001600160a01b0383166000908152600a6020908152604080832033845290915290205460ff16155b801561249c57506000818152600960205260409020546001600160a01b03163314155b156124b9576040516282b42960e81b815260040160405180910390fd5b6124c282610dfc565b156124e057604051635ce7539760e01b815260040160405180910390fd5b61250b83837f0000000000000000000000000000000000000000000000000000000000000000612cb1565b610f3f838383612d6d565b6000818152600b60205260409020546001600160a01b031633811480159061256257506001600160a01b0381166000908152600a6020908152604080832033845290915290205460ff16155b1561257f576040516282b42960e81b815260040160405180910390fd5b60008281526009602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6125e3612784565b8051601180546001600160a01b03199081166001600160a01b039384161790915560208301516013805483169184169190911790556040830151601480548316918416919091179055606090920151601680549093169116179055565b612648612784565b6001600160a01b03811661267257604051631e4fbdf760e01b815260006004820152602401610e83565b6116dc8161297e565b60606000826001600160401b038111156126975761269761391a565b6040519080825280602002602001820160405280156126c0578160200160208202803683370190505b509050835b6126cf848661438c565b81101561187e576126e1600182612f45565b826126ec878461431f565b815181106126fc576126fc6141ab565b60209081029190910101526001016126c5565b6000601c546000141580156127255750601f5442105b156127305750600190565b50600090565b60006001600160e01b0319821663152a902d60e11b1480610d0557506301ffc9a760e01b6001600160e01b0319831614610d05565b6000600160ff1b82118015610d05575050600019141590565b6000546001600160a01b0316331461183a5760405163118cdaa760e01b8152336004820152602401610e83565b6000826127be8584612fb0565b14949350505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60036040516127f991906143de565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6022546060906000906001600160401b038111156128815761288161391a565b6040519080825280602002602001820160405280156128aa578160200160208202803683370190505b5090506000805b6022548110156128fe57602281815481106128ce576128ce6141ab565b6000918252602090912001546128f490600160a01b90046001600160601b03168361438c565b91506001016128b1565b5060005b602254811015612975578160228281548110612920576129206141ab565b60009182526020909120015461294690600160a01b90046001600160601b0316876141d7565b61295091906141ee565b838281518110612962576129626141ab565b6020908102919091010152600101612902565b50909392505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0382166129f55760405163a41e3d3f60e01b815260040160405180910390fd5b8015612a0957612a0482612feb565b612a12565b612a128261301f565b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b60006001600160a01b038316612a6657604051634e46966960e11b815260040160405180910390fd5b610fc53384846130ad565b6001600160a01b038216612a9857604051634e46966960e11b815260040160405180910390fd5b600160ff1b81600554612aab919061438c565b1115612aca5760405163303b682f60e01b815260040160405180910390fd5b610f3f600083836130ad565b606060178054612ae590614177565b80601f0160208091040260200160405190810160405280929190818152602001828054612b1190614177565b8015612b5e5780601f10612b3357610100808354040283529160200191612b5e565b820191906000526020600020905b815481529060010190602001808311612b4157829003601f168201915b5050505050905090565b60606000612b7583613423565b60010190506000816001600160401b03811115612b9457612b9461391a565b6040519080825280601f01601f191660200182016040528015612bbe576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084612bc857509392505050565b60006001600160a01b038416612c2357604051636edaef2f60e11b815260040160405180910390fd5b6001600160a01b038316612c4a57604051634e46966960e11b815260040160405180910390fd5b6001600160a01b03841660009081526008602090815260408083203384529091529020546000198114612ca657612c81838261431f565b6001600160a01b03861660009081526008602090815260408083203384529091529020555b610fc18585856130ad565b6001600160a01b038316612cdc578060056000828254612cd1919061438c565b90915550612d0a9050565b6001600160a01b03831660009081526007602052604081208054839290612d0490849061431f565b90915550505b6001600160a01b03808316600081815260076020526040908190208054850190555190918516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612d609085815260200190565b60405180910390a3505050565b6001600160a01b03831615612e7857600081815260096020908152604080832080546001600160a01b03191690556001600160a01b0386168352600c90915281208054612dbc9060019061431f565b81548110612dcc57612dcc6141ab565b90600052602060002001549050818114612e39576000828152600b602052604081205460a01c6001600160a01b0386166000908152600c602052604090208054919250839183908110612e2157612e216141ab565b600091825260209091200155612e3782826134fb565b505b6001600160a01b0384166000908152600c60205260409020805480612e6057612e60614454565b60019003818190600052602060002001600090559055505b6001600160a01b03821615612eef576000818152600b6020908152604080832080546001600160a01b0319166001600160a01b038716908101909155808452600c83529083208054600181810183558286529385200185905592529054612eea918391612ee5919061431f565b6134fb565b612eff565b6000818152600b60205260408120555b80826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000612f6983546001600160801b03808216600160801b9092048116919091031690565b8210612f885760405163580821e760e01b815260040160405180910390fd5b5081546001600160801b03908116820116600090815260018301602052604090205492915050565b600081815b845181101561187e57612fe182868381518110612fd457612fd46141ab565b6020026020010151613562565b9150600101612fb5565b6001600160a01b0381166000908152600c6020526040812054905b81811015610f3f5761301783613591565b600101613006565b6001600160a01b038116600090815260076020526040812054613063907f0000000000000000000000000000000000000000000000000000000000000000906141ee565b90506000613086836001600160a01b03166000908152600c602052604090205490565b905060005b613095828461431f565b811015611cb3576130a584613612565b60010161308b565b6001600160a01b038381166000908152600760205260408082205492851682528120549091906130de868686612cb1565b60006130e987610dfc565b905060006130f687610dfc565b90508180156131025750805b6134155781156131ab5760006131387f0000000000000000000000000000000000000000000000000000000000000000856141ee565b6001600160a01b03891660009081526007602052604090205461317c907f0000000000000000000000000000000000000000000000000000000000000000906141ee565b613186919061431f565b905060005b818110156131a45761319c89613612565b60010161318b565b5050613415565b8015613247576001600160a01b0388166000908152600760205260408120546131f5907f0000000000000000000000000000000000000000000000000000000000000000906141ee565b61321f7f0000000000000000000000000000000000000000000000000000000000000000876141ee565b613229919061431f565b905060005b818110156131a45761323f8a613591565b60010161322e565b60006132737f0000000000000000000000000000000000000000000000000000000000000000886141ee565b905060005b818110156132f6576001600160a01b038a166000908152600c60205260408120546132a59060019061431f565b6001600160a01b038c166000908152600c6020526040812080549293509091839081106132d4576132d46141ab565b906000526020600020015490506132ec8c8c83612d6d565b5050600101613278565b50807f00000000000000000000000000000000000000000000000000000000000000006133388b6001600160a01b031660009081526007602052604090205490565b61334291906141ee565b61336c7f0000000000000000000000000000000000000000000000000000000000000000886141ee565b613376919061431f565b11156133855761338589613591565b806133b07f0000000000000000000000000000000000000000000000000000000000000000866141ee565b7f00000000000000000000000000000000000000000000000000000000000000006133f08b6001600160a01b031660009081526007602052604090205490565b6133fa91906141ee565b613404919061431f565b11156134135761341388613612565b505b506001979650505050505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106134625772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef8100000000831061348e576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106134ac57662386f26fc10000830492506010015b6305f5e10083106134c4576305f5e100830492506008015b61271083106134d857612710830492506004015b606483106134ea576064830492506002015b600a8310610d055760010192915050565b6000828152600b60205260409020546001600160601b0382111561353257604051633f2cd0e360e21b815260040160405180910390fd5b6000928352600b60205260409092206001600160a01b039290921660a09190911b6001600160a01b031916019055565b600081831061357e576000828152602084905260409020610fc5565b6000838152602083905260409020610fc5565b6001600160a01b0381166135b857604051636edaef2f60e11b815260040160405180910390fd5b6001600160a01b0381166000908152600c6020526040812080546135de9060019061431f565b815481106135ee576135ee6141ab565b9060005260206000200154905061360782600083612d6d565b6115756001826136fa565b6001600160a01b03811661363957604051634e46966960e11b815260040160405180910390fd5b6000613659600154600160801b81046001600160801b0390811691161490565b61366e57613667600161376d565b90506136b8565b60066000815461367d9061446a565b909155506006546001016136a45760405163303b682f60e01b815260040160405180910390fd5b6006546136b590600160ff1b61438c565b90505b6000818152600b60205260409020546001600160a01b031680156136ef5760405163119b4fd360e11b815260040160405180910390fd5b610f3f818484612d6d565b81546001600160801b038082166000190191600160801b900481169082160361373657604051638acb5f2760e01b815260040160405180910390fd5b6001600160801b0316600081815260018401602052604090209190915581546fffffffffffffffffffffffffffffffff1916179055565b80546000906001600160801b03600160801b82048116911681036137a4576040516375e52f4f60e01b815260040160405180910390fd5b600019016001600160801b039081166000818152600185016020526040812080549190558454909216600160801b909102179092555090565b50805460008255906000526020600020908101906116dc91905b8082111561380b57600081556001016137f7565b5090565b6001600160e01b0319811681146116dc57600080fd5b60006020828403121561383757600080fd5b8135610fc58161380f565b80356001600160a01b038116811461181657600080fd5b60006020828403121561386b57600080fd5b610fc582613842565b60005b8381101561388f578181015183820152602001613877565b50506000910152565b600081518084526138b0816020860160208601613874565b601f01601f19169290920160200192915050565b602081526000610fc56020830184613898565b6000602082840312156138e957600080fd5b5035919050565b6000806040838503121561390357600080fd5b61390c83613842565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b03811182821017156139525761395261391a565b60405290565b604051601f8201601f191681016001600160401b03811182821017156139805761398061391a565b604052919050565b60006001600160401b038211156139a1576139a161391a565b5060051b60200190565b600082601f8301126139bc57600080fd5b813560206139d16139cc83613988565b613958565b8083825260208201915060208460051b8701019350868411156139f357600080fd5b602086015b84811015613a255780356001600160601b0381168114613a185760008081fd5b83529183019183016139f8565b509695505050505050565b60008060408385031215613a4357600080fd5b82356001600160401b0380821115613a5a57600080fd5b818501915085601f830112613a6e57600080fd5b81356020613a7e6139cc83613988565b82815260059290921b84018101918181019089841115613a9d57600080fd5b948201945b83861015613ac257613ab386613842565b82529482019490820190613aa2565b96505086013592505080821115613ad857600080fd5b50613ae5858286016139ab565b9150509250929050565b60008083601f840112613b0157600080fd5b5081356001600160401b03811115613b1857600080fd5b6020830191508360208260051b85010111156110af57600080fd5b600080600060408486031215613b4857600080fd5b613b5184613842565b925060208401356001600160401b03811115613b6c57600080fd5b613b7886828701613aef565b9497909650939450505050565b600080600060608486031215613b9a57600080fd5b613ba384613842565b9250613bb160208501613842565b9150604084013590509250925092565b60008060408385031215613bd457600080fd5b50508035926020909101359150565b602081528151602082015260006020830151610220806040850152613c0c610240850183613898565b91506040850151601f1980868503016060870152613c2a8483613898565b935060608701519150613c41608087018315159052565b608087015160a087015260a08701519150808685030160c0870152613c668483613898565b935060c08701519150613c8460e08701836001600160a01b03169052565b60e087015161010087810191909152870151610120808801919091528701516101408088019190915287015161016080880191909152870151610180808801919091528701516101a0808801919091528701516101c0808801919091528701516101e080880191909152870151868503820161020080890191909152909250613d0d8584613898565b970151959092019490945250929392505050565b60006001600160401b03831115613d3a57613d3a61391a565b613d4d601f8401601f1916602001613958565b9050828152838383011115613d6157600080fd5b828260208301376000602084830101529392505050565b60006020808385031215613d8b57600080fd5b82356001600160401b0380821115613da257600080fd5b8185019150601f86601f840112613db857600080fd5b613dc0613930565b806040850189811115613dd257600080fd5b855b81811015613e1957803586811115613dec5760008081fd5b87018581018c13613dfd5760008081fd5b613e0b8c82358b8401613d21565b855250928701928701613dd4565b50909998505050505050505050565b6020808252825182820181905260009190848201906040850190845b81811015613e6057835183529284019291840191600101613e44565b50909695505050505050565b6000610100808385031215613e8057600080fd5b83601f840112613e8f57600080fd5b6040518181018181106001600160401b0382111715613eb057613eb061391a565b604052908301908085831115613ec557600080fd5b845b83811015613edf578035825260209182019101613ec7565b509095945050505050565b8035801515811461181657600080fd5b600060208284031215613f0c57600080fd5b610fc582613eea565b60008060408385031215613f2857600080fd5b613f3183613842565b9150613f3f60208401613eea565b90509250929050565b60008060008060808587031215613f5e57600080fd5b613f6785613842565b9350613f7560208601613842565b92506040850135915060608501356001600160401b03811115613f9757600080fd5b8501601f81018713613fa857600080fd5b613fb787823560208401613d21565b91505092959194509250565b600080600060408486031215613fd857600080fd5b8335925060208401356001600160401b03811115613b6c57600080fd5b600080600080600080600060e0888a03121561401057600080fd5b61401988613842565b965061402760208901613842565b95506040880135945060608801359350608088013560ff8116811461404b57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b602080825282518282018190526000919060409081850190868401855b828110156140bc57815180516001600160a01b031685528601516001600160601b0316868501529284019290850190600101614085565b5091979650505050505050565b600080604083850312156140dc57600080fd5b6140e583613842565b9150613f3f60208401613842565b60006080828403121561410557600080fd5b82601f83011261411457600080fd5b604051608081018181106001600160401b03821117156141365761413661391a565b60405280608084018581111561414b57600080fd5b845b8181101561416c5761415e81613842565b83526020928301920161414d565b509195945050505050565b600181811c9082168061418b57607f821691505b6020821081036118f157634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610d0557610d056141c1565b60008261420b57634e487b7160e01b600052601260045260246000fd5b500490565b601f821115610f3f576000816000526020600020601f850160051c810160208610156142395750805b601f850160051c820191505b8181101561425857828155600101614245565b505050505050565b81516001600160401b038111156142795761427961391a565b61428d816142878454614177565b84614210565b602080601f8311600181146142c257600084156142aa5750858301515b600019600386901b1c1916600185901b178555614258565b600085815260208120601f198616915b828110156142f1578886015182559484019460019091019084016142d2565b508582101561430f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b81810381811115610d0557610d056141c1565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061436590830184613898565b9695505050505050565b60006020828403121561438157600080fd5b8151610fc58161380f565b80820180821115610d0557610d056141c1565b600083516143b1818460208801613874565b8351908301906143c5818360208801613874565b64173539b7b760d91b9101908152600501949350505050565b60008083546143ec81614177565b60018281168015614404576001811461441957614448565b60ff1984168752821515830287019450614448565b8760005260208060002060005b8581101561443f5781548a820152908401908201614426565b50505082870194505b50929695505050505050565b634e487b7160e01b600052603160045260246000fd5b60006001820161447c5761447c6141c1565b506001019056fea26469706673582212205eb88c7efe627d4ca1c091cd470563e7c1a9e57a943f5fbc5b6bb4187db3466364736f6c63430008190033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef0000000000000000000000000b04465eca14378f255457e701cab8e53d67d8ba000000000000000000000000fbbc84bd88bc0ca3d1e0a408df92b47c10c44eb1000000000000000000000000000000000000000000000000000000000000dead000000000000000000000000919e44e574e33ed0c3616276a8dd0dadd7df618d000000000000000000000000919e44e574e33ed0c3616276a8dd0dadd7df618d00000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000018d75b8423f30000000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000664e32a000000000000000000000000000000000000000000000000000000000664e40b00000000000000000000000000000000000000000000000001bc16d674ec80000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000664e40b000000000000000000000000000000000000000000000000000000000682f7430000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d65377645394772585939427238586b48424568447a6d394e5139787a714d7538544e645a7333626a567537522f00000000000000000000000000000000000000000000000000000000000000000000000000000000004468747470733a2f2f697066732e696f2f697066732f516d63756d56426f775a72764a6479535a5a424d61316b74735943336e5763657852367431634c65364d6e5968592f00000000000000000000000000000000000000000000000000000000