[ { "inputs": [ { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" }, { "internalType": "address", "name": "_platformAdmin", "type": "address" }, { "internalType": "address", "name": "_superUser", "type": "address" }, { "internalType": "address", "name": "_insuranceRegistry", "type": "address" }, { "internalType": "address", "name": "_tokenRegistry", "type": "address" }, { "internalType": "bool", "name": "_useRedeemedUri", "type": "bool" }, { "internalType": "address", "name": "_secondaryRoyaltyReceiver", "type": "address" }, { "internalType": "uint96", "name": "_secondaryRoyaltyFee", "type": "uint96" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "IncorrectAccess", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "InsuranceEventRegistered", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "name": "OperatorNotAllowed", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "TokenLocked", "type": "error" }, { "inputs": [ { "internalType": "bytes32", "name": "field", "type": "bytes32" } ], "name": "ZeroAddress", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "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": 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": "BURNER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MINTER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "OPERATOR_FILTER_REGISTRY", "outputs": [ { "internalType": "contract IOperatorFilterRegistry", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PLATFORM_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "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": "tokens", "type": "uint256[]" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "batchIndex", "type": "uint256" }, { "internalType": "string", "name": "liquidUri", "type": "string" }, { "internalType": "string", "name": "redeemedUri", "type": "string" } ], "name": "changeTokenMetadata", "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": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "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": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "insuranceRegistry", "outputs": [ { "internalType": "contract IInsuranceRegistry", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "batchIndex", "type": "uint256" } ], "name": "lockTokenMetadata", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint128", "name": "qty", "type": "uint128" }, { "internalType": "string", "name": "liquidUri", "type": "string" }, { "internalType": "string", "name": "redeemedUri", "type": "string" } ], "name": "mint", "outputs": [ { "internalType": "uint256", "name": "mintCount", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "internalType": "struct ITokenContract.MintWithIdArgs[]", "name": "mintWithIdArgs", "type": "tuple[]" } ], "name": "mintWithId", "outputs": [], "stateMutability": "nonpayable", "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": "redemptionManager", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "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": "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": "", "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": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_registryAddress", "type": "address" } ], "name": "setInsuranceRegistry", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_managerAddress", "type": "address" } ], "name": "setRedemptionManager", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "name": "setSecondaryRoyalties", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenLocked", "outputs": [ { "internalType": "bool", "name": "hasUpdated", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tokenRegistry", "outputs": [ { "internalType": "contract ITokenRegistry", "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": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "useRedeemedUri", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" } ]
60a06040523480156200001157600080fd5b506040516200354d3803806200354d833981016040819052620000349162000699565b8888733cc6cdda760b79bafa08df41ecfa224f810dceb660016daaeb6d7670e522a718067333cd4e3b1562000192578015620000e057604051633e9f1edf60e11b81523060048201526001600160a01b03831660248201526daaeb6d7670e522a718067333cd4e90637d3e3dbe906044015b600060405180830381600087803b158015620000c157600080fd5b505af1158015620000d6573d6000803e3d6000fd5b5050505062000192565b6001600160a01b03821615620001315760405163a0af290360e01b81523060048201526001600160a01b03831660248201526daaeb6d7670e522a718067333cd4e9063a0af290390604401620000a6565b604051632210724360e11b81523060048201526daaeb6d7670e522a718067333cd4e90634420e48690602401600060405180830381600087803b1580156200017857600080fd5b505af11580156200018d573d6000803e3d6000fd5b505050505b5060039050620001a383826200081b565b506004620001b282826200081b565b505050620001dd876d383630ba3337b9369030b236b4b760911b6200036f60201b620010821760201c565b62000201866939bab832b9103ab9b2b960b11b6200036f60201b620010821760201c565b6200022d8571696e737572616e636520726567697374727960701b6200036f60201b620010821760201c565b62000255846d746f6b656e20726567697374727960901b6200036f60201b620010821760201c565b6200028082707365636f6e6461727920726f79616c747960781b6200036f60201b620010821760201c565b600b80546001600160a01b038088166001600160a01b031992831617909255600a805492871692909116919091179055620002cb6000805160206200352d83398151915288620003a3565b620002d8600087620003a3565b620003137f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a66000805160206200352d833981519152620003af565b6200034e7f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a8486000805160206200352d833981519152620003af565b821515608052620003608282620003fa565b505050505050505050620008e7565b6001600160a01b0382166200039f576040516383cf4a2b60e01b8152600481018290526024015b60405180910390fd5b5050565b6200039f8282620004fb565b600082815260026020526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b6127106001600160601b03821611156200046a5760405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b606482015260840162000396565b6001600160a01b038216620004c25760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c696420726563656976657200000000000000604482015260640162000396565b604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600055565b60008281526002602090815260408083206001600160a01b038516845290915290205460ff166200039f5760008281526002602090815260408083206001600160a01b03851684529091529020805460ff191660011790556200055b3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620005c757600080fd5b81516001600160401b0380821115620005e457620005e46200059f565b604051601f8301601f19908116603f011681019082821181831017156200060f576200060f6200059f565b816040528381526020925086838588010111156200062c57600080fd5b600091505b8382101562000650578582018301518183018401529082019062000631565b600093810190920192909252949350505050565b80516001600160a01b03811681146200067c57600080fd5b919050565b80516001600160601b03811681146200067c57600080fd5b60008060008060008060008060006101208a8c031215620006b957600080fd5b89516001600160401b0380821115620006d157600080fd5b620006df8d838e01620005b5565b9a5060208c0151915080821115620006f657600080fd5b50620007058c828d01620005b5565b9850506200071660408b0162000664565b96506200072660608b0162000664565b95506200073660808b0162000664565b94506200074660a08b0162000664565b935060c08a015180151581146200075c57600080fd5b92506200076c60e08b0162000664565b91506200077d6101008b0162000681565b90509295985092959850929598565b600181811c90821680620007a157607f821691505b602082108103620007c257634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200081657600081815260208120601f850160051c81016020861015620007f15750805b601f850160051c820191505b818110156200081257828155600101620007fd565b5050505b505050565b81516001600160401b038111156200083757620008376200059f565b6200084f816200084884546200078c565b84620007c8565b602080601f8311600181146200088757600084156200086e5750858301515b600019600386901b1c1916600185901b17855562000812565b600085815260208120601f198616915b82811015620008b85788860151825594840194600190910190840162000897565b5085821015620008d75787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b608051612c236200090a600039600081816104b50152610efc0152612c236000f3fe608060405234801561001057600080fd5b50600436106102275760003560e01c806370a0823111610130578063a22cb465116100b8578063d53913931161007c578063d539139314610510578063d547741f14610537578063d99674851461054a578063e985e9c51461055d578063f474ee791461059957600080fd5b8063a22cb4651461049d578063b5e98e7b146104b0578063b80f55c9146104d7578063b88d4fde146104ea578063c87b56dd146104fd57600080fd5b8063823506b0116100ff578063823506b01461045457806391d148541461046757806395d89b411461047a5780639d23c4c714610482578063a217fddf1461049557600080fd5b806370a0823114610408578063715707e61461041b5780637c1f0e2d1461042e5780637e67a7821461044157600080fd5b80632a55205a116101b357806341f434341161018257806341f43434146103a557806342842e0e146103ba57806346694b7d146103cd5780636352211e146103e0578063685d34ff146103f357600080fd5b80632a55205a1461033a5780632f2ff15d1461036c5780633278eb041461037f57806336568abe1461039257600080fd5b80630df9ef2c116101fa5780630df9ef2c146102a957806323b872dd146102bc57806323e24ef0146102cf578063248a9ca3146102e2578063282c51f31461031357600080fd5b806301ffc9a71461022c57806306fdde0314610254578063081812fc14610269578063095ea7b314610294575b600080fd5b61023f61023a3660046121b4565b6105ac565b60405190151581526020015b60405180910390f35b61025c6105bd565b60405161024b9190612221565b61027c610277366004612234565b61064f565b6040516001600160a01b03909116815260200161024b565b6102a76102a2366004612269565b610676565b005b6102a76102b7366004612293565b61068f565b6102a76102ca3660046122ae565b6106e7565b6102a76102dd366004612293565b610712565b6103056102f0366004612234565b60009081526002602052604090206001015490565b60405190815260200161024b565b6103057f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a84881565b61034d6103483660046122ea565b61076c565b604080516001600160a01b03909316835260208301919091520161024b565b6102a761037a36600461230c565b610818565b600c5461027c906001600160a01b031681565b6102a76103a036600461230c565b61083d565b61027c6daaeb6d7670e522a718067333cd4e81565b6102a76103c83660046122ae565b6108c0565b61023f6103db366004612234565b6108e5565b61027c6103ee366004612234565b610961565b610305600080516020612bce83398151915281565b610305610416366004612293565b6109c1565b6102a7610429366004612338565b610a47565b6102a761043c366004612471565b610a87565b61030561044f3660046124de565b610b29565b6102a7610462366004612234565b610cbb565b61023f61047536600461230c565b610d53565b61025c610d7e565b600a5461027c906001600160a01b031681565b610305600081565b6102a76104ab36600461257f565b610d8d565b61023f7f000000000000000000000000000000000000000000000000000000000000000081565b6102a76104e53660046125ab565b610da1565b6102a76104f8366004612620565b610e53565b61025c61050b366004612234565b610e79565b6103057f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6102a761054536600461230c565b610f9f565b600b5461027c906001600160a01b031681565b61023f61056b366004612690565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205460ff1690565b6102a76105a73660046126ba565b610fc4565b60006105b7826110ac565b92915050565b6060600380546105cc9061271d565b80601f01602080910402602001604051908101604052809291908181526020018280546105f89061271d565b80156106455780601f1061061a57610100808354040283529160200191610645565b820191906000526020600020905b81548152906001019060200180831161062857829003601f168201915b5050505050905090565b600061065a826110b7565b506000908152600760205260409020546001600160a01b031690565b8161068081611119565b61068a83836111d2565b505050565b600080516020612bce8339815191526106a7816112e2565b6106c4826f383630ba3337b9369036b0b730b3b2b960811b611082565b50600c80546001600160a01b0319166001600160a01b0392909216919091179055565b826001600160a01b03811633146107015761070133611119565b61070c8484846112ec565b50505050565b600080516020612bce83398151915261072a816112e2565b6107498271696e737572616e636520726567697374727960701b611082565b50600b80546001600160a01b0319166001600160a01b0392909216919091179055565b60008281526001602090815260408083208151808301909252546001600160a01b038116808352600160a01b9091046001600160601b03169282019290925282916107e15750604080518082019091526000546001600160a01b0381168252600160a01b90046001600160601b031660208201525b602081015160009061271090610800906001600160601b03168761276d565b61080a9190612784565b915196919550909350505050565b600082815260026020526040902060010154610833816112e2565b61068a838361131d565b6001600160a01b03811633146108b25760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6108bc82826113a3565b5050565b826001600160a01b03811633146108da576108da33611119565b61070c84848461140a565b600a546040516359be4b0360e11b8152600481018390526000916001600160a01b03169063b37c960690602401600060405180830381865afa15801561092f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109579190810190612808565b6080015192915050565b6000818152600560205260408120546001600160a01b0316806105b75760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016108a9565b60006001600160a01b038216610a2b5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016108a9565b506001600160a01b031660009081526006602052604090205490565b600080516020612bce833981519152610a5f816112e2565b610a7d83707365636f6e6461727920726f79616c747960781b611082565b61068a8383611425565b610a9f600080516020612bce83398151915233610d53565b610abe57604051630fddf72b60e01b81523360048201526024016108a9565b600a54604051635efd823760e11b81526001600160a01b039091169063bdfb046e90610af2908690869086906004016128c5565b600060405180830381600087803b158015610b0c57600080fd5b505af1158015610b20573d6000803e3d6000fd5b50505050505050565b600080610b567f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633610d53565b80610b745750610b74600080516020612bce83398151915233610d53565b905080610b9657604051630fddf72b60e01b81523360048201526024016108a9565b6000610ba160095490565b610bac9060016128fa565b905060005b866001600160801b03168161ffff161015610bfe57610bd4600980546001019055565b6000610bdf60095490565b9050610beb8982611522565b5080610bf68161290d565b915050610bb1565b50600a546040805160a081018252878152602081018790529081018390526001600160a01b03909116906398c6833c9060608101610c446001600160801b038b1661153c565b61ffff16815260006020909101526040516001600160e01b031960e084901b168152610c73919060040161292e565b600060405180830381600087803b158015610c8d57600080fd5b505af1158015610ca1573d6000803e3d6000fd5b50505050610cae60095490565b925050505b949350505050565b610cd3600080516020612bce83398151915233610d53565b610cf257604051630fddf72b60e01b81523360048201526024016108a9565b600a5460405163aaad61ff60e01b8152600481018390526001600160a01b039091169063aaad61ff90602401600060405180830381600087803b158015610d3857600080fd5b505af1158015610d4c573d6000803e3d6000fd5b5050505050565b60009182526002602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6060600480546105cc9061271d565b81610d9781611119565b61068a83836115a3565b6000610dcd7f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a84833610d53565b80610deb5750610deb600080516020612bce83398151915233610d53565b905080610e0d57604051630fddf72b60e01b81523360048201526024016108a9565b60005b61ffff811683111561070c57610e4184848361ffff16818110610e3557610e35612998565b905060200201356115ae565b80610e4b8161290d565b915050610e10565b836001600160a01b0381163314610e6d57610e6d33611119565b610d4c858585856115c8565b6060610e84826110b7565b600a546040516359be4b0360e11b8152600481018490526000916001600160a01b03169063b37c960690602401600060405180830381865afa158015610ece573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ef69190810190612808565b905060007f0000000000000000000000000000000000000000000000000000000000000000610f26578151610f2c565b81602001515b90506000826040015185610f4091906129ae565b610f4b9060016128fa565b90506000825111610f6b5760405180602001604052806000815250610f96565b81610f75826115fa565b604051602001610f869291906129c1565b6040516020818303038152906040525b95945050505050565b600082815260026020526040902060010154610fba816112e2565b61068a83836113a3565b610fee7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633610d53565b61100d57604051630fddf72b60e01b81523360048201526024016108a9565b60005b61ffff811682111561068a5761107083838361ffff1681811061103557611035612998565b61104b9260206040909202019081019150612293565b84848461ffff1681811061106157611061612998565b90506040020160200135611522565b8061107a8161290d565b915050611010565b6001600160a01b0382166108bc576040516383cf4a2b60e01b8152600481018290526024016108a9565b60006105b78261168d565b6000818152600560205260409020546001600160a01b03166111165760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016108a9565b50565b6daaeb6d7670e522a718067333cd4e3b1561111657604051633185c44d60e21b81523060048201526001600160a01b03821660248201526daaeb6d7670e522a718067333cd4e9063c617113490604401602060405180830381865afa158015611186573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111aa91906129f0565b61111657604051633b79c77360e21b81526001600160a01b03821660048201526024016108a9565b60006111dd82610961565b9050806001600160a01b0316836001600160a01b03160361124a5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084016108a9565b336001600160a01b03821614806112665750611266813361056b565b6112d85760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c00000060648201526084016108a9565b61068a83836116cd565b611116813361173b565b6112f63382611794565b6113125760405162461bcd60e51b81526004016108a990612a0d565b61068a838383611812565b6113278282610d53565b6108bc5760008281526002602090815260408083206001600160a01b03851684529091529020805460ff1916600117905561135f3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6113ad8282610d53565b156108bc5760008281526002602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b61068a83838360405180602001604052806000815250610e53565b6127106001600160601b03821611156114935760405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b60648201526084016108a9565b6001600160a01b0382166114e95760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c69642072656365697665720000000000000060448201526064016108a9565b604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600055565b6108bc828260405180602001604052806000815250611983565b600061ffff82111561159f5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203160448201526536206269747360d01b60648201526084016108a9565b5090565b6108bc3383836119b6565b6115b781611a84565b600090815260016020526040812055565b6115d23383611794565b6115ee5760405162461bcd60e51b81526004016108a990612a0d565b61070c84848484611b27565b6060600061160783611b5a565b600101905060008167ffffffffffffffff8111156116275761162761237b565b6040519080825280601f01601f191660200182016040528015611651576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461165b57509392505050565b60006001600160e01b031982166380ac58cd60e01b14806116be57506001600160e01b03198216635b5e139f60e01b145b806105b757506105b782611c32565b600081815260076020526040902080546001600160a01b0319166001600160a01b038416908117909155819061170282610961565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6117458282610d53565b6108bc5761175281611c57565b61175d836020611c69565b60405160200161176e929190612a5a565b60408051601f198184030181529082905262461bcd60e51b82526108a991600401612221565b6000806117a083610961565b9050806001600160a01b0316846001600160a01b031614806117e757506001600160a01b0380821660009081526008602090815260408083209388168352929052205460ff165b80610cb35750836001600160a01b03166118008461064f565b6001600160a01b031614949350505050565b826001600160a01b031661182582610961565b6001600160a01b03161461184b5760405162461bcd60e51b81526004016108a990612acf565b6001600160a01b0382166118ad5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016108a9565b6118ba8383836001611e0c565b826001600160a01b03166118cd82610961565b6001600160a01b0316146118f35760405162461bcd60e51b81526004016108a990612acf565b600081815260076020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260068552838620805460001901905590871680865283862080546001019055868652600590945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b61198d8383611ed2565b61199a600084848461206b565b61068a5760405162461bcd60e51b81526004016108a990612b14565b816001600160a01b0316836001600160a01b031603611a175760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016108a9565b6001600160a01b03838116600081815260086020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6000611a8f82610961565b9050611a9f816000846001611e0c565b611aa882610961565b600083815260076020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526006845282852080546000190190558785526005909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b611b32848484611812565b611b3e8484848461206b565b61070c5760405162461bcd60e51b81526004016108a990612b14565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310611b995772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611bc5576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310611be357662386f26fc10000830492506010015b6305f5e1008310611bfb576305f5e100830492506008015b6127108310611c0f57612710830492506004015b60648310611c21576064830492506002015b600a83106105b75760010192915050565b60006001600160e01b03198216637965db0b60e01b14806105b757506105b782612169565b60606105b76001600160a01b03831660145b60606000611c7883600261276d565b611c839060026128fa565b67ffffffffffffffff811115611c9b57611c9b61237b565b6040519080825280601f01601f191660200182016040528015611cc5576020820181803683370190505b509050600360fc1b81600081518110611ce057611ce0612998565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611d0f57611d0f612998565b60200101906001600160f81b031916908160001a9053506000611d3384600261276d565b611d3e9060016128fa565b90505b6001811115611db6576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611d7257611d72612998565b1a60f81b828281518110611d8857611d88612998565b60200101906001600160f81b031916908160001a90535060049490941c93611daf81612b66565b9050611d41565b508315611e055760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016108a9565b9392505050565b6001600160a01b0384161580611e2957506001600160a01b038316155b61070c57600b5460405163987c389b60e01b8152600481018490526001600160a01b039091169063987c389b90602401602060405180830381865afa158015611e76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e9a91906129f0565b8015611eb15750600c546001600160a01b03163314155b1561070c5760405163ad35d15960e01b8152600481018390526024016108a9565b6001600160a01b038216611f285760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016108a9565b6000818152600560205260409020546001600160a01b031615611f8d5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016108a9565b611f9b600083836001611e0c565b6000818152600560205260409020546001600160a01b0316156120005760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016108a9565b6001600160a01b038216600081815260066020908152604080832080546001019055848352600590915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160a01b0384163b1561216157604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906120af903390899088908890600401612b7d565b6020604051808303816000875af19250505080156120ea575060408051601f3d908101601f191682019092526120e791810190612bb0565b60015b612147573d808015612118576040519150601f19603f3d011682016040523d82523d6000602084013e61211d565b606091505b50805160000361213f5760405162461bcd60e51b81526004016108a990612b14565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610cb3565b506001610cb3565b60006001600160e01b0319821663152a902d60e11b14806105b757506301ffc9a760e01b6001600160e01b03198316146105b7565b6001600160e01b03198116811461111657600080fd5b6000602082840312156121c657600080fd5b8135611e058161219e565b60005b838110156121ec5781810151838201526020016121d4565b50506000910152565b6000815180845261220d8160208601602086016121d1565b601f01601f19169290920160200192915050565b602081526000611e0560208301846121f5565b60006020828403121561224657600080fd5b5035919050565b80356001600160a01b038116811461226457600080fd5b919050565b6000806040838503121561227c57600080fd5b6122858361224d565b946020939093013593505050565b6000602082840312156122a557600080fd5b611e058261224d565b6000806000606084860312156122c357600080fd5b6122cc8461224d565b92506122da6020850161224d565b9150604084013590509250925092565b600080604083850312156122fd57600080fd5b50508035926020909101359150565b6000806040838503121561231f57600080fd5b8235915061232f6020840161224d565b90509250929050565b6000806040838503121561234b57600080fd5b6123548361224d565b915060208301356001600160601b038116811461237057600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60405160a0810167ffffffffffffffff811182821017156123b4576123b461237b565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156123e3576123e361237b565b604052919050565b600067ffffffffffffffff8211156124055761240561237b565b50601f01601f191660200190565b6000612426612421846123eb565b6123ba565b905082815283838301111561243a57600080fd5b828260208301376000602084830101529392505050565b600082601f83011261246257600080fd5b611e0583833560208501612413565b60008060006060848603121561248657600080fd5b83359250602084013567ffffffffffffffff808211156124a557600080fd5b6124b187838801612451565b935060408601359150808211156124c757600080fd5b506124d486828701612451565b9150509250925092565b600080600080608085870312156124f457600080fd5b6124fd8561224d565b935060208501356001600160801b038116811461251957600080fd5b9250604085013567ffffffffffffffff8082111561253657600080fd5b61254288838901612451565b9350606087013591508082111561255857600080fd5b5061256587828801612451565b91505092959194509250565b801515811461111657600080fd5b6000806040838503121561259257600080fd5b61259b8361224d565b9150602083013561237081612571565b600080602083850312156125be57600080fd5b823567ffffffffffffffff808211156125d657600080fd5b818501915085601f8301126125ea57600080fd5b8135818111156125f957600080fd5b8660208260051b850101111561260e57600080fd5b60209290920196919550909350505050565b6000806000806080858703121561263657600080fd5b61263f8561224d565b935061264d6020860161224d565b925060408501359150606085013567ffffffffffffffff81111561267057600080fd5b8501601f8101871361268157600080fd5b61256587823560208401612413565b600080604083850312156126a357600080fd5b6126ac8361224d565b915061232f6020840161224d565b600080602083850312156126cd57600080fd5b823567ffffffffffffffff808211156126e557600080fd5b818501915085601f8301126126f957600080fd5b81358181111561270857600080fd5b8660208260061b850101111561260e57600080fd5b600181811c9082168061273157607f821691505b60208210810361275157634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176105b7576105b7612757565b6000826127a157634e487b7160e01b600052601260045260246000fd5b500490565b600082601f8301126127b757600080fd5b81516127c5612421826123eb565b8181528460208386010111156127da57600080fd5b610cb38260208301602087016121d1565b805161ffff8116811461226457600080fd5b805161226481612571565b60006020828403121561281a57600080fd5b815167ffffffffffffffff8082111561283257600080fd5b9083019060a0828603121561284657600080fd5b61284e612391565b82518281111561285d57600080fd5b612869878286016127a6565b82525060208301518281111561287e57600080fd5b61288a878286016127a6565b602083015250604083015160408201526128a6606084016127eb565b60608201526128b7608084016127fd565b608082015295945050505050565b8381526060602082015260006128de60608301856121f5565b82810360408401526128f081856121f5565b9695505050505050565b808201808211156105b7576105b7612757565b600061ffff80831681810361292457612924612757565b6001019392505050565b602081526000825160a0602084015261294a60c08401826121f5565b90506020840151601f1984830301604085015261296782826121f5565b9150506040840151606084015261ffff60608501511660808401526080840151151560a08401528091505092915050565b634e487b7160e01b600052603260045260246000fd5b818103818111156105b7576105b7612757565b600083516129d38184602088016121d1565b8351908301906129e78183602088016121d1565b01949350505050565b600060208284031215612a0257600080fd5b8151611e0581612571565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612a928160178501602088016121d1565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612ac38160288401602088016121d1565b01602801949350505050565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b600081612b7557612b75612757565b506000190190565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906128f0908301846121f5565b600060208284031215612bc257600080fd5b8151611e058161219e56fe5246556c0ab216b5b325ad7c539bfbd1a07c768773cdf810fecd3c3375c27407a2646970667358221220aa0c4a3339cdbbd22bd7a544f5cfe8b2f0901f196edc2440c295d08ba6fe4e8d64736f6c634300081100335246556c0ab216b5b325ad7c539bfbd1a07c768773cdf810fecd3c3375c2740700000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000160000000000000000000000000f0196a54695377c009ea13a4800b3cee4e9c5a17000000000000000000000000f0196a54695377c009ea13a4800b3cee4e9c5a1700000000000000000000000010397850c54742c7f0371153e10305db6ec5a5a50000000000000000000000007d23acd34f92da2a8b9291ee3a93ca768483aec30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d0f6a5543b160d8981859947c02e082664ca67fb00000000000000000000000000000000000000000000000000000000000000fa000000000000000000000000000000000000000000000000000000000000000c4c697175696420546f6b656e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034c51540000000000000000000000000000000000000000000000000000000000