[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "NewOwnerIsZeroAddress", "type": "error" }, { "inputs": [], "name": "NoHandoverRequest", "type": "error" }, { "inputs": [], "name": "Unauthorized", "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": false, "internalType": "uint8", "name": "version", "type": "uint8" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "allowed", "type": "bool" } ], "name": "OperatorAllowed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "blocked", "type": "bool" } ], "name": "OperatorBlocked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "pendingOwner", "type": "address" } ], "name": "OwnershipHandoverCanceled", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "pendingOwner", "type": "address" } ], "name": "OwnershipHandoverRequested", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "oldOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "roles", "type": "uint256" } ], "name": "RolesUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "ADMIN_ROLE", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "BURNER_ROLE", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MANAGER_ROLE", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint64[]", "name": "quantities", "type": "uint64[]" }, { "internalType": "address[]", "name": "recipients", "type": "address[]" } ], "name": "batchAirdrop", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "cancelOwnershipHandover", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pendingOwner", "type": "address" } ], "name": "completeOwnershipHandover", "outputs": [], "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" }, { "internalType": "uint256", "name": "roles", "type": "uint256" } ], "name": "grantRoles", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "uint256", "name": "roles", "type": "uint256" } ], "name": "hasAllRoles", "outputs": [ { "internalType": "bool", "name": "result", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "uint256", "name": "roles", "type": "uint256" } ], "name": "hasAnyRole", "outputs": [ { "internalType": "bool", "name": "result", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner_", "type": "address" }, { "internalType": "string", "name": "name_", "type": "string" }, { "internalType": "string", "name": "symbol_", "type": "string" }, { "internalType": "address", "name": "treasury_", "type": "address" }, { "internalType": "address", "name": "royalty_", "type": "address" }, { "internalType": "uint96", "name": "royaltyFee_", "type": "uint96" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isAllowedOperator", "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": "isOperator", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isBlockedOperator", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxPerMint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxPerWallet", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint64", "name": "quantity", "type": "uint64" } ], "name": "mint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint64", "name": "quantity", "type": "uint64" } ], "name": "mintTo", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "roles", "type": "uint256" } ], "name": "ordinalsFromRoles", "outputs": [ { "internalType": "uint8[]", "name": "ordinals", "type": "uint8[]" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "result", "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": "address", "name": "pendingOwner", "type": "address" } ], "name": "ownershipHandoverExpiresAt", "outputs": [ { "internalType": "uint256", "name": "result", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "ownershipHandoverValidFor", "outputs": [ { "internalType": "uint64", "name": "", "type": "uint64" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "presaleActive", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint64", "name": "quantity", "type": "uint64" }, { "internalType": "uint256", "name": "allowed", "type": "uint256" }, { "internalType": "bytes32[]", "name": "proof", "type": "bytes32[]" } ], "name": "presaleMint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint64", "name": "quantity", "type": "uint64" }, { "internalType": "uint256", "name": "allowed", "type": "uint256" }, { "internalType": "bytes32[]", "name": "proof", "type": "bytes32[]" } ], "name": "presaleMintTo", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "price", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "roles", "type": "uint256" } ], "name": "renounceRoles", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "requestOwnershipHandover", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "uint256", "name": "roles", "type": "uint256" } ], "name": "revokeRoles", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint8[]", "name": "ordinals", "type": "uint8[]" } ], "name": "rolesFromOrdinals", "outputs": [ { "internalType": "uint256", "name": "roles", "type": "uint256" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "rolesOf", "outputs": [ { "internalType": "uint256", "name": "roles", "type": "uint256" } ], "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": "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": [], "name": "saleActive", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "allowed", "type": "bool" } ], "name": "setAllowedOperator", "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": "newBaseURI", "type": "string" } ], "name": "setBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "blocked", "type": "bool" } ], "name": "setBlockedOperator", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "name": "setDefaultRoyalty", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "newRoot", "type": "bytes32" } ], "name": "setMerkleRoot", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "name": "setTokenRoyalty", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newTreasury", "type": "address" } ], "name": "setTreasury", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newMaxAmount", "type": "uint256" }, { "internalType": "uint256", "name": "newMaxPerMint", "type": "uint256" }, { "internalType": "uint256", "name": "newMaxPerWallet", "type": "uint256" }, { "internalType": "uint256", "name": "newPrice", "type": "uint256" }, { "internalType": "bool", "name": "presale", "type": "bool" } ], "name": "startSale", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "stopSale", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "tokenByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "tokenOfOwnerByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalRevenue", "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": [], "name": "treasury", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
6080604052610107805461ffff191690553480156200001d57600080fd5b50620000286200002e565b620000f0565b600054610100900460ff16156200009b5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620000ee576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6141bd80620001006000396000f3fe6080604052600436106103b85760003560e01c806361d027b3116101f2578063b88d4fde1161010d578063e985e9c5116100a0578063f2fde38b1161006f578063f2fde38b14610b2a578063fb9d09c814610b4a578063fd51fae814610b5d578063fee81cf414610b7057600080fd5b8063e985e9c514610ab5578063ec87621c14610ad5578063f04e283e14610aea578063f0f4426014610b0a57600080fd5b8063d53ab501116100dc578063d53ab50114610a29578063d7533f0214610a49578063e18bc08a14610a67578063e36b0b3714610aa057600080fd5b8063b88d4fde146109b4578063bf2d9e0b146109d4578063bfa9aadc146109e9578063c87b56dd14610a0957600080fd5b80637cb647591161018557806393d756aa1161015457806393d756aa1461095657806395d89b4114610969578063a035b1fe1461097e578063a22cb4651461099457600080fd5b80637cb64759146108c457806388924a66146108e45780638afc7cb31461091d5780638da5cb5b1461093d57600080fd5b8063715018a6116101c1578063715018a61461084d5780637359e41f1461086257806375b238fc1461088f578063789e3a55146108a457600080fd5b806361d027b3146107d15780636352211e146107ef57806368428a1b1461080f57806370a082311461082d57600080fd5b80632de94807116102e25780634f6ccce71161027557806354d1f13d1161024457806354d1f13d1461076657806355f804b31461077b5780635944c7531461079b5780635f48f393146107bb57600080fd5b80634f6ccce7146106e0578063507e094f14610700578063514e62fc1461071657806353135ca01461074d57600080fd5b806342842e0e116102b157806342842e0e1461066a57806342966c681461068a578063453c2310146106aa5780634a4ee7b1146106c057600080fd5b80632de94807146105f15780632f745c5914610622578063386bacdc146106425780633ccfd60b1461065557600080fd5b8063183a4f6e1161035a57806323b872dd1161032957806323b872dd146105685780632569296214610588578063282c51f31461059d5780632a55205a146105b257600080fd5b8063183a4f6e146104d15780631bace9a8146104f15780631c10893f146105115780631cd64df41461053157600080fd5b8063081812fc11610396578063081812fc14610436578063095ea7b31461046e57806313a661ed1461048e57806318160ddd146104bc57600080fd5b806301ffc9a7146103bd57806304634d8d146103f257806306fdde0314610414575b600080fd5b3480156103c957600080fd5b506103dd6103d8366004613548565b610ba1565b60405190151581526020015b60405180910390f35b3480156103fe57600080fd5b5061041261040d366004613598565b610bdf565b005b34801561042057600080fd5b50610429610c24565b6040516103e99190613623565b34801561044257600080fd5b50610456610451366004613636565b610cb6565b6040516001600160a01b0390911681526020016103e9565b34801561047a57600080fd5b5061041261048936600461364f565b610cdd565b34801561049a57600080fd5b506104ae6104a93660046136bf565b610df2565b6040519081526020016103e9565b3480156104c857600080fd5b5060d0546104ae565b3480156104dd57600080fd5b506104126104ec366004613636565b610e25565b3480156104fd57600080fd5b5061041261050c366004613787565b610e32565b34801561051d57600080fd5b5061041261052c36600461364f565b610ec9565b34801561053d57600080fd5b506103dd61054c36600461364f565b60609190911b638b78c6d8176000908152602090205481161490565b34801561057457600080fd5b506104126105833660046137b1565b610ef2565b34801561059457600080fd5b50610412610f23565b3480156105a957600080fd5b506104ae600481565b3480156105be57600080fd5b506105d26105cd3660046137ed565b610f73565b604080516001600160a01b0390931683526020830191909152016103e9565b3480156105fd57600080fd5b506104ae61060c36600461380f565b60601b638b78c6d8176000908152602090205490565b34801561062e57600080fd5b506104ae61063d36600461364f565b611021565b610412610650366004613885565b6110b7565b34801561066157600080fd5b50610412611334565b34801561067657600080fd5b506104126106853660046137b1565b611469565b34801561069657600080fd5b506104126106a5366004613636565b611484565b3480156106b657600080fd5b50610105546104ae565b3480156106cc57600080fd5b506104126106db36600461364f565b6114f2565b3480156106ec57600080fd5b506104ae6106fb366004613636565b611517565b34801561070c57600080fd5b50610104546104ae565b34801561072257600080fd5b506103dd61073136600461364f565b60609190911b638b78c6d8176000908152602090205416151590565b34801561075957600080fd5b506101075460ff166103dd565b34801561077257600080fd5b506104126115aa565b34801561078757600080fd5b50610412610796366004613955565b6115e7565b3480156107a757600080fd5b506104126107b6366004613989565b61162a565b3480156107c757600080fd5b50610103546104ae565b3480156107dd57600080fd5b506098546001600160a01b0316610456565b3480156107fb57600080fd5b5061045661080a366004613636565b611671565b34801561081b57600080fd5b5061010754610100900460ff166103dd565b34801561083957600080fd5b506104ae61084836600461380f565b6116d1565b34801561085957600080fd5b50610412611757565b34801561086e57600080fd5b5061088261087d366004613636565b611793565b6040516103e991906139c5565b34801561089b57600080fd5b506104ae600181565b3480156108b057600080fd5b506104126108bf366004613a0c565b6117db565b3480156108d057600080fd5b506104126108df366004613636565b611843565b3480156108f057600080fd5b506103dd6108ff36600461380f565b6001600160a01b03166000908152609b602052604090205460ff1690565b34801561092957600080fd5b50610412610938366004613787565b611880565b34801561094957600080fd5b50638b78c6d81954610456565b610412610964366004613a55565b61190e565b34801561097557600080fd5b50610429611a97565b34801561098a57600080fd5b50610106546104ae565b3480156109a057600080fd5b506104126109af366004613787565b611aa6565b3480156109c057600080fd5b506104126109cf366004613a7f565b611b2e565b3480156109e057600080fd5b506099546104ae565b3480156109f557600080fd5b50610412610a04366004613afa565b611b60565b348015610a1557600080fd5b50610429610a24366004613636565b611c8d565b348015610a3557600080fd5b50610412610a44366004613b9e565b611cf4565b348015610a5557600080fd5b506040516202a30081526020016103e9565b348015610a7357600080fd5b506103dd610a8236600461380f565b6001600160a01b03166000908152609a602052604090205460ff1690565b348015610aac57600080fd5b50610412611dd7565b348015610ac157600080fd5b506103dd610ad0366004613bfd565b611e1c565b348015610ae157600080fd5b506104ae600281565b348015610af657600080fd5b50610412610b0536600461380f565b611e9c565b348015610b1657600080fd5b50610412610b2536600461380f565b611f0c565b348015610b3657600080fd5b50610412610b4536600461380f565b611f65565b610412610b58366004613c27565b611fba565b610412610b6b366004613c42565b61212e565b348015610b7c57600080fd5b506104ae610b8b36600461380f565b60601b63389a75e1176000908152602090205490565b6000610bac8261237f565b80610bbb5750610bbb826123bf565b80610bca5750610bca826123e4565b80610bd95750610bd9826123bf565b92915050565b6001638b78c6d83360601b176000528060206000205416610c1557638b78c6d819543314610c15576382b429006000526004601cfd5b610c1f8383612409565b505050565b6060609c8054610c3390613cb0565b80601f0160208091040260200160405190810160405280929190818152602001828054610c5f90613cb0565b8015610cac5780601f10610c8157610100808354040283529160200191610cac565b820191906000526020600020905b815481529060010190602001808311610c8f57829003601f168201915b5050505050905090565b6000610cc1826124c3565b50600090815260a060205260409020546001600160a01b031690565b6000610ce882611671565b9050806001600160a01b0316836001600160a01b031603610d5a5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b0382161480610d765750610d768133611e1c565b610de85760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c00006064820152608401610d51565b610c1f8383612522565b600060208201825160051b81015b808214610e1e57600160ff8351161b83179250602082019150610e00565b5050919050565b610e2f3382612590565b50565b6002638b78c6d83360601b176000528060206000205416610e6857638b78c6d819543314610e68576382b429006000526004601cfd5b6001600160a01b0383166000818152609b6020908152604091829020805460ff191686151590811790915591519182527fee6f72776cc4e6e5957f9692e86b52e270b1578d343bf9f46351ffab538487ac91015b60405180910390a2505050565b638b78c6d819543314610ee4576382b429006000526004601cfd5b610eee82826125e1565b5050565b610efc338261262d565b610f185760405162461bcd60e51b8152600401610d5190613cea565b610c1f83838361268c565b60006202a3006001600160401b03164201905063389a75e13360601b1760005280602060002055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d600080a250565b60008281526066602090815260408083208151808301909252546001600160a01b038116808352600160a01b9091046001600160601b0316928201929092528291610fe85750604080518082019091526065546001600160a01b0381168252600160a01b90046001600160601b031660208201525b602081015160009061271090611007906001600160601b031687613d4e565b6110119190613d83565b91519350909150505b9250929050565b600061102c836116d1565b821061108e5760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610d51565b506001600160a01b0391909116600090815260ce60209081526040808320938352929052205490565b836000816001600160401b0316116110e15760405162461bcd60e51b8152600401610d5190613d97565b600061010354116110f3576001611116565b61010354611113826001600160401b031661110d60d05490565b90612833565b11155b6111325760405162461bcd60e51b8152600401610d5190613dbe565b61010454816001600160401b0316111561115e5760405162461bcd60e51b8152600401610d5190613deb565b60006111936001600160401b03871661010083335b6001600160a01b0316815260208101919091526040016000205490612833565b6101075490915060ff166111de5760405162461bcd60e51b815260206004820152601260248201527150726573616c65206e6f742061637469766560701b6044820152606401610d51565b610101546000036112235760405162461bcd60e51b815260206004820152600f60248201526e141c995cd85b19481b9bdd081cd95d608a1b6044820152606401610d51565b610105548111156112465760405162461bcd60e51b8152600401610d5190613e1a565b848111156112665760405162461bcd60e51b8152600401610d5190613e1a565b6112e484848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050610101546040516bffffffffffffffffffffffff193360601b166020820152603481018b905290925060540190505b6040516020818303038152906040528051906020012061283f565b6113225760405162461bcd60e51b815260206004820152600f60248201526e141c995cd85b19481a5b9d985b1a59608a1b6044820152606401610d51565b61132c8633612855565b505050505050565b600047116113705760405162461bcd60e51b8152602060048201526009602482015268302062616c616e636560b81b6044820152606401610d51565b609754604051639af608c960e01b81523060048201526001600160a01b039091169047906000908390639af608c990602401602060405180830381865afa1580156113bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e39190613e51565b60405163b9bff4bb60e01b8152600481018290529091506001600160a01b0384169063b9bff4bb90602401600060405180830381600087803b15801561142857600080fd5b505af115801561143c573d6000803e3d6000fd5b5050505061144a8382612968565b609854610c1f906001600160a01b03166114648484612a81565b612968565b610c1f83838360405180602001604052806000815250611b2e565b6004638b78c6d83360601b1760005280602060002054166114ad576382b429006000526004601cfd5b333b6114e95760405162461bcd60e51b815260206004820152600b60248201526a139bdd08105b1b1bddd95960aa1b6044820152606401610d51565b610eee82612a8d565b638b78c6d81954331461150d576382b429006000526004601cfd5b610eee8282612590565b600061152260d05490565b82106115855760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610d51565b60d0828154811061159857611598613e6a565b90600052602060002001549050919050565b63389a75e13360601b176000526000602060002055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c92600080a2565b6002638b78c6d83360601b17600052806020600020541661161d57638b78c6d81954331461161d576382b429006000526004601cfd5b610102610c1f8382613ec6565b6001638b78c6d83360601b17600052806020600020541661166057638b78c6d819543314611660576382b429006000526004601cfd5b61166b848484612b34565b50505050565b6000818152609e60205260408120546001600160a01b031680610bd95760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610d51565b60006001600160a01b03821661173b5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610d51565b506001600160a01b03166000908152609f602052604090205490565b638b78c6d819543314611772576382b429006000526004601cfd5b600033600080516020614168833981519152600080a36000638b78c6d81955565b606060206040510160005b8082526001841660051b820191508360011c935083156117c05760010161179e565b5060405191508060405260208201810360051c825250919050565b6002638b78c6d83360601b17600052806020600020541661181157638b78c6d819543314611811576382b429006000526004601cfd5b50610107805491151561ffff199092169190911761010017905561010393909355610104919091556101055561010655565b6002638b78c6d83360601b17600052806020600020541661187957638b78c6d819543314611879576382b429006000526004601cfd5b5061010155565b6002638b78c6d83360601b1760005280602060002054166118b657638b78c6d8195433146118b6576382b429006000526004601cfd5b6001600160a01b0383166000818152609a6020908152604091829020805460ff191686151590811790915591519182527f5d9603027afffb9569796fb6d9fc189bbf68724bd0430924681595302758b4f09101610ebc565b806000816001600160401b0316116119385760405162461bcd60e51b8152600401610d5190613d97565b6000610103541161194a576001611967565b61010354611964826001600160401b031661110d60d05490565b11155b6119835760405162461bcd60e51b8152600401610d5190613dbe565b61010454816001600160401b031611156119af5760405162461bcd60e51b8152600401610d5190613deb565b6101075460ff16156119f45760405162461bcd60e51b815260206004820152600e60248201526d50726573616c652061637469766560901b6044820152606401610d51565b61010754610100900460ff16611a3e5760405162461bcd60e51b815260206004820152600f60248201526e53616c65206e6f742061637469766560881b6044820152606401610d51565b610105546001600160a01b03841660009081526101006020526040902054611a6f906001600160401b038516612833565b1115611a8d5760405162461bcd60e51b8152600401610d5190613e1a565b610c1f8284612855565b6060609d8054610c3390613cb0565b6001600160a01b0382166000908152609b602052604090205460ff1615611b245760405162461bcd60e51b815260206004820152602c60248201527f4f70657261746f7220686173206265656e20626c6f636b656420627920636f6e60448201526b3a3930b1ba1037bbb732b91760a11b6064820152608401610d51565b610eee8282612bff565b611b38338361262d565b611b545760405162461bcd60e51b8152600401610d5190613cea565b61166b84848484612c0a565b600054610100900460ff1615808015611b805750600054600160ff909116105b80611b9a5750303b158015611b9a575060005460ff166001145b611bfd5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610d51565b6000805460ff191660011790558015611c20576000805461ff0019166101001790555b611c2a8686612c3d565b611c32612c6e565b611c3e87858585612c97565b8015611c84576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b6060611c98826124c3565b6000611ca2612d02565b90506000815111611cc25760405180602001604052806000815250611ced565b80611ccc84612d12565b604051602001611cdd929190613f85565b6040516020818303038152906040525b9392505050565b6002638b78c6d83360601b176000528060206000205416611d2a57638b78c6d819543314611d2a576382b429006000526004601cfd5b81848114611d6e5760405162461bcd60e51b8152602060048201526011602482015270496e76616c696420417267756d656e747360781b6044820152606401610d51565b60005b81811015611c8457611dcf878783818110611d8e57611d8e613e6a565b9050602002016020810190611da39190613c27565b868684818110611db557611db5613e6a565b9050602002016020810190611dca919061380f565b612e12565b600101611d71565b6002638b78c6d83360601b176000528060206000205416611e0d57638b78c6d819543314611e0d576382b429006000526004601cfd5b50610107805461ffff19169055565b6001600160a01b0381166000908152609a602052604081205460ff1615611e4557506001610bd9565b6001600160a01b0382166000908152609b602052604090205460ff1615611e6e57506000610bd9565b6001600160a01b03808416600090815260a1602090815260408083209386168352929052205460ff16611ced565b638b78c6d819543314611eb7576382b429006000526004601cfd5b8060601b60601c905063389a75e18160601b1760005260206000208054421115611ee957636f5e88186000526004601cfd5b60008155508033600080516020614168833981519152600080a3638b78c6d81955565b6001638b78c6d83360601b176000528060206000205416611f4257638b78c6d819543314611f42576382b429006000526004601cfd5b50609880546001600160a01b0319166001600160a01b0392909216919091179055565b638b78c6d819543314611f80576382b429006000526004601cfd5b6001600160a01b031680611f9c57637448fbae6000526004601cfd5b8033600080516020614168833981519152600080a3638b78c6d81955565b806000816001600160401b031611611fe45760405162461bcd60e51b8152600401610d5190613d97565b60006101035411611ff6576001612013565b61010354612010826001600160401b031661110d60d05490565b11155b61202f5760405162461bcd60e51b8152600401610d5190613dbe565b61010454816001600160401b0316111561205b5760405162461bcd60e51b8152600401610d5190613deb565b6101075460ff16156120a05760405162461bcd60e51b815260206004820152600e60248201526d50726573616c652061637469766560901b6044820152606401610d51565b61010754610100900460ff166120ea5760405162461bcd60e51b815260206004820152600f60248201526e53616c65206e6f742061637469766560881b6044820152606401610d51565b610105546121066001600160401b038416610100600033611173565b11156121245760405162461bcd60e51b8152600401610d5190613e1a565b610eee8233612855565b836000816001600160401b0316116121585760405162461bcd60e51b8152600401610d5190613d97565b6000610103541161216a576001612187565b61010354612184826001600160401b031661110d60d05490565b11155b6121a35760405162461bcd60e51b8152600401610d5190613dbe565b61010454816001600160401b031611156121cf5760405162461bcd60e51b8152600401610d5190613deb565b6001600160a01b038616600090815261010060205260408120546121fc906001600160401b038816612833565b6101075490915060ff166122475760405162461bcd60e51b815260206004820152601260248201527150726573616c65206e6f742061637469766560701b6044820152606401610d51565b6101015460000361228c5760405162461bcd60e51b815260206004820152600f60248201526e141c995cd85b19481b9bdd081cd95d608a1b6044820152606401610d51565b610105548111156122af5760405162461bcd60e51b8152600401610d5190613e1a565b848111156122cf5760405162461bcd60e51b8152600401610d5190613e1a565b61233784848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050610101546040516bffffffffffffffffffffffff1960608e901b166020820152603481018b905290925060540190506112c9565b6123755760405162461bcd60e51b815260206004820152600f60248201526e141c995cd85b19481a5b9d985b1a59608a1b6044820152606401610d51565b611c848688612855565b60006001600160e01b031982166380ac58cd60e01b14806123b057506001600160e01b03198216635b5e139f60e01b145b80610bd95750610bd9826123e4565b60006001600160e01b0319821663780e9d6360e01b1480610bd95750610bd98261237f565b60006001600160e01b03198216632fea6ab760e21b1480610bd95750610bd982612e4e565b6127106001600160601b03821611156124345760405162461bcd60e51b8152600401610d5190613fb4565b6001600160a01b03821661248a5760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c6964207265636569766572000000000000006044820152606401610d51565b604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217606555565b6000818152609e60205260409020546001600160a01b0316610e2f5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610d51565b600081815260a06020526040902080546001600160a01b0319166001600160a01b038416908117909155819061255782611671565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b638b78c6d88260601b176000526020600020805482811681189050808255808460601b60601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe26600080a350505050565b638b78c6d88260601b17600052602060002081815417808255808460601b60601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe26600080a350505050565b60008061263983611671565b9050806001600160a01b0316846001600160a01b0316148061266057506126608185611e1c565b806126845750836001600160a01b031661267984610cb6565b6001600160a01b0316145b949350505050565b826001600160a01b031661269f82611671565b6001600160a01b0316146127035760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610d51565b6001600160a01b0382166127655760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610d51565b612770838383612e83565b61277b600082612522565b6001600160a01b0383166000908152609f602052604081208054600192906127a4908490613ffe565b90915550506001600160a01b0382166000908152609f602052604081208054600192906127d2908490614015565b90915550506000818152609e602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6000611ced8284614015565b60008261284c8584612e8e565b14949350505050565b61010654349061286e906001600160401b038516612edb565b11156128ae5760405162461bcd60e51b815260206004820152600f60248201526e15985b1d59481a5b98dbdc9c9958dd608a1b6044820152606401610d51565b6099546128bb9034612833565b6099556001600160a01b038116600090815261010060205260409020546128eb906001600160401b038416612833565b6001600160a01b03828116600090815261010060205260409081902092909255609754915163107e9cf160e01b815234600482015291169063107e9cf190602401600060405180830381600087803b15801561294657600080fd5b505af115801561295a573d6000803e3d6000fd5b50505050610eee8282612e12565b804710156129b85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610d51565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612a05576040519150601f19603f3d011682016040523d82523d6000602084013e612a0a565b606091505b5050905080610c1f5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610d51565b6000611ced8284613ffe565b6000612a9882611671565b9050612aa681600084612e83565b612ab1600083612522565b6001600160a01b0381166000908152609f60205260408120805460019290612ada908490613ffe565b90915550506000828152609e602052604080822080546001600160a01b0319169055518391906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6127106001600160601b0382161115612b5f5760405162461bcd60e51b8152600401610d5190613fb4565b6001600160a01b038216612bb55760405162461bcd60e51b815260206004820152601b60248201527f455243323938313a20496e76616c696420706172616d657465727300000000006044820152606401610d51565b6040805180820182526001600160a01b0393841681526001600160601b0392831660208083019182526000968752606690529190942093519051909116600160a01b029116179055565b610eee338383612ee7565b612c1584848461268c565b612c2184848484612fb5565b61166b5760405162461bcd60e51b8152600401610d519061402d565b600054610100900460ff16612c645760405162461bcd60e51b8152600401610d519061407f565b610eee82826130b6565b600054610100900460ff16612c955760405162461bcd60e51b8152600401610d519061407f565b565b600054610100900460ff16612cbe5760405162461bcd60e51b8152600401610d519061407f565b612cc7846130f6565b612ccf612c6e565b60978054336001600160a01b031991821617909155609880549091166001600160a01b03851617905561166b8282612409565b60606101028054610c3390613cb0565b606081600003612d395750506040805180820190915260018152600360fc1b602082015290565b8160005b8115612d635780612d4d816140ca565b9150612d5c9050600a83613d83565b9150612d3d565b6000816001600160401b03811115612d7d57612d7d613679565b6040519080825280601f01601f191660200182016040528015612da7576020820181803683370190505b5090505b841561268457612dbc600183613ffe565b9150612dc9600a866140e3565b612dd4906030614015565b60f81b818381518110612de957612de9613e6a565b60200101906001600160f81b031916908160001a905350612e0b600a86613d83565b9450612dab565b60005b826001600160401b0316816001600160401b03161015610c1f57612e4682612e41600161110d60d05490565b613120565b600101612e15565b60006001600160e01b0319821663152a902d60e11b1480610bd957506301ffc9a760e01b6001600160e01b0319831614610bd9565b610c1f83838361313a565b600081815b8451811015612ed357612ebf82868381518110612eb257612eb2613e6a565b60200260200101516131f2565b915080612ecb816140ca565b915050612e93565b509392505050565b6000611ced8284613d4e565b816001600160a01b0316836001600160a01b031603612f485760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610d51565b6001600160a01b03838116600081815260a16020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b60006001600160a01b0384163b156130ab57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612ff99033908990889088906004016140f7565b6020604051808303816000875af1925050508015613034575060408051601f3d908101601f1916820190925261303191810190614134565b60015b613091573d808015613062576040519150601f19603f3d011682016040523d82523d6000602084013e613067565b606091505b5080516000036130895760405162461bcd60e51b8152600401610d519061402d565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050612684565b506001949350505050565b600054610100900460ff166130dd5760405162461bcd60e51b8152600401610d519061407f565b609c6130e98382613ec6565b50609d610c1f8282613ec6565b6001600160a01b0316638b78c6d8198190558060006000805160206141688339815191528180a350565b610eee828260405180602001604052806000815250613221565b6001600160a01b038316613195576131908160d08054600083815260d160205260408120829055600182018355919091527fe89d44c8fd6a9bac8af33ce47f56337617d449bf7ff3956b618c646de829cbcb0155565b6131b8565b816001600160a01b0316836001600160a01b0316146131b8576131b88382613254565b6001600160a01b0382166131cf57610c1f816132f1565b826001600160a01b0316826001600160a01b031614610c1f57610c1f82826133a0565b600081831061320e576000828152602084905260409020611ced565b6000838152602083905260409020611ced565b61322b83836133e4565b6132386000848484612fb5565b610c1f5760405162461bcd60e51b8152600401610d519061402d565b60006001613261846116d1565b61326b9190613ffe565b600083815260cf60205260409020549091508082146132be576001600160a01b038416600090815260ce60209081526040808320858452825280832054848452818420819055835260cf90915290208190555b50600091825260cf602090815260408084208490556001600160a01b03909416835260ce81528383209183525290812055565b60d05460009061330390600190613ffe565b600083815260d1602052604081205460d0805493945090928490811061332b5761332b613e6a565b906000526020600020015490508060d0838154811061334c5761334c613e6a565b600091825260208083209091019290925582815260d1909152604080822084905585825281205560d080548061338457613384614151565b6001900381819060005260206000200160009055905550505050565b60006133ab836116d1565b6001600160a01b03909316600090815260ce60209081526040808320868452825280832085905593825260cf9052919091209190915550565b6001600160a01b03821661343a5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610d51565b6000818152609e60205260409020546001600160a01b03161561349f5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610d51565b6134ab60008383612e83565b6001600160a01b0382166000908152609f602052604081208054600192906134d4908490614015565b90915550506000818152609e602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6001600160e01b031981168114610e2f57600080fd5b60006020828403121561355a57600080fd5b8135611ced81613532565b80356001600160a01b038116811461357c57600080fd5b919050565b80356001600160601b038116811461357c57600080fd5b600080604083850312156135ab57600080fd5b6135b483613565565b91506135c260208401613581565b90509250929050565b60005b838110156135e65781810151838201526020016135ce565b8381111561166b5750506000910152565b6000815180845261360f8160208601602086016135cb565b601f01601f19169290920160200192915050565b602081526000611ced60208301846135f7565b60006020828403121561364857600080fd5b5035919050565b6000806040838503121561366257600080fd5b61366b83613565565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156136b7576136b7613679565b604052919050565b600060208083850312156136d257600080fd5b82356001600160401b03808211156136e957600080fd5b818501915085601f8301126136fd57600080fd5b81358181111561370f5761370f613679565b8060051b915061372084830161368f565b818152918301840191848101908884111561373a57600080fd5b938501935b8385101561376b578435925060ff8316831461375b5760008081fd5b828252938501939085019061373f565b98975050505050505050565b8035801515811461357c57600080fd5b6000806040838503121561379a57600080fd5b6137a383613565565b91506135c260208401613777565b6000806000606084860312156137c657600080fd5b6137cf84613565565b92506137dd60208501613565565b9150604084013590509250925092565b6000806040838503121561380057600080fd5b50508035926020909101359150565b60006020828403121561382157600080fd5b611ced82613565565b80356001600160401b038116811461357c57600080fd5b60008083601f84011261385357600080fd5b5081356001600160401b0381111561386a57600080fd5b6020830191508360208260051b850101111561101a57600080fd5b6000806000806060858703121561389b57600080fd5b6138a48561382a565b93506020850135925060408501356001600160401b038111156138c657600080fd5b6138d287828801613841565b95989497509550505050565b60006001600160401b038311156138f7576138f7613679565b61390a601f8401601f191660200161368f565b905082815283838301111561391e57600080fd5b828260208301376000602084830101529392505050565b600082601f83011261394657600080fd5b611ced838335602085016138de565b60006020828403121561396757600080fd5b81356001600160401b0381111561397d57600080fd5b61268484828501613935565b60008060006060848603121561399e57600080fd5b833592506139ae60208501613565565b91506139bc60408501613581565b90509250925092565b6020808252825182820181905260009190848201906040850190845b81811015613a0057835160ff16835292840192918401916001016139e1565b50909695505050505050565b600080600080600060a08688031215613a2457600080fd5b85359450602086013593506040860135925060608601359150613a4960808701613777565b90509295509295909350565b60008060408385031215613a6857600080fd5b613a7183613565565b91506135c26020840161382a565b60008060008060808587031215613a9557600080fd5b613a9e85613565565b9350613aac60208601613565565b92506040850135915060608501356001600160401b03811115613ace57600080fd5b8501601f81018713613adf57600080fd5b613aee878235602084016138de565b91505092959194509250565b60008060008060008060c08789031215613b1357600080fd5b613b1c87613565565b955060208701356001600160401b0380821115613b3857600080fd5b613b448a838b01613935565b96506040890135915080821115613b5a57600080fd5b50613b6789828a01613935565b945050613b7660608801613565565b9250613b8460808801613565565b9150613b9260a08801613581565b90509295509295509295565b60008060008060408587031215613bb457600080fd5b84356001600160401b0380821115613bcb57600080fd5b613bd788838901613841565b90965094506020870135915080821115613bf057600080fd5b506138d287828801613841565b60008060408385031215613c1057600080fd5b613c1983613565565b91506135c260208401613565565b600060208284031215613c3957600080fd5b611ced8261382a565b600080600080600060808688031215613c5a57600080fd5b613c6386613565565b9450613c716020870161382a565b93506040860135925060608601356001600160401b03811115613c9357600080fd5b613c9f88828901613841565b969995985093965092949392505050565b600181811c90821680613cc457607f821691505b602082108103613ce457634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615613d6857613d68613d38565b500290565b634e487b7160e01b600052601260045260246000fd5b600082613d9257613d92613d6d565b500490565b6020808252600d908201526c05175616e74697479206973203609c1b604082015260600190565b6020808252601390820152724578636565646564206d617820737570706c7960681b604082015260600190565b602080825260159082015274115e18d959591959081b585e081c195c881b5a5b9d605a1b604082015260600190565b60208082526017908201527f4578636565646564206d6178207065722077616c6c6574000000000000000000604082015260600190565b600060208284031215613e6357600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b601f821115610c1f57600081815260208120601f850160051c81016020861015613ea75750805b601f850160051c820191505b8181101561132c57828155600101613eb3565b81516001600160401b03811115613edf57613edf613679565b613ef381613eed8454613cb0565b84613e80565b602080601f831160018114613f285760008415613f105750858301515b600019600386901b1c1916600185901b17855561132c565b600085815260208120601f198616915b82811015613f5757888601518255948401946001909101908401613f38565b5085821015613f755787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008351613f978184602088016135cb565b835190830190613fab8183602088016135cb565b01949350505050565b6020808252602a908201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646040820152692073616c65507269636560b01b606082015260800190565b60008282101561401057614010613d38565b500390565b6000821982111561402857614028613d38565b500190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6000600182016140dc576140dc613d38565b5060010190565b6000826140f2576140f2613d6d565b500690565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061412a908301846135f7565b9695505050505050565b60006020828403121561414657600080fd5b8151611ced81613532565b634e487b7160e01b600052603160045260246000fdfe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a26469706673582212207c66811ba40e51b50b4128cad8407edea7837626ce808604b47a2bf985ff8fca64736f6c634300080f0033