UNPKG

@paulstinchcombe/kami721c-sdk

Version:

SDK for interacting with KAMI721C NFT contracts

1,531 lines 116 kB
{ "_format": "hh-sol-artifact-1", "contractName": "KAMI721C", "sourceName": "contracts/KAMI721C.sol", "abi": [ { "inputs": [ { "internalType": "address", "name": "usdcAddress_", "type": "address" }, { "internalType": "string", "name": "name_", "type": "string" }, { "internalType": "string", "name": "symbol_", "type": "string" }, { "internalType": "string", "name": "baseTokenURI_", "type": "string" }, { "internalType": "uint256", "name": "initialMintPrice_", "type": "uint256" }, { "internalType": "address", "name": "platformAddress_", "type": "address" }, { "internalType": "uint96", "name": "platformCommissionPercentage_", "type": "uint96" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "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": [ { "components": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "indexed": false, "internalType": "struct KAMI721C.RoyaltyData[]", "name": "royalties", "type": "tuple[]" } ], "name": "MintRoyaltiesUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Paused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "platformAddress", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "PlatformCommissionPaid", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint96", "name": "newPercentage", "type": "uint96" }, { "indexed": false, "internalType": "address", "name": "newPlatformAddress", "type": "address" } ], "name": "PlatformCommissionUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "renter", "type": "address" } ], "name": "RentalEnded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "renter", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "newEndTime", "type": "uint256" } ], "name": "RentalExtended", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } ], "name": "RoleAdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleRevoked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint96", "name": "newPercentage", "type": "uint96" } ], "name": "RoyaltyPercentageUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "components": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "indexed": false, "internalType": "struct KAMI721C.RoyaltyData[]", "name": "royalties", "type": "tuple[]" } ], "name": "TokenMintRoyaltiesUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "renter", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "startTime", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "endTime", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "rentalPrice", "type": "uint256" } ], "name": "TokenRented", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "salePrice", "type": "uint256" } ], "name": "TokenSold", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "components": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "indexed": false, "internalType": "struct KAMI721C.RoyaltyData[]", "name": "royalties", "type": "tuple[]" } ], "name": "TokenTransferRoyaltiesUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "components": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "indexed": false, "internalType": "struct KAMI721C.RoyaltyData[]", "name": "royalties", "type": "tuple[]" } ], "name": "TransferRoyaltiesUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "TransferRoyaltyDistributed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Unpaused", "type": "event" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "OWNER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PLATFORM_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "RENTER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "endRental", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "additionalDuration", "type": "uint256" }, { "internalType": "uint256", "name": "additionalPayment", "type": "uint256" } ], "name": "extendRental", "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": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getMintRoyaltyReceivers", "outputs": [ { "components": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "internalType": "struct KAMI721C.RoyaltyData[]", "name": "", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getRentalInfo", "outputs": [ { "internalType": "address", "name": "renter", "type": "address" }, { "internalType": "uint256", "name": "startTime", "type": "uint256" }, { "internalType": "uint256", "name": "endTime", "type": "uint256" }, { "internalType": "uint256", "name": "rentalPrice", "type": "uint256" }, { "internalType": "bool", "name": "active", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getTransferRoyaltyReceivers", "outputs": [ { "components": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "internalType": "struct KAMI721C.RoyaltyData[]", "name": "", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "hasActiveRentals", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "isRented", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "mintPrice", "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": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "platformAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "platformCommissionPercentage", "outputs": [ { "internalType": "uint96", "name": "", "type": "uint96" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "duration", "type": "uint256" }, { "internalType": "uint256", "name": "rentalPrice", "type": "uint256" } ], "name": "rentToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "salePrice", "type": "uint256" } ], "name": "royaltyInfo", "outputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint256", "name": "royaltyAmount", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "royaltyPercentage", "outputs": [ { "internalType": "uint96", "name": "", "type": "uint96" } ], "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": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "salePrice", "type": "uint256" } ], "name": "sellToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "baseURI", "type": "string" } ], "name": "setBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newMintPrice", "type": "uint256" } ], "name": "setMintPrice", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "internalType": "struct KAMI721C.RoyaltyData[]", "name": "royalties", "type": "tuple[]" } ], "name": "setMintRoyalties", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint96", "name": "newPlatformCommissionPercentage", "type": "uint96" }, { "internalType": "address", "name": "newPlatformAddress", "type": "address" } ], "name": "setPlatformCommission", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint96", "name": "newRoyaltyPercentage", "type": "uint96" } ], "name": "setRoyaltyPercentage", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "components": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "internalType": "struct KAMI721C.RoyaltyData[]", "name": "royalties", "type": "tuple[]" } ], "name": "setTokenMintRoyalties", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "components": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "internalType": "struct KAMI721C.RoyaltyData[]", "name": "royalties", "type": "tuple[]" } ], "name": "setTokenTransferRoyalties", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "internalType": "struct KAMI721C.RoyaltyData[]", "name": "royalties", "type": "tuple[]" } ], "name": "setTransferRoyalties", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "tokenByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "tokenOfOwnerByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "unpause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "usdcToken", "outputs": [ { "internalType": "contract IERC20", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" } ], "bytecode": "0x604060a08152346200077557620054a9803803806200001e816200077a565b92833981019060e08183031262000775576200003a81620007a0565b906020928382015160018060401b039081811162000775578262000060918501620007b5565b868401518281116200077557836200007a918601620007b5565b92606085015190838211620007755762000096918601620007b5565b93608081015160c0620000ac60a08401620007a0565b9201516001600160601b03811694908590036200077557835195818711620004d2576001968754958887811c971680156200076a575b8c881014620004b15781908c601f9889811162000711575b50508c908883116001146200069d5760009262000691575b5050600019600383901b1c191690881b1787555b805190828211620004d257600254908882811c9216801562000686575b8c831014620004b1578b82888594116200062c575b50508b90878311600114620005c057600092620005b4575b5050600019600383901b1c191690871b176002555b60ff199687600d5416600d5560018060601b0319946103e886601654161760165560018060a01b03809a16998a1562000570578516998a156200052c576107d08811620004e8576080528151928311620004d257601054918883811c93168015620004c7575b8c841014620004b1578b838386951162000455575b50508b918311600114620003e957600092620003dd575b5050600019600383901b1c191690861b176010555b600f5560601b161760115560008052600084528460002033600052845260ff85600020541615620003a2575b7fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e80600052600085528560002033600052855260ff8660002054161562000365575b507f797343f8d6a29aafeb3aaf0910a8973e0081c60c2f6c1f775cd9f76ea348fc1e9384600052600081528560002084600052815260ff8660002054161562000327575b8551614c61908162000828823960805181818161091501528181611e5101528181611e8c01528181611f0d01528181611ff8015281816124ea0152818161283f0152612b220152f35b8460005260008152856000209084600052528460002091825416179055339160008051602062005489833981519152600080a43880808080620002de565b8060005260008552856000203360005285528560002082848254161790553390339060008051602062005489833981519152600080a4386200029a565b60008052600084528460002033600052845284600020818382541617905533336000600080516020620054898339815191528180a462000258565b01519050388062000217565b90889350601f1983169160106000528c600020928d6000905b8282106200043d575050841162000423575b505050811b016010556200022c565b015160001960f88460031b161c1916905538808062000414565b8385015186558c979095019493840193018e62000402565b9091929350601060005283826000209181870160051c8301938710620004a7575b9186958c929594930160051c01915b8281106200049757508d915062000200565b600081558695508b910162000485565b9250819262000476565b634e487b7160e01b600052602260045260246000fd5b92607f1692620001eb565b634e487b7160e01b600052604160045260246000fd5b8c5162461bcd60e51b8152600481018d9052601c60248201527f506c6174666f726d20636f6d6d697373696f6e20746f6f2068696768000000006044820152606490fd5b8c5162461bcd60e51b8152600481018d9052601860248201527f496e76616c696420706c6174666f726d206164647265737300000000000000006044820152606490fd5b8c5162461bcd60e51b8152600481018d9052601460248201527f496e76616c6964205553444320616464726573730000000000000000000000006044820152606490fd5b01519050388062000170565b899350908c91601f198416600260005283600020936000905b828210620006145750508411620005fa575b505050811b0160025562000185565b015160001960f88460031b161c19169055388080620005eb565b8385015186558d979095019493840193018f620005d9565b90919250600260005287826000209181860160051c83019386106200067c575b918b91869594930160051c01915b8281106200066c57508d915062000158565b600081558594508b91016200065a565b925081926200064c565b91607f169162000143565b01519050388062000112565b8a9350908d91601f1984168560005283600020936000905b828210620006ef5750508411620006d5575b505050811b01875562000126565b015160001960f88460031b161c19169055388080620006c7565b91929395968291958786015181550195019301908f918d9695949392620006b5565b909192508a60005288826000209181860160051c830193861062000760575b918c91869594930160051c01915b8281106200075057508e9150620000fa565b600081558594508c91016200073e565b9250819262000730565b96607f1696620000e2565b600080fd5b6040519190601f01601f191682016001600160401b03811183821017620004d257604052565b51906001600160a01b03821682036200077557565b919080601f84011215620007755782516001600160401b038111620004d257602090620007eb601f8201601f191683016200077a565b92818452828287010111620007755760005b8181106200081357508260009394955001015290565b8581018301518482018401528201620007fd56fe6080806040526004908136101561001557600080fd5b60003560e01c90816301ffc9a714612ef65750806306fdde0314612e48578063081812fc14612e2a578063095ea7b314612caf5780630a0a351514612b7e5780630daf4c9714612b5157806311eac85514612b0c5780631249c58b146127f257806318160ddd146127d45780631c2098dc1461241857806323b872dd146123f4578063248a9ca3146123c657806327dc3fbd1461233a5780632a55205a146122fd5780632f2ff15d1461224b5780632f745c591461219857806336568abe146121085780633e11741f14611da85780633f4ba83a14611cf157806342842e0e14611cda57806342966c6814611b91578063463dace014611b72578063492ae5a3146119c35780634f6ccce7146119a557806355f804b3146117db5780635c975abb146117b85780635e27a7751461178d578063602481b6146114ae5780636352211e1461147e5780636817c76c1461146057806370824c5c1461142557806370a08231146113fa5780638456cb59146113455780638a71bb2d1461131e57806391d14854146112d157806392303e06146112aa57806395d89b41146111db57806397491d6f146110975780639f6d68b014610fbe578063a217fddf14610fa2578063a22cb46514610ec7578063aa15d40f14610e95578063b88d4fde14610e10578063b97c9f7714610dd5578063c87b56dd14610afd578063c8a9aabc14610861578063d547741f14610820578063dbe55e56146107ff578063e58378bb146107d6578063e5f2e0cc1461056f578063e985e9c514610519578063f249fd16146102ad5763f4a0a5281461026857600080fd5b346102a85760203660031901126102a857336000908152600080516020614bec83398151915260205260409020546102a29060ff166132a0565b35600f55005b600080fd5b50346102a85760403660031901126102a8576102c7613212565b6102cf613014565b336000908152600080516020614bec83398151915260209081526040909120549091906102fe9060ff166132a0565b6001600160a01b0381169283156104d5576001600160601b0316936107d08511610491577f410d007abb80c65964518a8b4f3007c4b354d36d7cfb908d3e3fa6411506e27460408686868660115460601c906001600160601b03199060601b168417601155828103610377575b508351928352820152a1005b7f797343f8d6a29aafeb3aaf0910a8973e0081c60c2f6c1f775cd9f76ea348fc1e9081600052600083528560002081600052835260ff866000205416610426575b5080600052600082528460002083600052825260ff85600020541661036b5780600052600082528460002083600052825284600020600160ff198254161790558233917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d600080a48561036b565b81600052600083528560002081600052835260ff866000205416156103b8578160005260008352856000208160005283528560002060ff1981541690553390827ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b600080a4866103b8565b60405162461bcd60e51b8152908101839052601c60248201527f506c6174666f726d20636f6d6d697373696f6e20746f6f2068696768000000006044820152606490fd5b60405162461bcd60e51b8152808601849052601860248201527f496e76616c696420706c6174666f726d206164647265737300000000000000006044820152606490fd5b346102a85760403660031901126102a857610532612ffe565b61053a613014565b9060018060a01b03809116600052600660205260406000209116600052602052602060ff604060002054166040519015158152f35b50346102a85761057e3661305a565b90600080516020614c0c8339815191526000526020936000855260406000203360005285526105b460ff604060002054166132a0565b6000848152600360205260409020546105d7906001600160a01b031615156132e5565b8360005260158086526105ed6040600020613351565b6000906000905b858210610764575050612710610615816001600160601b03809416146139ae565b84158015610656575b867fcacd6190ee2ad101cd34b99d8fbaf3cdcda816ef83aaa4759f111ba1c416e62087876106516040519283928361350a565b0390a2005b61074f57610663846133af565b61067c836106728a8801613402565b16928311156141df565b6001600160a01b0390811693841561070b575090610701939291600c7fcacd6190ee2ad101cd34b99d8fbaf3cdcda816ef83aaa4759f111ba1c416e6209899604051956106c887613169565b865280860193845260008b815291905260409020935191516001600160a01b039190921616911660a01b6001600160a01b031916179055565b839238808061061e565b60405162461bcd60e51b8152908101899052601b60248201527f455243323938313a20496e76616c696420706172616d657465727300000000006044820152606490fd5b603283634e487b7160e01b6000525260246000fd5b90916001906107ae906107936001600160a01b0361078b610786888c8c613389565b6133af565b1615156133c3565b6107a88a6107a2878b8b613389565b01613402565b90613416565b92876000528289526107cf60406000206107c9838a8a613389565b90613468565b01906105f4565b346102a85760003660031901126102a8576020604051600080516020614c0c8339815191528152f35b346102a85760003660031901126102a857602060115460601c604051908152f35b50346102a85760403660031901126102a85761085f903561083f613014565b9080600052600060205261085a600160406000200154613dcd565b6141af565b005b50346102a8576108703661308d565b600083815260036020526040902054909190610896906001600160a01b031615156132e5565b82600052602093601785526108b460ff826040600020015416613afb565b8115610aa6578215610a50576108c984613a61565b60008581526017875260409020549091906001600160a01b03163303610a0c575061094d906127106109066001600160601b036011541686613328565b049061091282866136db565b917f00000000000000000000000000000000000000000000000000000000000000009061094187303385613b69565b806109c5575b50613bb0565b82600052601784526109686002604060002001918254613709565b905581600052601783526109856003604060002001918254613709565b905580600052601782527f43ed7a287a535d13f2389230befff1329b7724a3890189bb8727976119e6c6c3600260406000200154926040519384523393a3005b6109d58160115460601c84613bb0565b877f2a0edbc96cbdf959b1243e79c51b9bb83b7867279441dc220825d561c2fbb2c68a60115460601c93604051908152a338610947565b60405162461bcd60e51b8152908101869052601d60248201527f4f6e6c792072656e7465722063616e20657874656e642072656e74616c0000006044820152606490fd5b60405162461bcd60e51b8152908101859052602960248201527f4164646974696f6e616c207061796d656e74206d75737420626520677265617460448201526806572207468616e20360bc1b6064820152608490fd5b60405162461bcd60e51b8152908101859052602a60248201527f4164646974696f6e616c206475726174696f6e206d75737420626520677265616044820152690746572207468616e20360b41b6064820152608490fd5b50346102a857602090816003193601126102a857803560008181526003602052604090205490918391610b3a906001600160a01b03161515613a15565b60405190600060105491610b4d83613228565b808552848681019360019588600182169182600014610dba575050600114610d5c575b610b7c9250038561319f565b835115610d40578586916000977a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000009081811015610d32575b50506d04ee2d6d415b85acef810000000080841015610d24575b50662386f26fc1000080841015610d15575b506305f5e10080841015610d06575b5061271080841015610cf8575b50506064821015610ce8575b600a80921015610cde575b926001870193816021610c39610c23886131c0565b97610c31604051998a61319f565b8089526131c0565b878a019a90601f1901368c37870101905b610ca8575b5050505093610c8e939291610c82610c739660405197889551809288880190612fb6565b84019151809386840190612fb6565b0103808452018261319f565b905b610ca4604051928284938452830190612fd9565b0390f35b600019019083906f181899199a1a9b1b9c1cb0b131b232b360811b8282061a835304918215610cd957919082610c4a565b610c4f565b9560010195610c0e565b9590606460029104910195610c03565b970196909104903880610bf7565b60089198930492019638610bea565b60109198930492019638610bdb565b879198930492019638610bc9565b604099500492503880610baf565b505050505050604051610d5281613184565b6000815290610c90565b5050601060005284867f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672866000915b858310610da1575050610b7c9350820101610b70565b80919294505483858b0101520191018790868893610d8b565b60ff19168752610b7c94151560051b8401019150610b709050565b346102a85760003660031901126102a85760206040517f3b652633b3026fa70803ad50b58b0ae884cefe3497643f62c67c466f41a6e88d8152f35b50346102a85760803660031901126102a857610e2a612ffe565b90610e33613014565b91604435606435936001600160401b0385116102a857366023860112156102a857610e6d610e909486602461085f983693013591016131db565b92610e80610e7b8433613bec565b613716565b610e8b838383613cb4565b614a7c565b614291565b50346102a85760203660031901126102a85760ff81602092356000526017835260406000200154166040519015158152f35b50346102a85760403660031901126102a857610ee1612ffe565b602435801515918282036102a8576001600160a01b031692338414610f5e5750610f309033600052600660205260406000208460005260205260406000209060ff801983541691151516179055565b6040519081527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b60649060206040519162461bcd60e51b8352820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152fd5b346102a85760003660031901126102a857602060405160008152f35b50346102a85760203660031901126102a8576001600160601b03610fe0613212565b336000908152600080516020614bec83398151915260205260409020546110099060ff166132a0565b1690610bb88211611053577f8df4d6c1a5c8e6c4d7a71d760d42122503a5244aeab98f2ff8e3244be07a44e3602083806001600160601b03196016541617601655604051908152a1005b60649060206040519162461bcd60e51b8352820152601b60248201527f526f79616c74792070657263656e7461676520746f6f206869676800000000006044820152fd5b50346102a85760203660031901126102a85780356000818152600360205260409020549091906110d1906001600160a01b031615156132e5565b8160005260176020526110ed60ff826040600020015416613afb565b6110f682613a61565b6001600160a01b03929083169133831480156111c2575b1561117257816000526017602052604060002093845416930160ff19815416905561113783613577565b15611164575b7fdfd6ab3fc2a0e563c3389917592f1a850824730b5f05f16be9363c4adfc268da600080a4005b61116d83614103565b61113d565b60849060206040519162461bcd60e51b8352820152602360248201527f4f6e6c79206f776e6572206f722072656e7465722063616e20656e642072656e6044820152621d185b60ea1b6064820152fd5b508160005260176020528360406000205416331461110d565b346102a85760003660031901126102a8576040516002546000826111fe83613228565b918282526020936001908560018216918260001461128a57505060011461122d575b50610c909250038361319f565b84915060026000527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace906000915b858310611272575050610c90935082010185611220565b8054838901850152879450869390920191810161125b565b60ff191685820152610c9095151560051b85010192508791506112209050565b346102a85760003660031901126102a85760206001600160601b0360115416604051908152f35b50346102a85760403660031901126102a8576112eb613014565b9035600052600060205260406000209060018060a01b0316600052602052602060ff604060002054166040519015158152f35b346102a85760003660031901126102a85760206001600160601b0360165416604051908152f35b50346102a85760003660031901126102a857336000908152600080516020614bec83398151915260205260409020546113809060ff166132a0565b600d549060ff82166113c35760018260ff191617600d557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b60649060206040519162461bcd60e51b8352820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152fd5b346102a85760203660031901126102a857602061141d611418612ffe565b613a84565b604051908152f35b346102a85760003660031901126102a85760206040517f797343f8d6a29aafeb3aaf0910a8973e0081c60c2f6c1f775cd9f76ea348fc1e8152f35b346102a85760003660031901126102a8576020600f54604051908152f35b50346102a85760203660031901126102a85761149c60209135613a61565b6040516001600160a01b039091168152f35b50346102a857602090816003193601126102a85780356001600160401b0381116102a8576114df903690830161302a565b91600080516020614c0c83398151915260005260008452604060002033600052845261151260ff604060002054166132a0565b60138054600082558061174a575b5060009060005b858110611650575050612710611548816001600160601b03809416146139ae565b84158015611587575b6040517fbb8446bab3f849e18e51a7f88d964208275772e34ae7283ced4d1850f2a6248b908061158289898361350a565b0390a1005b61074f57611594846133af565b6115ae6115a2888701613402565b938416928311156141df565b6001600160a01b031692831561160c57507fbb8446bab3f849e18e51a7f88d964208275772e34ae7283ced4d1850f2a6248b956040516115ed81613169565b848152015260a01b6001600160a01b03191617600b5538808080611551565b60405162461bcd60e51b8152908101879052601960248201527f455243323938313a20696e76616c6964207265636569766572000000000000006044820152606490fd5b6001600160a01b039261167e9061166f8561078b610786868c8c613389565b6107a8896107a2858b8b613389565b9261168a828888613389565b8354600160401b811015611735576001810180865581101561172057916116fa8a61171a9360019695886000527f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a09001936116e3826133af565b85546001600160a01b031916911617845501613402565b81546001600160a01b031660a09190911b6001600160a01b031916179055565b01611527565b603287634e487b7160e01b6000525260246000fd5b604187634e487b7160e01b6000525260246000fd5b816000527f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a090908101905b8181106117815750611520565b60008155600101611774565b50346102a85760203660031901126102a8576117ac610ca4913561391e565b604051918291826130dc565b346102a85760003660031901126102a857602060ff600d54166040519015158152f35b50346102a8576020806003193601126102a8576001600160401b039082358281116102a857366023820112156102a85761181e90369060248187013591016131db565b92600080516020614c0c83398151915260005260008252604060002033600052825261185160ff604060002054166132a0565b83519283116119905750611866601054613228565b601f811161192c575b5080601f83116001146118ab575081926000926118a0575b5050600019600383901b1c191660019190911b17601055005b015190503880611887565b90601f1983169360106000527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672926000905b86821061191457505083