UNPKG

witnet-solidity-bridge

Version:

Witnet Solidity Bridge contracts for EVM-compatible chains

1,526 lines 135 kB
{ "_format": "hh3-artifact-1", "contractName": "WitOracleRadonRegistryUpgradableZkSync", "sourceName": "contracts/core/upgradable/WitOracleRadonRegistryUpgradableZkSync.sol", "abi": [ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "InvalidInitialization", "type": "error" }, { "inputs": [], "name": "NotInitializing", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "inputs": [], "name": "ReentrancyGuardReentrantCall", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint64", "name": "version", "type": "uint64" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bytes32", "name": "hash", "type": "bytes32" } ], "name": "NewRadonReducer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "Witnet.RadonHash", "name": "radonHash", "type": "bytes32" } ], "name": "NewRadonRequest", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bytes32", "name": "hash", "type": "bytes32" } ], "name": "NewRadonRetrieval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferStarted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "baseAddr", "type": "address" }, { "indexed": true, "internalType": "bytes32", "name": "baseCodehash", "type": "bytes32" }, { "indexed": false, "internalType": "string", "name": "versionTag", "type": "string" } ], "name": "Upgraded", "type": "event" }, { "stateMutability": "nonpayable", "type": "fallback" }, { "inputs": [], "name": "acceptOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "base", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "Witnet.RadonHash", "name": "_radHash", "type": "bytes32" } ], "name": "bytecodeOf", "outputs": [ { "internalType": "bytes", "name": "", "type": "bytes" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes", "name": "_radBytecode", "type": "bytes" }, { "components": [ { "internalType": "uint16", "name": "witResultMaxSize", "type": "uint16" }, { "internalType": "uint16", "name": "witCommitteeSize", "type": "uint16" }, { "internalType": "uint64", "name": "witUnitaryReward", "type": "uint64" } ], "internalType": "struct Witnet.QuerySLA", "name": "_sla", "type": "tuple" } ], "name": "bytecodeOf", "outputs": [ { "internalType": "bytes", "name": "", "type": "bytes" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "Witnet.RadonHash", "name": "_radHash", "type": "bytes32" }, { "components": [ { "internalType": "uint16", "name": "witResultMaxSize", "type": "uint16" }, { "internalType": "uint16", "name": "witCommitteeSize", "type": "uint16" }, { "internalType": "uint64", "name": "witUnitaryReward", "type": "uint64" } ], "internalType": "struct Witnet.QuerySLA", "name": "_sla", "type": "tuple" } ], "name": "bytecodeOf", "outputs": [ { "internalType": "bytes", "name": "", "type": "bytes" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "class", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "codehash", "outputs": [ { "internalType": "bytes32", "name": "_codehash", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "deployer", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes", "name": "_radBytecode", "type": "bytes" } ], "name": "hashOf", "outputs": [ { "internalType": "Witnet.RadonHash", "name": "", "type": "bytes32" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "bytes", "name": "_initData", "type": "bytes" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "isUpgradable", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_from", "type": "address" } ], "name": "isUpgradableFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "_radonReducerHash", "type": "bytes32" } ], "name": "isVerifiedRadonReducer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "Witnet.RadonHash", "name": "_radonRequestHash", "type": "bytes32" } ], "name": "isVerifiedRadonRequest", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "_radonRetrievalHash", "type": "bytes32" } ], "name": "isVerifiedRadonRetrieval", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "_hash", "type": "bytes32" } ], "name": "lookupRadonReducer", "outputs": [ { "components": [ { "internalType": "enum Witnet.RadonReduceOpcodes", "name": "opcode", "type": "uint8" }, { "components": [ { "internalType": "enum Witnet.RadonFilterOpcodes", "name": "opcode", "type": "uint8" }, { "internalType": "bytes", "name": "cborArgs", "type": "bytes" } ], "internalType": "struct Witnet.RadonFilter[]", "name": "filters", "type": "tuple[]" } ], "internalType": "struct Witnet.RadonReducer", "name": "_reducer", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "Witnet.RadonHash", "name": "_radHash", "type": "bytes32" } ], "name": "lookupRadonRequest", "outputs": [ { "components": [ { "components": [ { "internalType": "uint8", "name": "argsCount", "type": "uint8" }, { "internalType": "enum Witnet.RadonRetrievalMethods", "name": "method", "type": "uint8" }, { "internalType": "enum Witnet.RadonDataTypes", "name": "dataType", "type": "uint8" }, { "internalType": "string", "name": "url", "type": "string" }, { "internalType": "string", "name": "body", "type": "string" }, { "internalType": "string[2][]", "name": "headers", "type": "string[2][]" }, { "internalType": "bytes", "name": "radonScript", "type": "bytes" } ], "internalType": "struct Witnet.RadonRetrieval[]", "name": "retrieve", "type": "tuple[]" }, { "components": [ { "internalType": "enum Witnet.RadonReduceOpcodes", "name": "opcode", "type": "uint8" }, { "components": [ { "internalType": "enum Witnet.RadonFilterOpcodes", "name": "opcode", "type": "uint8" }, { "internalType": "bytes", "name": "cborArgs", "type": "bytes" } ], "internalType": "struct Witnet.RadonFilter[]", "name": "filters", "type": "tuple[]" } ], "internalType": "struct Witnet.RadonReducer", "name": "aggregate", "type": "tuple" }, { "components": [ { "internalType": "enum Witnet.RadonReduceOpcodes", "name": "opcode", "type": "uint8" }, { "components": [ { "internalType": "enum Witnet.RadonFilterOpcodes", "name": "opcode", "type": "uint8" }, { "internalType": "bytes", "name": "cborArgs", "type": "bytes" } ], "internalType": "struct Witnet.RadonFilter[]", "name": "filters", "type": "tuple[]" } ], "internalType": "struct Witnet.RadonReducer", "name": "tally", "type": "tuple" } ], "internalType": "struct Witnet.RadonRequest", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "Witnet.RadonHash", "name": "_radHash", "type": "bytes32" } ], "name": "lookupRadonRequestAggregator", "outputs": [ { "components": [ { "internalType": "enum Witnet.RadonReduceOpcodes", "name": "opcode", "type": "uint8" }, { "components": [ { "internalType": "enum Witnet.RadonFilterOpcodes", "name": "opcode", "type": "uint8" }, { "internalType": "bytes", "name": "cborArgs", "type": "bytes" } ], "internalType": "struct Witnet.RadonFilter[]", "name": "filters", "type": "tuple[]" } ], "internalType": "struct Witnet.RadonReducer", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "Witnet.RadonHash", "name": "_radHash", "type": "bytes32" } ], "name": "lookupRadonRequestBytecode", "outputs": [ { "internalType": "bytes", "name": "", "type": "bytes" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "Witnet.RadonHash", "name": "_radHash", "type": "bytes32" } ], "name": "lookupRadonRequestCrowdAttestationTally", "outputs": [ { "components": [ { "internalType": "enum Witnet.RadonReduceOpcodes", "name": "opcode", "type": "uint8" }, { "components": [ { "internalType": "enum Witnet.RadonFilterOpcodes", "name": "opcode", "type": "uint8" }, { "internalType": "bytes", "name": "cborArgs", "type": "bytes" } ], "internalType": "struct Witnet.RadonFilter[]", "name": "filters", "type": "tuple[]" } ], "internalType": "struct Witnet.RadonReducer", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "Witnet.RadonHash", "name": "_radHash", "type": "bytes32" } ], "name": "lookupRadonRequestResultDataType", "outputs": [ { "internalType": "enum Witnet.RadonDataTypes", "name": "_resultDataType", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "_radHash", "type": "bytes32" } ], "name": "lookupRadonRequestResultMaxSize", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "Witnet.RadonHash", "name": "_radHash", "type": "bytes32" } ], "name": "lookupRadonRequestRetrievals", "outputs": [ { "components": [ { "internalType": "uint8", "name": "argsCount", "type": "uint8" }, { "internalType": "enum Witnet.RadonRetrievalMethods", "name": "method", "type": "uint8" }, { "internalType": "enum Witnet.RadonDataTypes", "name": "dataType", "type": "uint8" }, { "internalType": "string", "name": "url", "type": "string" }, { "internalType": "string", "name": "body", "type": "string" }, { "internalType": "string[2][]", "name": "headers", "type": "string[2][]" }, { "internalType": "bytes", "name": "radonScript", "type": "bytes" } ], "internalType": "struct Witnet.RadonRetrieval[]", "name": "_retrievals", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "Witnet.RadonHash", "name": "_radHash", "type": "bytes32" } ], "name": "lookupRadonRequestRetrievalsAggregator", "outputs": [ { "components": [ { "internalType": "enum Witnet.RadonReduceOpcodes", "name": "opcode", "type": "uint8" }, { "components": [ { "internalType": "enum Witnet.RadonFilterOpcodes", "name": "opcode", "type": "uint8" }, { "internalType": "bytes", "name": "cborArgs", "type": "bytes" } ], "internalType": "struct Witnet.RadonFilter[]", "name": "filters", "type": "tuple[]" } ], "internalType": "struct Witnet.RadonReducer", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "Witnet.RadonHash", "name": "_radHash", "type": "bytes32" } ], "name": "lookupRadonRequestRetrievalsCount", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "_radHash", "type": "bytes32" } ], "name": "lookupRadonRequestSources", "outputs": [ { "internalType": "bytes32[]", "name": "", "type": "bytes32[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "_radHash", "type": "bytes32" } ], "name": "lookupRadonRequestSourcesCount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "Witnet.RadonHash", "name": "_radHash", "type": "bytes32" } ], "name": "lookupRadonRequestTally", "outputs": [ { "components": [ { "internalType": "enum Witnet.RadonReduceOpcodes", "name": "opcode", "type": "uint8" }, { "components": [ { "internalType": "enum Witnet.RadonFilterOpcodes", "name": "opcode", "type": "uint8" }, { "internalType": "bytes", "name": "cborArgs", "type": "bytes" } ], "internalType": "struct Witnet.RadonFilter[]", "name": "filters", "type": "tuple[]" } ], "internalType": "struct Witnet.RadonReducer", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "_hash", "type": "bytes32" } ], "name": "lookupRadonRetrieval", "outputs": [ { "components": [ { "internalType": "uint8", "name": "argsCount", "type": "uint8" }, { "internalType": "enum Witnet.RadonRetrievalMethods", "name": "method", "type": "uint8" }, { "internalType": "enum Witnet.RadonDataTypes", "name": "dataType", "type": "uint8" }, { "internalType": "string", "name": "url", "type": "string" }, { "internalType": "string", "name": "body", "type": "string" }, { "internalType": "string[2][]", "name": "headers", "type": "string[2][]" }, { "internalType": "bytes", "name": "radonScript", "type": "bytes" } ], "internalType": "struct Witnet.RadonRetrieval", "name": "_source", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "_hash", "type": "bytes32" } ], "name": "lookupRadonRetrievalArgsCount", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "_hash", "type": "bytes32" } ], "name": "lookupRadonRetrievalResultDataType", "outputs": [ { "internalType": "enum Witnet.RadonDataTypes", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pendingOwner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "proxiableUUID", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "specs", "outputs": [ { "internalType": "bytes4", "name": "", "type": "bytes4" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "enum Witnet.RadonReduceOpcodes", "name": "opcode", "type": "uint8" }, { "components": [ { "internalType": "enum Witnet.RadonFilterOpcodes", "name": "opcode", "type": "uint8" }, { "internalType": "bytes", "name": "cborArgs", "type": "bytes" } ], "internalType": "struct Witnet.RadonFilter[]", "name": "filters", "type": "tuple[]" } ], "internalType": "struct Witnet.RadonReducer", "name": "_reducer", "type": "tuple" } ], "name": "verifyRadonReducer", "outputs": [ { "internalType": "bytes32", "name": "hash", "type": "bytes32" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32[]", "name": "_retrieveHashes", "type": "bytes32[]" }, { "internalType": "bytes32", "name": "_aggregateReducerHash", "type": "bytes32" }, { "internalType": "bytes32", "name": "_tallyReducerHash", "type": "bytes32" } ], "name": "verifyRadonRequest", "outputs": [ { "internalType": "Witnet.RadonHash", "name": "radHash", "type": "bytes32" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32[]", "name": "_retrieveHashes", "type": "bytes32[]" }, { "components": [ { "internalType": "enum Witnet.RadonReduceOpcodes", "name": "opcode", "type": "uint8" }, { "components": [ { "internalType": "enum Witnet.RadonFilterOpcodes", "name": "opcode", "type": "uint8" }, { "internalType": "bytes", "name": "cborArgs", "type": "bytes" } ], "internalType": "struct Witnet.RadonFilter[]", "name": "filters", "type": "tuple[]" } ], "internalType": "struct Witnet.RadonReducer", "name": "_aggregateReducer", "type": "tuple" }, { "components": [ { "internalType": "enum Witnet.RadonReduceOpcodes", "name": "opcode", "type": "uint8" }, { "components": [ { "internalType": "enum Witnet.RadonFilterOpcodes", "name": "opcode", "type": "uint8" }, { "internalType": "bytes", "name": "cborArgs", "type": "bytes" } ], "internalType": "struct Witnet.RadonFilter[]", "name": "filters", "type": "tuple[]" } ], "internalType": "struct Witnet.RadonReducer", "name": "_tallyReducer", "type": "tuple" } ], "name": "verifyRadonRequest", "outputs": [ { "internalType": "Witnet.RadonHash", "name": "radHash", "type": "bytes32" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "modalRetrieveHash", "type": "bytes32" }, { "internalType": "string[]", "name": "modalArgs", "type": "string[]" }, { "internalType": "string[]", "name": "modalUrls", "type": "string[]" }, { "internalType": "bytes32", "name": "dataSourcesAggregatorHash", "type": "bytes32" }, { "internalType": "bytes32", "name": "crowdAttestationTallyHash", "type": "bytes32" } ], "name": "verifyRadonRequest", "outputs": [ { "internalType": "Witnet.RadonHash", "name": "_radHash", "type": "bytes32" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32[]", "name": "_retrieveHashes", "type": "bytes32[]" }, { "internalType": "bytes32", "name": "_aggregateReducerHash", "type": "bytes32" }, { "internalType": "bytes32", "name": "_tallyReducerHash", "type": "bytes32" }, { "internalType": "uint16", "name": "", "type": "uint16" }, { "internalType": "string[][]", "name": "_retrieveArgsValues", "type": "string[][]" } ], "name": "verifyRadonRequest", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32[]", "name": "_retrieveHashes", "type": "bytes32[]" }, { "internalType": "string[][]", "name": "_retrieveArgsValues", "type": "string[][]" }, { "components": [ { "internalType": "enum Witnet.RadonReduceOpcodes", "name": "opcode", "type": "uint8" }, { "components": [ { "internalType": "enum Witnet.RadonFilterOpcodes", "name": "opcode", "type": "uint8" }, { "internalType": "bytes", "name": "cborArgs", "type": "bytes" } ], "internalType": "struct Witnet.RadonFilter[]", "name": "filters", "type": "tuple[]" } ], "internalType": "struct Witnet.RadonReducer", "name": "_aggregateReducer", "type": "tuple" }, { "components": [ { "internalType": "enum Witnet.RadonReduceOpcodes", "name": "opcode", "type": "uint8" }, { "components": [ { "internalType": "enum Witnet.RadonFilterOpcodes", "name": "opcode", "type": "uint8" }, { "internalType": "bytes", "name": "cborArgs", "type": "bytes" } ], "internalType": "struct Witnet.RadonFilter[]", "name": "filters", "type": "tuple[]" } ], "internalType": "struct Witnet.RadonReducer", "name": "_tallyReducer", "type": "tuple" } ], "name": "verifyRadonRequest", "outputs": [ { "internalType": "Witnet.RadonHash", "name": "", "type": "bytes32" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32[]", "name": "_retrieveHashes", "type": "bytes32[]" }, { "internalType": "string[][]", "name": "_retrieveArgsValues", "type": "string[][]" }, { "internalType": "bytes32", "name": "_aggregateReducerHash", "type": "bytes32" }, { "internalType": "bytes32", "name": "_tallyReducerHash", "type": "bytes32" } ], "name": "verifyRadonRequest", "outputs": [ { "internalType": "Witnet.RadonHash", "name": "", "type": "bytes32" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "enum Witnet.RadonRetrievalMethods", "name": "_requestMethod", "type": "uint8" }, { "internalType": "string", "name": "_requestURL", "type": "string" }, { "internalType": "string", "name": "_requestBody", "type": "string" }, { "internalType": "string[2][]", "name": "_requestHeaders", "type": "string[2][]" }, { "internalType": "bytes", "name": "_requestRadonScript", "type": "bytes" } ], "name": "verifyRadonRetrieval", "outputs": [ { "internalType": "bytes32", "name": "hash", "type": "bytes32" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "version", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ], "bytecode": "0x6101406040523361010052348015610015575f5ffd5b507f7a6b73796e632d6578706572696d656e74616c000000000000000000000000006001818180826040518060400160405280601d81526020017f696f2e7769746e65742e70726f786961626c652e62797465636f6465730000008152508233306100846100f860201b60201c565b80546001600160a01b0319166001600160a01b0392831617905581166100c357604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100cc8161011c565b5030608052151560c052600160025560e091909152805160209091012061012052506101e29350505050565b7f673359bdfd0124f9962355e7aed2d07d989b0d4bc4cbe2c94c295e0f81427dec90565b7f673359bdfd0124f9962355e7aed2d07d989b0d4bc4cbe2c94c295e0f81427dee80546001600160a01b03191690555f61016a5f516020615df35f395f51905f52546001600160a01b031690565b9050806001600160a01b0316826001600160a01b0316146101de575f516020615df35f395f51905f5280546001600160a01b0319166001600160a01b0384811691821790925560405190918316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35b5050565b60805160a05160c05160e0516101005161012051615bb16102425f395f6104ea01525f6108cc01525f6110ad01525f818161051a015261110901525f50505f81816104a10152818161080401528181610eb50152610f260152615bb15ff3fe608060405260043610610280575f3560e01c8063977e01571161014e578063adb7c3f7116100c0578063db4c6b2111610079578063db4c6b21146108ee578063dbc218ef1461090d578063dcf3f9721461092c578063e30c39781461094b578063f0bd92d914610974578063f2fde38b146109a0576102b4565b8063adb7c3f714610829578063b4ab01a51461084a578063b73cb31314610869578063bff852fa14610888578063c61fa8931461089c578063d5f39488146108bb576102b4565b80639f34df19116101125780639f34df191461074e578063a0490fa01461076d578063a0e553361461078c578063a4a7cecd146107ab578063a83e942c146107ca578063a9e954b9146107f6576102b4565b8063977e0157146106a657806398cb04f4146106c55780639a7af84e146106e45780639dd48757146107035780639eb3ab1f1461072f576102b4565b806354fd4d50116101f257806376b78a06116101ab57806376b78a06146105e257806377c112591461061457806379ba5097146106405780637f412e23146106545780638a227764146106735780638da5cb5b14610692576102b4565b806354fd4d501461053e57806368ec07a4146105525780636b58960a146105715780636bd04634146105905780636ea3ebe4146105af578063715018a6146105ce576102b4565b8063439fab9111610244578063439fab911461042957806348223a0b146104485780634c729104146104675780635001f3b51461049357806352d1902d146104d95780635479d9401461050c576102b4565b80632229e86e1461033f57806323f2e3ea146103735780632ebf5d5c146103a45780633679f864146103d057806340c5da1d146103fc576102b4565b366102b4576102b26040518060400160405280600c81526020016b6e6f207472616e736665727360a01b8152506109bf565b005b3480156102bf575f5ffd5b506102cd5f3560f81c6109d9565b6102dd60ff5f3560f01c166109d9565b6102ed60ff5f3560e81c166109d9565b6102fd60ff5f3560e01c166109d9565b6040516020016103109493929190614291565b60408051601f198184030181529082905262461bcd60e51b82526103369160040161431d565b60405180910390fd5b34801561034a575f5ffd5b5061035e61035936600461432f565b610ac5565b60405190151581526020015b60405180910390f35b34801561037e575f5ffd5b5061039261038d36600461432f565b610b00565b60405160ff909116815260200161036a565b3480156103af575f5ffd5b506103c36103be36600461432f565b610b26565b60405161036a919061431d565b3480156103db575f5ffd5b506103ef6103ea36600461432f565b610ba1565b60405161036a9190614414565b348015610407575f5ffd5b5061041b61041636600461446d565b610d7d565b60405190815260200161036a565b348015610434575f5ffd5b506102b261044336600461459f565b610ddf565b348015610453575f5ffd5b506103ef61046236600461432f565b610fc8565b348015610472575f5ffd5b5061048661048136600461432f565b611018565b60405161036a91906145e8565b34801561049e575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b03909116815260200161036a565b3480156104e4575f5ffd5b5061041b7f000000000000000000000000000000000000000000000000000000000000000081565b348015610517575f5ffd5b507f000000000000000000000000000000000000000000000000000000000000000061035e565b348015610549575f5ffd5b506103c36110a6565b34801561055d575f5ffd5b5061035e61056c36600461432f565b6110d6565b34801561057c575f5ffd5b5061035e61058b36600461460a565b611106565b34801561059b575f5ffd5b5061041b6105aa366004614635565b611152565b3480156105ba575f5ffd5b5061041b6105c936600461432f565b6111c1565b3480156105d9575f5ffd5b506102b26111e3565b3480156105ed575f5ffd5b506106016105fc36600461432f565b6111f6565b60405161ffff909116815260200161036a565b34801561061f575f5ffd5b5061063361062e36600461432f565b61120d565b60405161036a9190614841565b34801561064b575f5ffd5b506102b261162c565b34801561065f575f5ffd5b5061041b61066e36600461499b565b6116c0565b34801561067e575f5ffd5b506103c361068d36600461432f565b6117ff565b34801561069d575f5ffd5b506104c16118b6565b3480156106b1575f5ffd5b5061035e6106c036600461432f565b6118e4565b3480156106d0575f5ffd5b5061041b6106df3660046149cc565b611921565b3480156106ef575f5ffd5b506103c36106fe366004614a9e565b6120fc565b34801561070e575f5ffd5b5061072261071d36600461432f565b612232565b60405161036a9190614aee565b34801561073a575f5ffd5b5061041b610749366004614bdb565b6125fe565b348015610759575f5ffd5b506103ef61076836600461432f565b61292d565b348015610778575f5ffd5b5061041b610787366004614ca5565b61299c565b348015610797575f5ffd5b506104866107a636600461432f565b6129e2565b3480156107b6575f5ffd5b5061041b6107c5366004614cf4565b612a12565b3480156107d5575f5ffd5b506107e96107e436600461432f565b612a35565b60405161036a9190614d84565b348015610801575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000003f61041b565b348015610834575f5ffd5b5060405163a614fef760e01b815260200161036a565b348015610855575f5ffd5b5061039261086436600461432f565b612aa4565b348015610874575f5ffd5b5061041b610883366004614dc6565b612ace565b348015610893575f5ffd5b506103c3612af7565b3480156108a7575f5ffd5b506103ef6108b636600461432f565b612b17565b3480156108c6575f5ffd5b506104c17f000000000000000000000000000000000000000000000000000000000000000081565b3480156108f9575f5ffd5b506103ef61090836600461432f565b612b6e565b348015610918575f5ffd5b5061041b610927366004614e84565b612bda565b348015610937575f5ffd5b506103c3610946366004614eff565b612bf1565b348015610956575f5ffd5b505f516020615b365f395f51905f52546001600160a01b03166104c1565b34801561097f575f5ffd5b5061099361098e36600461432f565b612d34565b60405161036a9190614f2a565b3480156109ab575f5ffd5b506102b26109ba36600461460a565b612d74565b6109c7612af7565b81604051602001610310929190614f80565b6040805160028082528183019092526060915f91906020820181803683370190505090505f610a09601085614fc8565b610a14906030614fe9565b90505f610a22601086615002565b610a2d906030614fe9565b905060398260ff161115610a4957610a46600783614fe9565b91505b60398160ff161115610a6357610a60600782614fe9565b90505b8160f81b835f81518110610a7957610a79615023565b60200101906001600160f81b03191690815f1a9053508060f81b83600181518110610aa657610aa6615023565b60200101906001600160f81b03191690815f1a90535091949350505050565b5f80610acf612de6565b5f848152600291909101602052604090205460ff16600b811115610af557610af5614346565b60ff16141592915050565b5f610b09612de6565b5f928352600701602052506040902054600160781b900460ff1690565b606081610b8f5f610b35612de6565b5f848152600691909101602052604090208054610b5190615037565b9050116040518060400160405280601781526020017f756e766572696669656420646174612072657175657374000000000000000000815250612e0a565b610b98836117ff565b91505b50919050565b604080518082019091525f815260606020820152610bbd612de6565b5f83815260029190910160205260409081902081518083019092528054829060ff16600b811115610bf057610bf0614346565b600b811115610c0157610c01614346565b815260200160018201805480602002602001604051908101604052809291908181526020015f905b82821015610d16575f8481526020902060408051808201909152600284029091018054829060ff166009811115610c6257610c62614346565b6009811115610c7357610c73614346565b8152602001600182018054610c8790615037565b80601f0160208091040260200160405190810160405280929190818152602001828054610cb390615037565b8015610cfe5780601f10610cd557610100808354040283529160200191610cfe565b820191905f5260205f20905b815481529060010190602001808311610ce157829003601f168201915b50505050508152505081526020019060010190610c29565b505050915250508051909150610d7890600b811115610d3757610d37614346565b60ff165f14156040518060400160405280601781526020017f756e766572696669656420646174612072656475636572000000000000000000815250612e0a565b919050565b5f610dd68585806001600160401b03811115610d9b57610d9b6144b9565b604051908082528060200260200182016040528015610dce57816020015b6060815260200190600190039081610db95790505b508686612e1c565b95945050505050565b5f610de86118b6565b90506001600160a01b038116610e1e5781806020019051810190610e0c91906150b6565b92509050610e1981613a53565b610e66565b336001600160a01b03821614610e665760405162461bcd60e51b815260206004820152600d60248201526c3737ba103a34329037bbb732b960991b6044820152606401610336565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbe5415801590610ed757507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbe547f00000000000000000000000000000000000000000000000000000000000000003f145b15610f245760405162461bcd60e51b815260206004820152601c60248201527f616c726561647920696e697469616c697a656420636f646568617368000000006044820152606401610336565b7f0000000000000000000000000000000000000000000000000000000000000000803f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbe55803f906001600160a01b0316610f7d6118b6565b6001600160a01b03167fe73e754121f0bad1327816970101955bfffdf53d270ac509d777c25be070d7f6610faf6110a6565b604051610fbc919061431d565b60405180910390a45050565b604080518082019091525f81526060602082015281610fe95f610b35612de6565b610b98610ff4612de6565b5f858152600791909101602052604090205460881b6001600160881b031916610ba1565b5f816110265f610b35612de6565b61102e612de6565b5f8481526007919091016020526040902054600160f81b900460ff16915081601381111561105e5761105e614346565b60ff165f03610b9b57610b98611072612de6565b6004015f8581526020019081526020015f206004015f8154811061109857611098615023565b905f5260205f2001546129e2565b60606110d17f0000000000000000000000000000000000000000000000000000000000000000613b02565b905090565b5f5f6110e0612de6565b5f8481526006919091016020526040902080546110fc90615037565b9050119050919050565b5f7f0000000000000000000000000000000000000000000000000000000000000000801561114c5750816001600160a01b03166111416118b6565b6001600160a01b0316145b92915050565b5f610dd68585806001600160401b03811115611170576111706144b9565b6040519080825280602002602001820160405280156111a357816020015b606081526020019060019003908161118e5790505b506111b061066e88615103565b6111bc61066e88615103565b612e1c565b5f816111cf5f610b35612de6565b6111d883613baa565b600401549392505050565b6111eb613bc5565b6111f45f613a53565b565b5f816112045f610b35612de6565b50602092915050565b60608161121c5f610b35612de6565b61122583613baa565b600401546001600160401b03811115611240576112406144b9565b60405190808252806020026020018201604052801561127957816020015b6112666140bd565b81526020019060019003908161125e5790505b5091505f5b82518110156116255761128f612de6565b6003015f61129c86613baa565b60040183815481106112b0576112b0615023565b5f91825260208083209091015483528281019390935260409182019020815160e08101909252805460ff808216845292939192918401916101009091041660048111156112ff576112ff614346565b600481111561131057611310614346565b8152815460209091019062010000900460ff16601381111561133457611334614346565b601381111561134557611345614346565b815260200160018201805461135990615037565b80601f016020809104026020016040519081016040528092919081815260200182805461138590615037565b80156113d05780601f106113a7576101008083540402835291602001916113d0565b820191905f5260205f20905b8154815290600101906020018083116113b357829003601f168201915b505050505081526020016002820180546113e990615037565b80601f016020809104026020016040519081016040528092919081815260200182805461141590615037565b80156114605780601f1061143757610100808354040283529160200191611460565b820191905f5260205f20905b81548152906001019060200180831161144357829003601f168201915b5050505050815260200160038201805480602002602001604051908101604052809291908181526020015f905b82821015611568575f84815260208120604080518082019091529160028086029092019190835b828210156115555783820180546114ca90615037565b80601f01602080910402602001604051908101604052809291908181526020018280546114f690615037565b80156115415780601f1061151857610100808354040283529160200191611541565b820191905f5260205f20905b81548152906001019060200180831161152457829003601f168201915b5050505050815260200190600101906114b4565b505050508152602001906001019061148d565b50505050815260200160048201805461158090615037565b80601f01602080910402602001604051908101604052809291908181526020018280546115ac90615037565b80156115f75780601f106115ce576101008083540402835291602001916115f7565b820191905f5260205f20905b8154815290600101906020018083116115da57829003601f168201915b50505050508152505083828151811061161257611612615023565b602090810291909101015260010161127e565b5050919050565b338061164c5f516020615b365f395f51905f52546001600160a01b031690565b6001600160a01b0316146116b45760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610336565b6116bd81613a53565b50565b5f816040516020016116d29190614414565b604051602081830303815290604052805190602001206001600160881b03191690505f6116fd612de6565b5f83815260029190910160205260409020805490915060ff16600b81111561172757611727614346565b60ff165f03610b9b5760405163daf4b0ef60e01b815273__$837d11b4e2c5af92796e708387f786b6cb$__9063daf4b0ef9061176790869060040161510e565b5f6040518083038186803b15801561177d575f5ffd5b505af415801561178f573d5f5f3e3d5ffd5b50508451835490925083915060ff1916600183600b8111156117b3576117b3614346565b02179055506117c6818460200151613bf7565b6040518281527f320dd9c6faaa443dc32e80fbf49