UNPKG

@zkp2p/reclaim-witness-sdk

Version:

<div> <div> <img src="https://raw.githubusercontent.com/reclaimprotocol/.github/main/assets/banners/Attestor-Core.png" /> </div> </div>

1,141 lines 98.2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ReclaimServiceManager__factory = void 0; /* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ const ethers_1 = require("ethers"); const _abi = [ { type: "constructor", inputs: [ { name: "_avsDirectory", type: "address", internalType: "address", }, { name: "_stakeRegistry", type: "address", internalType: "address", }, { name: "_delegationManager", type: "address", internalType: "address", }, ], stateMutability: "nonpayable", }, { type: "function", name: "admins", inputs: [ { name: "", type: "uint256", internalType: "uint256", }, ], outputs: [ { name: "", type: "address", internalType: "address", }, ], stateMutability: "view", }, { type: "function", name: "allTaskHashes", inputs: [ { name: "", type: "uint32", internalType: "uint32", }, ], outputs: [ { name: "", type: "bytes32", internalType: "bytes32", }, ], stateMutability: "view", }, { type: "function", name: "avsDirectory", inputs: [], outputs: [ { name: "", type: "address", internalType: "address", }, ], stateMutability: "view", }, { type: "function", name: "checkSignerAddress", inputs: [ { name: "request", type: "tuple", internalType: "struct IReclaimServiceManager.ClaimRequest", components: [ { name: "provider", type: "string", internalType: "string", }, { name: "claimUserId", type: "bytes32", internalType: "bytes32", }, { name: "claimHash", type: "bytes32", internalType: "bytes32", }, { name: "requestedAt", type: "uint32", internalType: "uint32", }, { name: "owner", type: "address", internalType: "address", }, ], }, { name: "requestSignature", type: "bytes", internalType: "bytes", }, ], outputs: [ { name: "", type: "address", internalType: "address", }, ], stateMutability: "pure", }, { type: "function", name: "createNewTask", inputs: [ { name: "request", type: "tuple", internalType: "struct IReclaimServiceManager.ClaimRequest", components: [ { name: "provider", type: "string", internalType: "string", }, { name: "claimUserId", type: "bytes32", internalType: "bytes32", }, { name: "claimHash", type: "bytes32", internalType: "bytes32", }, { name: "requestedAt", type: "uint32", internalType: "uint32", }, { name: "owner", type: "address", internalType: "address", }, ], }, { name: "requestSignature", type: "bytes", internalType: "bytes", }, ], outputs: [], stateMutability: "nonpayable", }, { type: "function", name: "deregisterOperatorFromAVS", inputs: [ { name: "operator", type: "address", internalType: "address", }, ], outputs: [], stateMutability: "nonpayable", }, { type: "function", name: "encodeClaimRequest", inputs: [ { name: "request", type: "tuple", internalType: "struct IReclaimServiceManager.ClaimRequest", components: [ { name: "provider", type: "string", internalType: "string", }, { name: "claimUserId", type: "bytes32", internalType: "bytes32", }, { name: "claimHash", type: "bytes32", internalType: "bytes32", }, { name: "requestedAt", type: "uint32", internalType: "uint32", }, { name: "owner", type: "address", internalType: "address", }, ], }, ], outputs: [ { name: "", type: "bytes", internalType: "bytes", }, ], stateMutability: "pure", }, { type: "function", name: "getMetadataForOperator", inputs: [ { name: "operator", type: "address", internalType: "address", }, ], outputs: [ { name: "", type: "tuple", internalType: "struct IReclaimServiceManager.OperatorMetadata", components: [ { name: "addr", type: "address", internalType: "address", }, { name: "url", type: "string", internalType: "string", }, ], }, ], stateMutability: "view", }, { type: "function", name: "getOperatorRestakedStrategies", inputs: [ { name: "_operator", type: "address", internalType: "address", }, ], outputs: [ { name: "", type: "address[]", internalType: "address[]", }, ], stateMutability: "view", }, { type: "function", name: "getRestakeableStrategies", inputs: [], outputs: [ { name: "", type: "address[]", internalType: "address[]", }, ], stateMutability: "view", }, { type: "function", name: "isAdmin", inputs: [ { name: "_admin", type: "address", internalType: "address", }, ], outputs: [ { name: "", type: "bool", internalType: "bool", }, ], stateMutability: "view", }, { type: "function", name: "isOperatorWhitelisted", inputs: [ { name: "operator", type: "address", internalType: "address", }, ], outputs: [ { name: "", type: "bool", internalType: "bool", }, ], stateMutability: "view", }, { type: "function", name: "latestTaskNum", inputs: [], outputs: [ { name: "", type: "uint32", internalType: "uint32", }, ], stateMutability: "view", }, { type: "function", name: "operatorHasMinimumWeight", inputs: [ { name: "operator", type: "address", internalType: "address", }, ], outputs: [ { name: "", type: "bool", internalType: "bool", }, ], stateMutability: "view", }, { type: "function", name: "owner", inputs: [], outputs: [ { name: "", type: "address", internalType: "address", }, ], stateMutability: "view", }, { type: "function", name: "pause", inputs: [ { name: "newPausedStatus", type: "uint256", internalType: "uint256", }, ], outputs: [], stateMutability: "nonpayable", }, { type: "function", name: "pauseAll", inputs: [], outputs: [], stateMutability: "nonpayable", }, { type: "function", name: "paused", inputs: [ { name: "index", type: "uint8", internalType: "uint8", }, ], outputs: [ { name: "", type: "bool", internalType: "bool", }, ], stateMutability: "view", }, { type: "function", name: "paused", inputs: [], outputs: [ { name: "", type: "uint256", internalType: "uint256", }, ], stateMutability: "view", }, { type: "function", name: "pauserRegistry", inputs: [], outputs: [ { name: "", type: "address", internalType: "contract IPauserRegistry", }, ], stateMutability: "view", }, { type: "function", name: "payForRange", inputs: [ { name: "rangePayments", type: "tuple[]", internalType: "struct IPaymentCoordinator.RangePayment[]", components: [ { name: "strategiesAndMultipliers", type: "tuple[]", internalType: "struct IPaymentCoordinator.StrategyAndMultiplier[]", components: [ { name: "strategy", type: "address", internalType: "contract IStrategy", }, { name: "multiplier", type: "uint96", internalType: "uint96", }, ], }, { name: "token", type: "address", internalType: "contract IERC20", }, { name: "amount", type: "uint256", internalType: "uint256", }, { name: "startTimestamp", type: "uint32", internalType: "uint32", }, { name: "duration", type: "uint32", internalType: "uint32", }, ], }, ], outputs: [], stateMutability: "nonpayable", }, { type: "function", name: "registerOperatorToAVS", inputs: [ { name: "operator", type: "address", internalType: "address", }, { name: "operatorSignature", type: "tuple", internalType: "struct ISignatureUtils.SignatureWithSaltAndExpiry", components: [ { name: "signature", type: "bytes", internalType: "bytes", }, { name: "salt", type: "bytes32", internalType: "bytes32", }, { name: "expiry", type: "uint256", internalType: "uint256", }, ], }, ], outputs: [], stateMutability: "nonpayable", }, { type: "function", name: "registeredOperators", inputs: [ { name: "", type: "uint256", internalType: "uint256", }, ], outputs: [ { name: "addr", type: "address", internalType: "address", }, { name: "url", type: "string", internalType: "string", }, ], stateMutability: "view", }, { type: "function", name: "renounceOwnership", inputs: [], outputs: [], stateMutability: "nonpayable", }, { type: "function", name: "setPauserRegistry", inputs: [ { name: "newPauserRegistry", type: "address", internalType: "contract IPauserRegistry", }, ], outputs: [], stateMutability: "nonpayable", }, { type: "function", name: "setup", inputs: [ { name: "initialAdmin", type: "address", internalType: "address", }, ], outputs: [], stateMutability: "nonpayable", }, { type: "function", name: "stakeRegistry", inputs: [], outputs: [ { name: "", type: "address", internalType: "address", }, ], stateMutability: "view", }, { type: "function", name: "taskCompleted", inputs: [ { name: "completedTask", type: "tuple", internalType: "struct IReclaimServiceManager.CompletedTask", components: [ { name: "task", type: "tuple", internalType: "struct IReclaimServiceManager.Task", components: [ { name: "request", type: "tuple", internalType: "struct IReclaimServiceManager.ClaimRequest", components: [ { name: "provider", type: "string", internalType: "string", }, { name: "claimUserId", type: "bytes32", internalType: "bytes32", }, { name: "claimHash", type: "bytes32", internalType: "bytes32", }, { name: "requestedAt", type: "uint32", internalType: "uint32", }, { name: "owner", type: "address", internalType: "address", }, ], }, { name: "createdAt", type: "uint32", internalType: "uint32", }, { name: "expiresAt", type: "uint32", internalType: "uint32", }, { name: "minimumSignatures", type: "uint8", internalType: "uint8", }, { name: "operators", type: "tuple[]", internalType: "struct IReclaimServiceManager.Operator[]", components: [ { name: "addr", type: "address", internalType: "address", }, { name: "url", type: "string", internalType: "string", }, ], }, { name: "feePaid", type: "uint256", internalType: "uint256", }, ], }, { name: "signatures", type: "bytes[]", internalType: "bytes[]", }, ], }, { name: "referenceTaskIndex", type: "uint32", internalType: "uint32", }, ], outputs: [], stateMutability: "nonpayable", }, { type: "function", name: "taskCreationMetadata", inputs: [], outputs: [ { name: "maxTaskLifetimeS", type: "uint32", internalType: "uint32", }, { name: "minSignaturesPerTask", type: "uint8", internalType: "uint8", }, { name: "maxTaskCreationDelayS", type: "uint32", internalType: "uint32", }, ], stateMutability: "view", }, { type: "function", name: "transferOwnership", inputs: [ { name: "newOwner", type: "address", internalType: "address", }, ], outputs: [], stateMutability: "nonpayable", }, { type: "function", name: "unpause", inputs: [ { name: "newPausedStatus", type: "uint256", internalType: "uint256", }, ], outputs: [], stateMutability: "nonpayable", }, { type: "function", name: "updateAVSMetadataURI", inputs: [ { name: "_metadataURI", type: "string", internalType: "string", }, ], outputs: [], stateMutability: "nonpayable", }, { type: "function", name: "updateOperatorMetadata", inputs: [ { name: "metadata", type: "tuple", internalType: "struct IReclaimServiceManager.OperatorMetadata", components: [ { name: "addr", type: "address", internalType: "address", }, { name: "url", type: "string", internalType: "string", }, ], }, ], outputs: [], stateMutability: "nonpayable", }, { type: "function", name: "updateTaskCreationMetadata", inputs: [ { name: "newMetadata", type: "tuple", internalType: "struct IReclaimServiceManager.TaskCreationMetadata", components: [ { name: "maxTaskLifetimeS", type: "uint32", internalType: "uint32", }, { name: "minSignaturesPerTask", type: "uint8", internalType: "uint8", }, { name: "maxTaskCreationDelayS", type: "uint32", internalType: "uint32", }, ], }, ], outputs: [], stateMutability: "nonpayable", }, { type: "function", name: "whitelistAddressAsOperator", inputs: [ { name: "operator", type: "address", internalType: "address", }, { name: "isWhitelisted", type: "bool", internalType: "bool", }, ], outputs: [], stateMutability: "nonpayable", }, { type: "function", name: "whitelistedOperators", inputs: [ { name: "", type: "uint256", internalType: "uint256", }, ], outputs: [ { name: "", type: "address", internalType: "address", }, ], stateMutability: "view", }, { type: "event", name: "Initialized", inputs: [ { name: "version", type: "uint8", indexed: false, internalType: "uint8", }, ], anonymous: false, }, { type: "event", name: "NewTaskCreated", inputs: [ { name: "taskIndex", type: "uint32", indexed: true, internalType: "uint32", }, { name: "task", type: "tuple", indexed: false, internalType: "struct IReclaimServiceManager.Task", components: [ { name: "request", type: "tuple", internalType: "struct IReclaimServiceManager.ClaimRequest", components: [ { name: "provider", type: "string", internalType: "string", }, { name: "claimUserId", type: "bytes32", internalType: "bytes32", }, { name: "claimHash", type: "bytes32", internalType: "bytes32", }, { name: "requestedAt", type: "uint32", internalType: "uint32", }, { name: "owner", type: "address", internalType: "address", }, ], }, { name: "createdAt", type: "uint32", internalType: "uint32", }, { name: "expiresAt", type: "uint32", internalType: "uint32", }, { name: "minimumSignatures", type: "uint8", internalType: "uint8", }, { name: "operators", type: "tuple[]", internalType: "struct IReclaimServiceManager.Operator[]", components: [ { name: "addr", type: "address", internalType: "address", }, { name: "url", type: "string", internalType: "string", }, ], }, { name: "feePaid", type: "uint256", internalType: "uint256", }, ], }, ], anonymous: false, }, { type: "event", name: "OwnershipTransferred", inputs: [ { name: "previousOwner", type: "address", indexed: true, internalType: "address", }, { name: "newOwner", type: "address", indexed: true, internalType: "address", }, ], anonymous: false, }, { type: "event", name: "Paused", inputs: [ { name: "account", type: "address", indexed: true, internalType: "address", }, { name: "newPausedStatus", type: "uint256", indexed: false, internalType: "uint256", }, ], anonymous: false, }, { type: "event", name: "PauserRegistrySet", inputs: [ { name: "pauserRegistry", type: "address", indexed: false, internalType: "contract IPauserRegistry", }, { name: "newPauserRegistry", type: "address", indexed: false, internalType: "contract IPauserRegistry", }, ], anonymous: false, }, { type: "event", name: "TaskCompleted", inputs: [ { name: "taskIndex", type: "uint32", indexed: true, internalType: "uint32", }, { name: "task", type: "tuple", indexed: false, internalType: "struct IReclaimServiceManager.CompletedTask", components: [ { name: "task", type: "tuple", internalType: "struct IReclaimServiceManager.Task", components: [ { name: "request", type: "tuple", internalType: "struct IReclaimServiceManager.ClaimRequest", components: [ { name: "provider", type: "string", internalType: "string", }, { name: "claimUserId", type: "bytes32", internalType: "bytes32", }, { name: "claimHash", type: "bytes32", internalType: "bytes32", }, { name: "requestedAt", type: "uint32", internalType: "uint32", }, { name: "owner", type: "address", internalType: "address", }, ], }, { name: "createdAt", type: "uint32", internalType: "uint32", }, { name: "expiresAt", type: "uint32", internalType: "uint32", }, { name: "minimumSignatures", type: "uint8", internalType: "uint8", }, { name: "operators", type: "tuple[]", internalType: "struct IReclaimServiceManager.Operator[]", components: [ { name: "addr", type: "address", internalType: "address", }, { name: "url", type: "string", internalType: "string", }, ], }, { name: "feePaid", type: "uint256", internalType: "uint256", }, ], }, { name: "signatures", type: "bytes[]", internalType: "bytes[]", }, ], }, ], anonymous: false, }, { type: "event", name: "Unpaused", inputs: [ { name: "account", type: "address", indexed: true, internalType: "address", }, { name: "newPausedStatus", type: "uint256", indexed: false, internalType: "uint256", }, ], anonymous: false, }, ]; const _bytecode = "0x61010060405234801561001157600080fd5b50604051614c04380380614c0483398101604081905261003091610146565b6001600160a01b0380841660a052808316608052600060c081905290821660e052839083908361005e61006a565b50505050505050610189565b600054610100900460ff16156100d65760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015610128576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b80516001600160a01b038116811461014157600080fd5b919050565b60008060006060848603121561015b57600080fd5b6101648461012a565b92506101726020850161012a565b91506101806040850161012a565b90509250925092565b60805160a05160c05160e0516149f561020f600039600061214c015260008181611ec30152611f990152600081816103ce015281816123930152818161250d015261257d0152600081816103a7015281816107e2015281816111cd015281816114dd01528181611960015281816119d10152818161200401526129d901526149f56000f3fe608060405234801561001057600080fd5b506004361061021c5760003560e01c8063715018a611610125578063a98fb355116100ad578063d5dba76d1161007c578063d5dba76d14610514578063e481af9d14610527578063f289a7fb1461052f578063f2fde38b14610582578063fabc1cbc1461059557600080fd5b8063a98fb355146104bb578063aa5b9cad146104ce578063abd3b6bd146104e1578063b224b9791461050157600080fd5b806394bb371b116100f457806394bb371b146104415780639926ee7d14610461578063a3524f9514610474578063a364f4da14610487578063a551c1b81461049a57600080fd5b8063715018a6146103f0578063886f1195146103f85780638b00ce7c1461040b5780638da5cb5b1461043057600080fd5b80632e8da829116101a85780635c975abb116101775780635c975abb14610374578063630868dc1461037c57806366d382031461038f57806368304835146103a25780636b3aa72e146103c957600080fd5b80632e8da8291461031657806333cfb7b714610329578063595c6a67146103495780635ac86ab71461035157600080fd5b80631b445516116101ef5780631b4455161461028c5780631be785ac1461029f5780631ee3ca10146102b257806324d7806c146102c55780632d89f6fc146102e857600080fd5b806310d67a2f14610221578063136439dd1461023657806314bfd6d01461024957806316bd83c314610279575b600080fd5b61023461022f36600461349a565b6105a8565b005b6102346102443660046134b7565b610664565b61025c6102573660046134b7565b6107a3565b6040516001600160a01b0390911681526020015b60405180910390f35b610234610287366004613674565b6107cd565b61023461029a3660046136a8565b610b35565b6102346102ad36600461372b565b610b4b565b6102346102c0366004613789565b610c44565b6102d86102d336600461349a565b610d03565b6040519015158152602001610270565b6103086102f63660046137d9565b60cb6020526000908152604090205481565b604051908152602001610270565b6102d861032436600461349a565b610d8c565b61033c61033736600461349a565b610df9565b60405161027091906137f4565b610234610e0a565b6102d861035f366004613840565b609854600160ff9092169190911b9081161490565b609854610308565b61025c61038a3660046134b7565b610ed1565b61023461039d36600461349a565b610ee1565b61025c7f000000000000000000000000000000000000000000000000000000000000000081565b61025c7f000000000000000000000000000000000000000000000000000000000000000081565b61023461106c565b60975461025c906001600160a01b031681565b60c95461041b9063ffffffff1681565b60405163ffffffff9091168152602001610270565b6033546001600160a01b031661025c565b61045461044f36600461349a565b611080565b60405161027091906138d2565b61023461046f3660046138e5565b6111c2565b610234610482366004613b4a565b611269565b61023461049536600461349a565b6114d2565b6104ad6104a83660046134b7565b611523565b604051610270929190613c94565b6102346104c9366004613cb8565b6115e5565b61025c6104dc366004613cec565b611613565b6104f46104ef366004613d53565b61164a565b6040516102709190613d87565b61023461050f366004613cec565b611673565b6102d861052236600461349a565b61193c565b61033c611a5c565b60ca546105599063ffffffff8082169160ff64010000000082041691650100000000009091041683565b6040805163ffffffff948516815260ff9093166020840152921691810191909152606001610270565b61023461059036600461349a565b611a6b565b6102346105a33660046134b7565b611ae1565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061f9190613d9a565b6001600160a01b0316336001600160a01b0316146106585760405162461bcd60e51b815260040161064f90613db7565b60405180910390fd5b61066181611c3d565b50565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d09190613e01565b6106ec5760405162461bcd60e51b815260040161064f90613e1e565b609854818116146107655760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161064f565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60cd81815481106107b357600080fd5b6000918252602090912001546001600160a01b0316905081565b60405163ec7fbb3160e01b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ec7fbb3190602401602060405180830381865afa158015610831573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108559190613e01565b15156001146108a65760405162461bcd60e51b815260206004820152601b60248201527f4f70657261746f72206d757374206265207468652063616c6c65720000000000604482015260640161064f565b80516001600160a01b0316331461090e5760405162461bcd60e51b815260206004820152602660248201527f4d657461646174612061646472657373206d757374206d61746368207468652060448201526531b0b63632b960d11b606482015260840161064f565b6020810151511580156109f35760005b60ce548110156109b55782600001516001600160a01b031660ce828154811061094957610949613e66565b60009182526020909120600290910201546001600160a01b0316036109ad5760ce818154811061097b5761097b613e66565b60009182526020822060029091020180546001600160a01b0319168155906109a66001830182613437565b5050505050565b60010161091e565b5060405162461bcd60e51b815260206004820152601260248201527113dc195c985d1bdc881b9bdd08199bdd5b9960721b604482015260640161064f565b60005b60ce54811015610aa85782600001516001600160a01b031660ce8281548110610a2157610a21613e66565b60009182526020909120600290910201546001600160a01b031603610aa0578260ce8281548110610a5457610a54613e66565b600091825260209182902083516002929092020180546001600160a01b0319166001600160a01b03909216919091178155908201516001820190610a989082613f02565b505050505050565b6001016109f6565b5060ce805460018101825560009190915282517fd36cd1c74ef8d7326d8021b776c18fb5a5724b7f7bc93c2f42e43e10ef27d12a600290920291820180546001600160a01b0319166001600160a01b03909216919091178155602084015184927fd36cd1c74ef8d7326d8021b776c18fb5a5724b7f7bc93c2f42e43e10ef27d12b01906109a69082613f02565b610b3d611d34565b610b478282611d8e565b5050565b610b5433610d03565b610b705760405162461bcd60e51b815260040161064f90613fc0565b8015610bc75760cc80546001810182556000919091527f47197230e1e4b29fc0bd84d7d78966c0925452aff72a2a121538b102457e9ebe0180546001600160a01b0384166001600160a01b03199091161790555050565b60005b60cc548110156109b557826001600160a01b031660cc8281548110610bf157610bf1613e66565b6000918252602090912001546001600160a01b031603610c3c5760cc8181548110610c1e57610c1e613e66565b600091825260209091200180546001600160a01b0319169055505050565b600101610bca565b610c4d33610d03565b610c695760405162461bcd60e51b815260040161064f90613fc0565b805163ffffffff1615610c9257805160ca805463ffffffff191663ffffffff9092169190911790555b602081015160ff1615610cc557602081015160ca805460ff9092166401000000000264ff00000000199092169190911790555b604081015163ffffffff1615610661576040015160ca805463ffffffff909216650100000000000268ffffffff000000000019909216919091179055565b6000610d176033546001600160a01b031690565b6001600160a01b03163303610d2e57506001919050565b60005b60cd54811015610d8357826001600160a01b031660cd8281548110610d5857610d58613e66565b6000918252602090912001546001600160a01b031603610d7b5750600192915050565b600101610d31565b50600092915050565b6000610d9782610d03565b15610da457506001919050565b60005b60cc54811015610d8357826001600160a01b031660cc8281548110610dce57610dce613e66565b6000918252602090912001546001600160a01b031603610df15750600192915050565b600101610da7565b6060610e0482611ffe565b92915050565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610e52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e769190613e01565b610e925760405162461bcd60e51b815260040161064f90613e1e565b600019609881905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60cc81815481106107b357600080fd5b600054610100900460ff1615808015610f015750600054600160ff909116105b80610f1b5750303b158015610f1b575060005460ff166001145b610f7e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161064f565b6000805460ff191660011790558015610fa1576000805461ff0019166101001790555b60408051606081018252610708815260016020820181905261012c919092015260ca805468ffffffffffffffffff191666012c010000070817905560cd805491820181556000527f83978b4c69c48dd978ab43fe30f077615294f938fb7f936d9eb340e51ea7db2e0180546001600160a01b0319166001600160a01b0384161790558015610b47576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b611074611d34565b61107e600061232a565b565b60408051808201909152600081526060602082015260005b60ce548110156109b557826001600160a01b031660ce82815481106110bf576110bf613e66565b60009182526020909120600290910201546001600160a01b0316036111ba5760ce81815481106110f1576110f1613e66565b60009182526020918290206040805180820190915260029092020180546001600160a01b03168252600181018054929391929184019161113090613e7c565b80601f016020809104026020016040519081016040528092919081815260200182805461115c90613e7c565b80156111a95780601f1061117e576101008083540402835291602001916111a9565b820191906000526020600020905b81548152906001019060200180831161118c57829003601f168201915b505050505081525050915050919050565b600101611098565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461120a5760405162461bcd60e51b815260040161064f90613fed565b61121382610d8c565b61125f5760405162461bcd60e51b815260206004820152601860248201527f4f70657261746f72206e6f742077686974656c69737465640000000000000000604482015260640161064f565b610b47828261237c565b63ffffffff8116600090815260cb6020908152604091829020548451925190926112959290910161416d565b604051602081830303815290604052805190602001201461131e5760405162461bcd60e51b815260206004820152603d60248201527f737570706c696564207461736b20646f6573206e6f74206d617463682074686560448201527f206f6e65207265636f7264656420696e2074686520636f6e7472616374000000606482015260840161064f565b81516040015163ffffffff42811691161161136e5760405162461bcd60e51b815260206004820152601060248201526f15185cdac81a185cc8195e1c1a5c995960821b604482015260640161064f565b6040805160c0810182528351518201519181019182528351516080908101516001600160a01b03166060830152845160209081015163ffffffff1682840152600160a08401529282528285015192820192909252835190910151516000906001600160401b038111156113e3576113e36134d0565b60405190808252806020026020018201604052801561140c578160200160208202803683370190505b50905060005b81518110156114715784516080015180518290811061143357611433613e66565b60200260200101516000015182828151811061145157611451613e66565b6001600160a01b0390921660209283029190910190910152600101611412565b5061147c82826123ca565b63ffffffff8316600081815260cb602052604080822091909155517fa5be567caa88ff11b6da2cf017f9cefffcafa24111a9ecbf0b0bc476944f0f09906114c4908790614180565b60405180910390a250505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461151a5760405162461bcd60e51b815260040161064f90613fed565b610661816124ee565b60ce818154811061153357600080fd5b6000918252602090912060029091020180546001820180546001600160a01b0390921693509061156290613e7c565b80601f016020809104026020016040519081016040528092919081815260200182805461158e90613e7c565b80156115db5780601f106115b0576101008083540402835291602001916115db565b820191906000526020600020905b8154815290600101906020018083116115be57829003601f168201915b5050505050905082565b6115ee33610d03565b61160a5760405162461bcd60e51b815260040161064f90613fc0565b61066181612566565b600080836040516020016116279190614205565b604051602081830303815290604052905061164281846125b2565b949350505050565b60608160405160200161165d9190614205565b6040516020818303038152906040529050919050565b60808201516001600160a01b031633146117395760008260405160200161169a9190614205565b604051602081830303815290604052905060006116b782846125b2565b905083608001516001600160a01b0316816001600160a01b0316146117365760405162461bcd60e51b815260206004820152602f60248201527f5369676e6572206f6620726571756573745369676e6174757265206973206e6f60448201526e3a103932b8bab2b9ba1737bbb732b960891b606482015260840161064f565b50505b60006117498360600151426125f3565b60ca5490915063ffffffff65010000000000909104811690821611156117b15760405162461bcd60e51b815260206004820152601e60248201527f526571756573742074696d657374616d7020746f6f2066617220617761790000604482015260640161064f565b6040805161016081018252606060c08201819052600060e08301819052610100830181905261012083018190526101408301819052928201839052808201839052608082015260a081019190915283815263ffffffff4281166020830181905260ca5461181f92169061422e565b63ffffffff1660408281019190915260ca54640100000000900460ff1660608301525160009061185390839060200161416d565b60408051808303601f19018152919052805160209091012060ca5490915061188690640100000000900460ff1682612628565b608083015260405161189c90839060200161416d565b60408051601f19818403018152828252805160209182012060c9805463ffffffff908116600090815260cb90945293909220555416907f7738d1b30deac7824a0580de02efde3bb766c7b7b5ea79da34869ebd887cebf3906118ff90859061416d565b60405180910390a260c95461191b9063ffffffff16600161422e565b60c9805463ffffffff191663ffffffff929092169190911790555050505050565b6040516398ec1ac960e01b81526001600160a01b03828116600483015260009182917f000000000000000000000000000000000000000000000000000000000000000016906398ec1ac990602401602060405180830381865afa1580156119a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119cb919061424a565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166340bf2fb76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a51919061424a565b909110159392505050565b6060611a666129d3565b905090565b611a73611d34565b6001600160a01b038116611ad85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161064f565b6106618161232a565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b589190613d9a565b6001600160a01b0316336001600160a01b031614611b885760405162461bcd60e51b815260040161064f90613db7565b609854198119609854191614611c065760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161064f565b609881905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610798565b6001600160a01b038116611ccb5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161064f565b609754604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6