{
  "_format": "hh3-artifact-1",
  "contractName": "WitOracleTrustlessUpgradableDefault",
  "sourceName": "contracts/core/upgradable/WitOracleTrustlessUpgradableDefault.sol",
  "abi": [
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint32",
              "name": "reportResultGasBase",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "reportResultWithCallbackGasBase",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "reportResultWithCallbackRevertGasBase",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "sstoreFromZeroGas",
              "type": "uint32"
            }
          ],
          "internalType": "struct WitOracleBaseQueriable.EvmImmutables",
          "name": "_immutables",
          "type": "tuple"
        },
        {
          "internalType": "uint256",
          "name": "_queryAwaitingBlocks",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_queryReportingStake",
          "type": "uint256"
        },
        {
          "internalType": "contract WitOracleRadonRegistry",
          "name": "_registry",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "_versionTag",
          "type": "bytes32"
        },
        {
          "internalType": "bool",
          "name": "_upgradable",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "InvalidDataReport",
      "type": "error"
    },
    {
      "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": "Witnet.QueryId",
          "name": "queryId",
          "type": "uint64"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "reason",
          "type": "string"
        }
      ],
      "name": "BatchQueryError",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Burnt",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint64",
          "name": "version",
          "type": "uint64"
        }
      ],
      "name": "Initialized",
      "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": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Received",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint32",
              "name": "index",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "prevIndex",
              "type": "uint32"
            },
            {
              "internalType": "bytes24",
              "name": "prevRoot",
              "type": "bytes24"
            },
            {
              "internalType": "bytes16",
              "name": "ddrTalliesMerkleRoot",
              "type": "bytes16"
            },
            {
              "internalType": "bytes16",
              "name": "droTalliesMerkleRoot",
              "type": "bytes16"
            },
            {
              "internalType": "uint256[4]",
              "name": "nextCommitteeAggPubkey",
              "type": "uint256[4]"
            }
          ],
          "indexed": false,
          "internalType": "struct Witnet.Beacon",
          "name": "head",
          "type": "tuple"
        }
      ],
      "name": "Rollup",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Slashed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Staked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Unstaked",
      "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"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "evmRequester",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "evmGasPrice",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "evmReward",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "Witnet.QueryId",
          "name": "queryId",
          "type": "uint64"
        },
        {
          "indexed": false,
          "internalType": "Witnet.RadonHash",
          "name": "radonHash",
          "type": "bytes32"
        },
        {
          "components": [
            {
              "internalType": "uint16",
              "name": "witResultMaxSize",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "witCommitteeSize",
              "type": "uint16"
            },
            {
              "internalType": "uint64",
              "name": "witUnitaryReward",
              "type": "uint64"
            }
          ],
          "indexed": false,
          "internalType": "struct Witnet.QuerySLA",
          "name": "radonParams",
          "type": "tuple"
        }
      ],
      "name": "WitOracleQuery",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "Witnet.QueryId",
          "name": "queryId",
          "type": "uint64"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "evmGasPrice",
          "type": "uint256"
        }
      ],
      "name": "WitOracleQueryReport",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "Witnet.QueryId",
          "name": "queryId",
          "type": "uint64"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "evmConsumer",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "evmGasPrice",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "evmCallbackGas",
          "type": "uint256"
        }
      ],
      "name": "WitOracleQueryReportDelivery",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "Witnet.QueryId",
          "name": "queryId",
          "type": "uint64"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "evmDisputer",
          "type": "address"
        }
      ],
      "name": "WitOracleQueryReportDispute",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "Witnet.QueryId",
          "name": "queryId",
          "type": "uint64"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "evmSender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "evmGasPrice",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "evmReward",
          "type": "uint256"
        }
      ],
      "name": "WitOracleQueryUpgrade",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "evmOrigin",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "evmConsumer",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "evmReporter",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "Witnet.TransactionHash",
          "name": "witDrTxHash",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "Witnet.RadonHash",
          "name": "queryRadHash",
          "type": "bytes32"
        },
        {
          "components": [
            {
              "internalType": "uint16",
              "name": "witResultMaxSize",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "witCommitteeSize",
              "type": "uint16"
            },
            {
              "internalType": "uint64",
              "name": "witUnitaryReward",
              "type": "uint64"
            }
          ],
          "indexed": false,
          "internalType": "struct Witnet.QuerySLA",
          "name": "queryParams",
          "type": "tuple"
        },
        {
          "indexed": false,
          "internalType": "Witnet.Timestamp",
          "name": "resultTimestamp",
          "type": "uint64"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "resultCborBytes",
          "type": "bytes"
        }
      ],
      "name": "WitOracleReport",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "Witnet.QueryId",
          "name": "queryId",
          "type": "uint64"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "evmConsumer",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "evmGasPrice",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "evmCallbackActualGas",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "evmCallbackRevertReason",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "resultCborBytes",
          "type": "bytes"
        }
      ],
      "name": "WitOracleResportDeliveryFailed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Withdrawn",
      "type": "event"
    },
    {
      "stateMutability": "nonpayable",
      "type": "fallback"
    },
    {
      "inputs": [],
      "name": "QUERY_AWAITING_BLOCKS",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "QUERY_REPORTING_STAKE",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "acceptOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tenant",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "base",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "channel",
      "outputs": [
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "Witnet.QueryId",
          "name": "_queryId",
          "type": "uint64"
        }
      ],
      "name": "claimQueryReward",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "Witnet.QueryId[]",
          "name": "_queryIds",
          "type": "uint64[]"
        }
      ],
      "name": "claimQueryRewardBatch",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_evmTotalReward",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "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": [
        {
          "internalType": "address",
          "name": "tenant",
          "type": "address"
        }
      ],
      "name": "collateralOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "currency",
      "outputs": [
        {
          "internalType": "contract IERC20",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_queryId",
          "type": "uint256"
        }
      ],
      "name": "deleteQuery",
      "outputs": [
        {
          "internalType": "Witnet.QueryEvmReward",
          "name": "",
          "type": "uint72"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "deployer",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "Witnet.Timestamp",
          "name": "timestamp",
          "type": "uint64"
        }
      ],
      "name": "determineBeaconIndexFromTimestamp",
      "outputs": [
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "Witnet.Timestamp",
          "name": "timestamp",
          "type": "uint64"
        }
      ],
      "name": "determineEpochFromTimestamp",
      "outputs": [
        {
          "internalType": "Witnet.BlockNumber",
          "name": "",
          "type": "uint64"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "Witnet.QueryId",
          "name": "_queryId",
          "type": "uint64"
        }
      ],
      "name": "disputeQueryResponse",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_evmGasPrice",
          "type": "uint256"
        }
      ],
      "name": "estimateBaseFee",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_evmGasPrice",
          "type": "uint256"
        },
        {
          "internalType": "uint24",
          "name": "_evmCallbackGasLimit",
          "type": "uint24"
        }
      ],
      "name": "estimateBaseFeeWithCallback",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_evmGasPrice",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_evmWitPrice",
          "type": "uint256"
        },
        {
          "components": [
            {
              "internalType": "uint16",
              "name": "witResultMaxSize",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "witCommitteeSize",
              "type": "uint16"
            },
            {
              "internalType": "uint64",
              "name": "witUnitaryReward",
              "type": "uint64"
            }
          ],
          "internalType": "struct Witnet.QuerySLA",
          "name": "_querySLA",
          "type": "tuple"
        }
      ],
      "name": "estimateExtraFee",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "index",
          "type": "uint32"
        }
      ],
      "name": "getBeaconByIndex",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint32",
              "name": "index",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "prevIndex",
              "type": "uint32"
            },
            {
              "internalType": "bytes24",
              "name": "prevRoot",
              "type": "bytes24"
            },
            {
              "internalType": "bytes16",
              "name": "ddrTalliesMerkleRoot",
              "type": "bytes16"
            },
            {
              "internalType": "bytes16",
              "name": "droTalliesMerkleRoot",
              "type": "bytes16"
            },
            {
              "internalType": "uint256[4]",
              "name": "nextCommitteeAggPubkey",
              "type": "uint256[4]"
            }
          ],
          "internalType": "struct Witnet.Beacon",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getGenesisBeacon",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint32",
              "name": "index",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "prevIndex",
              "type": "uint32"
            },
            {
              "internalType": "bytes24",
              "name": "prevRoot",
              "type": "bytes24"
            },
            {
              "internalType": "bytes16",
              "name": "ddrTalliesMerkleRoot",
              "type": "bytes16"
            },
            {
              "internalType": "bytes16",
              "name": "droTalliesMerkleRoot",
              "type": "bytes16"
            },
            {
              "internalType": "uint256[4]",
              "name": "nextCommitteeAggPubkey",
              "type": "uint256[4]"
            }
          ],
          "internalType": "struct Witnet.Beacon",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getLastKnownBeacon",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint32",
              "name": "index",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "prevIndex",
              "type": "uint32"
            },
            {
              "internalType": "bytes24",
              "name": "prevRoot",
              "type": "bytes24"
            },
            {
              "internalType": "bytes16",
              "name": "ddrTalliesMerkleRoot",
              "type": "bytes16"
            },
            {
              "internalType": "bytes16",
              "name": "droTalliesMerkleRoot",
              "type": "bytes16"
            },
            {
              "internalType": "uint256[4]",
              "name": "nextCommitteeAggPubkey",
              "type": "uint256[4]"
            }
          ],
          "internalType": "struct Witnet.Beacon",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getLastKnownBeaconIndex",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getNextQueryId",
      "outputs": [
        {
          "internalType": "Witnet.QueryId",
          "name": "",
          "type": "uint64"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "Witnet.QueryId",
          "name": "_queryId",
          "type": "uint64"
        }
      ],
      "name": "getQuery",
      "outputs": [
        {
          "components": [
            {
              "components": [
                {
                  "internalType": "address",
                  "name": "requester",
                  "type": "address"
                },
                {
                  "internalType": "uint24",
                  "name": "callbackGas",
                  "type": "uint24"
                },
                {
                  "internalType": "bytes",
                  "name": "radonBytecode",
                  "type": "bytes"
                },
                {
                  "internalType": "Witnet.RadonHash",
                  "name": "radonHash",
                  "type": "bytes32"
                }
              ],
              "internalType": "struct Witnet.QueryRequest",
              "name": "request",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "address",
                  "name": "reporter",
                  "type": "address"
                },
                {
                  "internalType": "Witnet.Timestamp",
                  "name": "resultTimestamp",
                  "type": "uint64"
                },
                {
                  "internalType": "Witnet.TransactionHash",
                  "name": "resultDrTxHash",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes",
                  "name": "resultCborBytes",
                  "type": "bytes"
                },
                {
                  "internalType": "address",
                  "name": "disputer",
                  "type": "address"
                }
              ],
              "internalType": "struct Witnet.QueryResponse",
              "name": "response",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint16",
                  "name": "witResultMaxSize",
                  "type": "uint16"
                },
                {
                  "internalType": "uint16",
                  "name": "witCommitteeSize",
                  "type": "uint16"
                },
                {
                  "internalType": "uint64",
                  "name": "witUnitaryReward",
                  "type": "uint64"
                }
              ],
              "internalType": "struct Witnet.QuerySLA",
              "name": "slaParams",
              "type": "tuple"
            },
            {
              "internalType": "Witnet.QueryUUID",
              "name": "uuid",
              "type": "bytes15"
            },
            {
              "internalType": "Witnet.QueryEvmReward",
              "name": "reward",
              "type": "uint72"
            },
            {
              "internalType": "Witnet.BlockNumber",
              "name": "checkpoint",
              "type": "uint64"
            }
          ],
          "internalType": "struct Witnet.Query",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_queryId",
          "type": "uint256"
        }
      ],
      "name": "getQueryEvmReward",
      "outputs": [
        {
          "internalType": "Witnet.QueryEvmReward",
          "name": "",
          "type": "uint72"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "Witnet.QueryId",
          "name": "_queryId",
          "type": "uint64"
        }
      ],
      "name": "getQueryRequest",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "requester",
              "type": "address"
            },
            {
              "internalType": "uint24",
              "name": "callbackGas",
              "type": "uint24"
            },
            {
              "internalType": "bytes",
              "name": "radonBytecode",
              "type": "bytes"
            },
            {
              "internalType": "Witnet.RadonHash",
              "name": "radonHash",
              "type": "bytes32"
            }
          ],
          "internalType": "struct Witnet.QueryRequest",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "Witnet.QueryId",
          "name": "_queryId",
          "type": "uint64"
        }
      ],
      "name": "getQueryResponse",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "reporter",
              "type": "address"
            },
            {
              "internalType": "Witnet.Timestamp",
              "name": "resultTimestamp",
              "type": "uint64"
            },
            {
              "internalType": "Witnet.TransactionHash",
              "name": "resultDrTxHash",
              "type": "bytes32"
            },
            {
              "internalType": "bytes",
              "name": "resultCborBytes",
              "type": "bytes"
            },
            {
              "internalType": "address",
              "name": "disputer",
              "type": "address"
            }
          ],
          "internalType": "struct Witnet.QueryResponse",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_queryId",
          "type": "uint256"
        }
      ],
      "name": "getQueryResult",
      "outputs": [
        {
          "components": [
            {
              "internalType": "enum Witnet.ResultStatus",
              "name": "status",
              "type": "uint8"
            },
            {
              "internalType": "enum Witnet.RadonDataTypes",
              "name": "dataType",
              "type": "uint8"
            },
            {
              "internalType": "Witnet.TransactionHash",
              "name": "drTxHash",
              "type": "bytes32"
            },
            {
              "internalType": "uint256",
              "name": "finality",
              "type": "uint256"
            },
            {
              "internalType": "Witnet.Timestamp",
              "name": "timestamp",
              "type": "uint64"
            },
            {
              "components": [
                {
                  "components": [
                    {
                      "internalType": "bytes",
                      "name": "data",
                      "type": "bytes"
                    },
                    {
                      "internalType": "uint256",
                      "name": "cursor",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct WitnetBuffer.Buffer",
                  "name": "buffer",
                  "type": "tuple"
                },
                {
                  "internalType": "uint8",
                  "name": "initialByte",
                  "type": "uint8"
                },
                {
                  "internalType": "uint8",
                  "name": "majorType",
                  "type": "uint8"
                },
                {
                  "internalType": "uint8",
                  "name": "additionalInformation",
                  "type": "uint8"
                },
                {
                  "internalType": "uint64",
                  "name": "len",
                  "type": "uint64"
                },
                {
                  "internalType": "uint64",
                  "name": "tag",
                  "type": "uint64"
                }
              ],
              "internalType": "struct WitnetCBOR.CBOR",
              "name": "value",
              "type": "tuple"
            }
          ],
          "internalType": "struct Witnet.DataResult",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_queryId",
          "type": "uint256"
        }
      ],
      "name": "getQueryResultStatus",
      "outputs": [
        {
          "internalType": "enum Witnet.ResultStatus",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_queryId",
          "type": "uint256"
        }
      ],
      "name": "getQueryResultStatusDescription",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_queryId",
          "type": "uint256"
        }
      ],
      "name": "getQueryResultTrails",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "queryUUID",
          "type": "bytes32"
        },
        {
          "internalType": "Witnet.TransactionHash",
          "name": "resultDrTxHash",
          "type": "bytes32"
        },
        {
          "internalType": "Witnet.Timestamp",
          "name": "resultTimestamp",
          "type": "uint64"
        },
        {
          "internalType": "uint256",
          "name": "resultFinalityBlock",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_queryId",
          "type": "uint256"
        }
      ],
      "name": "getQueryStatus",
      "outputs": [
        {
          "internalType": "enum Witnet.QueryStatus",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "_queryIds",
          "type": "uint256[]"
        }
      ],
      "name": "getQueryStatusBatch",
      "outputs": [
        {
          "internalType": "enum Witnet.QueryStatus[]",
          "name": "_status",
          "type": "uint8[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_queryId",
          "type": "uint256"
        }
      ],
      "name": "getQueryStatusString",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "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": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "Witnet.TransactionHash",
              "name": "witDrTxHash",
              "type": "bytes32"
            },
            {
              "internalType": "Witnet.RadonHash",
              "name": "queryRadHash",
              "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": "queryParams",
              "type": "tuple"
            },
            {
              "internalType": "Witnet.Timestamp",
              "name": "resultTimestamp",
              "type": "uint64"
            },
            {
              "internalType": "bytes",
              "name": "resultCborBytes",
              "type": "bytes"
            }
          ],
          "internalType": "struct Witnet.DataPushReport",
          "name": "_dataPushReport",
          "type": "tuple"
        },
        {
          "internalType": "bytes",
          "name": "_proof",
          "type": "bytes"
        }
      ],
      "name": "parseDataReport",
      "outputs": [
        {
          "components": [
            {
              "internalType": "enum Witnet.ResultStatus",
              "name": "status",
              "type": "uint8"
            },
            {
              "internalType": "enum Witnet.RadonDataTypes",
              "name": "dataType",
              "type": "uint8"
            },
            {
              "internalType": "Witnet.TransactionHash",
              "name": "drTxHash",
              "type": "bytes32"
            },
            {
              "internalType": "uint256",
              "name": "finality",
              "type": "uint256"
            },
            {
              "internalType": "Witnet.Timestamp",
              "name": "timestamp",
              "type": "uint64"
            },
            {
              "components": [
                {
                  "components": [
                    {
                      "internalType": "bytes",
                      "name": "data",
                      "type": "bytes"
                    },
                    {
                      "internalType": "uint256",
                      "name": "cursor",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct WitnetBuffer.Buffer",
                  "name": "buffer",
                  "type": "tuple"
                },
                {
                  "internalType": "uint8",
                  "name": "initialByte",
                  "type": "uint8"
                },
                {
                  "internalType": "uint8",
                  "name": "majorType",
                  "type": "uint8"
                },
                {
                  "internalType": "uint8",
                  "name": "additionalInformation",
                  "type": "uint8"
                },
                {
                  "internalType": "uint64",
                  "name": "len",
                  "type": "uint64"
                },
                {
                  "internalType": "uint64",
                  "name": "tag",
                  "type": "uint64"
                }
              ],
              "internalType": "struct WitnetCBOR.CBOR",
              "name": "value",
              "type": "tuple"
            }
          ],
          "internalType": "struct Witnet.DataResult",
          "name": "",
          "type": "tuple"
        }
      ],
      "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": [
        {
          "components": [
            {
              "internalType": "Witnet.TransactionHash",
              "name": "witDrTxHash",
              "type": "bytes32"
            },
            {
              "internalType": "Witnet.RadonHash",
              "name": "queryRadHash",
              "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": "queryParams",
              "type": "tuple"
            },
            {
              "internalType": "Witnet.Timestamp",
              "name": "resultTimestamp",
              "type": "uint64"
            },
            {
              "internalType": "bytes",
              "name": "resultCborBytes",
              "type": "bytes"
            }
          ],
          "internalType": "struct Witnet.DataPushReport",
          "name": "_dataPushReport",
          "type": "tuple"
        },
        {
          "internalType": "bytes",
          "name": "_proof",
          "type": "bytes"
        }
      ],
      "name": "pushDataReport",
      "outputs": [
        {
          "components": [
            {
              "internalType": "enum Witnet.ResultStatus",
              "name": "status",
              "type": "uint8"
            },
            {
              "internalType": "enum Witnet.RadonDataTypes",
              "name": "dataType",
              "type": "uint8"
            },
            {
              "internalType": "Witnet.TransactionHash",
              "name": "drTxHash",
              "type": "bytes32"
            },
            {
              "internalType": "uint256",
              "name": "finality",
              "type": "uint256"
            },
            {
              "internalType": "Witnet.Timestamp",
              "name": "timestamp",
              "type": "uint64"
            },
            {
              "components": [
                {
                  "components": [
                    {
                      "internalType": "bytes",
                      "name": "data",
                      "type": "bytes"
                    },
                    {
                      "internalType": "uint256",
                      "name": "cursor",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct WitnetBuffer.Buffer",
                  "name": "buffer",
                  "type": "tuple"
                },
                {
                  "internalType": "uint8",
                  "name": "initialByte",
                  "type": "uint8"
                },
                {
                  "internalType": "uint8",
                  "name": "majorType",
                  "type": "uint8"
                },
                {
                  "internalType": "uint8",
                  "name": "additionalInformation",
                  "type": "uint8"
                },
                {
                  "internalType": "uint64",
                  "name": "len",
                  "type": "uint64"
                },
                {
                  "internalType": "uint64",
                  "name": "tag",
                  "type": "uint64"
                }
              ],
              "internalType": "struct WitnetCBOR.CBOR",
              "name": "value",
              "type": "tuple"
            }
          ],
          "internalType": "struct Witnet.DataResult",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "Witnet.RadonHash",
          "name": "_queryRAD",
          "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": "_querySLA",
          "type": "tuple"
        }
      ],
      "name": "queryData",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_queryId",
          "type": "uint256"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "Witnet.RadonHash",
          "name": "_queryRAD",
          "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": "_querySLA",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "address",
              "name": "consumer",
              "type": "address"
            },
            {
              "internalType": "uint24",
              "name": "gasLimit",
              "type": "uint24"
            }
          ],
          "internalType": "struct Witnet.QueryCallback",
          "name": "_queryCallback",
          "type": "tuple"
        }
      ],
      "name": "queryDataWithCallback",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_queryId",
          "type": "uint256"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "registry",
      "outputs": [
        {
          "internalType": "contract IWitOracleRadonRegistry",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "Witnet.QueryId",
              "name": "queryId",
              "type": "uint64"
            },
            {
              "internalType": "Witnet.QueryUUID",
              "name": "queryHash",
              "type": "bytes15"
            },
            {
              "internalType": "bytes",
              "name": "witDrRelayerSignature",
              "type": "bytes"
            },
            {
              "internalType": "Witnet.BlockNumber",
              "name": "witDrResultEpoch",
              "type": "uint64"
            },
            {
              "internalType": "bytes",
              "name": "witDrResultCborBytes",
              "type": "bytes"
            },
            {
              "internalType": "Witnet.TransactionHash",
              "name": "witDrTxHash",
              "type": "bytes32"
            }
          ],
          "internalType": "struct Witnet.DataPullReport",
          "name": "_responseReport",
          "type": "tuple"
        }
      ],
      "name": "reportQueryResponse",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "Witnet.QueryId",
              "name": "queryId",
              "type": "uint64"
            },
            {
              "internalType": "Witnet.QueryUUID",
              "name": "queryHash",
              "type": "bytes15"
            },
            {
              "internalType": "bytes",
              "name": "witDrRelayerSignature",
              "type": "bytes"
            },
            {
              "internalType": "Witnet.BlockNumber",
              "name": "witDrResultEpoch",
              "type": "uint64"
            },
            {
              "internalType": "bytes",
              "name": "witDrResultCborBytes",
              "type": "bytes"
            },
            {
              "internalType": "Witnet.TransactionHash",
              "name": "witDrTxHash",
              "type": "bytes32"
            }
          ],
          "internalType": "struct Witnet.DataPullReport[]",
          "name": "_responseReports",
          "type": "tuple[]"
        }
      ],
      "name": "reportQueryResponseBatch",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_evmTotalReward",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "components": [
                {
                  "internalType": "uint32",
                  "name": "index",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "prevIndex",
                  "type": "uint32"
                },
                {
                  "internalType": "bytes24",
                  "name": "prevRoot",
                  "type": "bytes24"
                },
                {
                  "internalType": "bytes16",
                  "name": "ddrTalliesMerkleRoot",
                  "type": "bytes16"
                },
                {
                  "internalType": "bytes16",
                  "name": "droTalliesMerkleRoot",
                  "type": "bytes16"
                },
                {
                  "internalType": "uint256[4]",
                  "name": "nextCommitteeAggPubkey",
                  "type": "uint256[4]"
                }
              ],
              "internalType": "struct Witnet.Beacon",
              "name": "beacon",
              "type": "tuple"
            },
            {
              "internalType": "uint256[2]",
              "name": "committeeAggSignature",
              "type": "uint256[2]"
            },
            {
              "internalType": "uint256[4][]",
              "name": "committeeMissingPubkeys",
              "type": "uint256[4][]"
            }
          ],
          "internalType": "struct Witnet.FastForward[]",
          "name": "_witOracleRollup",
          "type": "tuple[]"
        }
      ],
      "name": "rollupBeacons",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint32",
              "name": "index",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "prevIndex",
              "type": "uint32"
            },
            {
              "internalType": "bytes24",
              "name": "prevRoot",
              "type": "bytes24"
            },
            {
              "internalType": "bytes16",
              "name": "ddrTalliesMerkleRoot",
              "type": "bytes16"
            },
            {
              "internalType": "bytes16",
              "name": "droTalliesMerkleRoot",
              "type": "bytes16"
            },
            {
              "internalType": "uint256[4]",
              "name": "nextCommitteeAggPubkey",
              "type": "uint256[4]"
            }
          ],
          "internalType": "struct Witnet.Beacon",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "components": [
                {
                  "internalType": "uint32",
                  "name": "index",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "prevIndex",
                  "type": "uint32"
                },
                {
                  "internalType": "bytes24",
                  "name": "prevRoot",
                  "type": "bytes24"
                },
                {
                  "internalType": "bytes16",
                  "name": "ddrTalliesMerkleRoot",
                  "type": "bytes16"
                },
                {
                  "internalType": "bytes16",
                  "name": "droTalliesMerkleRoot",
                  "type": "bytes16"
                },
                {
                  "internalType": "uint256[4]",
                  "name": "nextCommitteeAggPubkey",
                  "type": "uint256[4]"
                }
              ],
              "internalType": "struct Witnet.Beacon",
              "name": "beacon",
              "type": "tuple"
            },
            {
              "internalType": "uint256[2]",
              "name": "committeeAggSignature",
              "type": "uint256[2]"
            },
            {
              "internalType": "uint256[4][]",
              "name": "committeeMissingPubkeys",
              "type": "uint256[4][]"
            }
          ],
          "internalType": "struct Witnet.FastForward[]",
          "name": "_witOracleRollup",
          "type": "tuple[]"
        },
        {
          "components": [
            {
              "internalType": "Witnet.QueryId",
              "name": "queryId",
              "type": "uint64"
            },
            {
              "internalType": "Witnet.QueryUUID",
              "name": "queryHash",
              "type": "bytes15"
            },
            {
              "internalType": "bytes",
              "name": "witDrRelayerSignature",
              "type": "bytes"
            },
            {
              "internalType": "Witnet.BlockNumber",
              "name": "witDrResultEpoch",
              "type": "uint64"
            },
            {
              "internalType": "bytes",
              "name": "witDrResultCborBytes",
              "type": "bytes"
            },
            {
              "internalType": "Witnet.TransactionHash",
              "name": "witDrTxHash",
              "type": "bytes32"
            }
          ],
          "internalType": "struct Witnet.DataPullReport",
          "name": "_responseReport",
          "type": "tuple"
        },
        {
          "internalType": "bytes32[]",
          "name": "_queryResponseReportMerkleProof",
          "type": "bytes32[]"
        }
      ],
      "name": "rollupQueryResponseProof",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "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": [
        {
          "internalType": "uint256",
          "name": "_queryId",
          "type": "uint256"
        }
      ],
      "name": "upgradeQueryEvmReward",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "version",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "withdraw",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_withdrawn",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "stateMutability": "payable",
      "type": "receive"
    }
  ],
  "bytecode": "0x6102406040523361020052348015610015575f5ffd5b50604051615f6d380380615f6d8339810160408190526100349161059b565b818180826040518060400160405280601981526020017f696f2e7769746e65742e70726f786961626c652e626f6172640000000000000081525082338b8b8e8c5f806001600160a01b03166080816001600160a01b031681525050506100e15f826001600160a01b03163b116040518060400160405280601381526020017f696e6578697374656e742072656769737472790000000000000000000000000081525061042f60201b60201c565b6101a263a614fef760e01b6001600160e01b031916826001600160a01b031663adb7c3f76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610132573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610156919061066f565b6001600160e01b031916146040518060400160405280601481526020017f756e636f6d706c69616e7420726567697374727900000000000000000000000081525061042f60201b60201c565b6001600160a01b031660a052805163ffffffff90811660c052602080830151821660e0526040808401518316610100526060909301519091166101205281518083018352601881527f746f6f206d616e79206177616974696e6720626c6f636b7300000000000000009181019190915261021e9184109061042f565b6102655f82116040518060400160405280601381526020017f6e6f207265706f7274696e67207374616b653f0000000000000000000000000081525061042f60201b60201c565b6101408290526101608190526040805160c0810182525f80825260208083018281528385018381526060808601858152608080880187815289518083018b52888152808801899052808b0189905293840188905260a089019384529680527ff595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e10190955286517fc183f9983e4d9665af3c4426441c2490530d67a07a506de5a3030081c7e86fd680549551945190991c68010000000000000000026001600160401b0363ffffffff958616640100000000026001600160401b03199097169590921694909417949094179390931691909117865590519251821c600160801b029290911c919091177fc183f9983e4d9665af3c4426441c2490530d67a07a506de5a3030081c7e86fd755519091906103be907fc183f9983e4d9665af3c4426441c2490530d67a07a506de5a3030081c7e86fd890600461050c565b5050506001600160a01b03831691506103f3905057604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6103fc81610441565b50306101805215156101c05260016002556101e09190915280516020909101206102205250610712975050505050505050565b8161043d5761043d8161045d565b5050565b600180546001600160a01b031916905561045a8161049d565b50565b6104656104ec565b816040516020016104779291906106b4565b60408051601f198184030181529082905262461bcd60e51b82526103ea916004016106dd565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6060604051806060016040526023815280602001615f4a60239139905090565b826004810192821561053a579160200282015b8281111561053a57825182559160200191906001019061051f565b5061054692915061054a565b5090565b5b80821115610546575f815560010161054b565b805163ffffffff81168114610571575f5ffd5b919050565b80516001600160a01b0381168114610571575f5ffd5b80518015158114610571575f5ffd5b5f5f5f5f5f5f8688036101208112156105b2575f5ffd5b60808112156105bf575f5ffd5b50604051608081016001600160401b03811182821017156105ee57634e487b7160e01b5f52604160045260245ffd5b6040526105fa8861055e565b81526106086020890161055e565b60208201526106196040890161055e565b604082015261062a6060890161055e565b6060820152608088015160a08901519197509550935061064c60c08801610576565b60e08801519093509150610663610100880161058c565b90509295509295509295565b5f6020828403121561067f575f5ffd5b81516001600160e01b031981168114610696575f5ffd5b9392505050565b5f81518060208401855e5f93019283525090919050565b5f6106bf828561069d565b6101d160f51b81526106d4600282018561069d565b95945050505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e05161020051610220516156fc61084e5f395f6106e901525f610be801525f611d1701525f81816107380152611e7901525f50505f818161068101528181610ad40152818161173d015281816117ae015281816117f5015261181701525f8181610aa4015281816110d301528181611a1201528181611ba1015281816121970152818161250d01528181612d290152612dd001525f81816104bf015281816110b1015281816119ec01528181611b7b0152818161204201528181612171015281816124eb01528181612d030152612dae01525f8181610f50015281816113620152612a6901525f610f7c01525f8181610fbc015261100401525f61138e01525f61094c01525f610c3801526156fc5ff3fe608060405260043610610379575f3560e01c806379ba5097116101d0578063b783922b11610101578063d5f394881161009f578063f2fde38b1161006e578063f2fde38b14610c6d578063f91ffdb214610c8c578063fc140d7714610cab578063fe52e05f14610cca5761038a565b8063d5f3948814610bd7578063e30c397814610c0a578063e5a6b10f14610c27578063ec5946db14610c5a5761038a565b8063c805dd0f116100db578063c805dd0f14610b64578063ca7da98b14610b78578063d0a92a0814610ba4578063d4038ac614610bc35761038a565b8063b783922b14610b12578063bff852fa14610b31578063c258134814610b455761038a565b80638da5cb5b1161016e578063a667533f11610148578063a667533f14610a67578063a6ef08c014610a93578063a9e954b914610ac6578063adb7c3f714610af95761038a565b80638da5cb5b14610a1957806390602a9014610a35578063a58f680314610a545761038a565b80637c1fbda3116101aa5780637c1fbda31461099b578063838d44e2146109ba5780638bfabb4f146109d95780638cfcdea2146109ed5761038a565b806379ba5097146109275780637b1039991461093b5780637bbdb96e1461096e5761038a565b80635001f3b5116102aa57806359209b39116102485780636f07abcc116102225780636f07abcc1461081f5780636fdaab7e1461084b57806370a08231146108c0578063715018a6146109135761038a565b806359209b39146107b55780636b58960a146107e15780636d0d6a7e146108005761038a565b806353a5d58c1161028457806353a5d58c1461070b5780635479d9401461072a57806354fd4d5014610768578063581f5094146107895761038a565b80635001f3b51461067357806350127a96146106b957806352d1902d146106d85761038a565b806339a8653e116103175780633fa59576116102f15780633fa59576146105bb578063439fab911461060957806347ad9e69146106285780634cddf615146106475761038a565b806339a8653e146105755780633b3195b7146105945780633ccfd60b146105a75761038a565b80631105c863116103535780631105c863146104ae57806317d298d0146104e15780631aefb107146105005780631f08f481146105565761038a565b8063057600311461041557806305e742ef1461044a5780630f884886146104775761038a565b3661038a576103883334610cf3565b005b348015610395575f5ffd5b506103a35f3560f81c610d66565b6103b360ff5f3560f01c16610d66565b6103c360ff5f3560e81c16610d66565b6103d360ff5f3560e01c16610d66565b6040516020016103e6949392919061382d565b60408051601f198184030181529082905262461bcd60e51b825261040c916004016138c3565b60405180910390fd5b348015610420575f5ffd5b5061043461042f36600461391c565b610e52565b604051610441919061395a565b60405180910390f35b348015610455575f5ffd5b506104696104643660046139fb565b610f49565b604051908152602001610441565b348015610482575f5ffd5b50610496610491366004613a48565b611039565b6040516001600160401b039091168152602001610441565b3480156104b9575f5ffd5b506104697f000000000000000000000000000000000000000000000000000000000000000081565b3480156104ec575f5ffd5b506104966104fb366004613a48565b611043565b34801561050b575f5ffd5b5061046961051a366004613a77565b6001600160a01b03165f9081527ff595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e102602052604090206001015490565b348015610561575f5ffd5b5061046961057036600461391c565b61104d565b348015610580575f5ffd5b5061046961058f366004613a92565b61135c565b6104696105a2366004613bc3565b6113bc565b3480156105b2575f5ffd5b50610469611594565b3480156105c6575f5ffd5b506105da6105d5366004613a92565b611616565b604051610441949392919093845260208401929092526001600160401b03166040830152606082015260800190565b348015610614575f5ffd5b50610388610623366004613c5c565b611667565b348015610633575f5ffd5b50610434610642366004613cec565b61189b565b348015610652575f5ffd5b50610666610661366004613a92565b61195a565b6040516104419190613d30565b34801561067e575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b039091168152602001610441565b3480156106c4575f5ffd5b506104696106d3366004613a48565b6119ce565b3480156106e3575f5ffd5b506104697f000000000000000000000000000000000000000000000000000000000000000081565b348015610716575f5ffd5b5061046961072536600461391c565b611b09565b348015610735575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040519015158152602001610441565b348015610773575f5ffd5b5061077c611d10565b60405161044191906138c3565b348015610794575f5ffd5b506107a86107a336600461391c565b611d40565b6040516104419190613d4e565b3480156107c0575f5ffd5b506107d46107cf366004613a92565b611dfa565b6040516104419190613d98565b3480156107ec575f5ffd5b506107586107fb366004613a77565b611e76565b34801561080b575f5ffd5b506107d461081a366004613e84565b611eca565b34801561082a575f5ffd5b5061083e610839366004613a92565b612021565b6040516104419190613f1d565b348015610856575f5ffd5b506108a8610865366004613a92565b5f9081527ff595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e1846020526040902060090154600160781b90046001600160481b031690565b6040516001600160481b039091168152602001610441565b3480156108cb575f5ffd5b506104696108da366004613a77565b6001600160a01b03165f9081527ff595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e102602052604090205490565b34801561091e575f5ffd5b506103886120c4565b348015610932575f5ffd5b506103886120d7565b348015610946575f5ffd5b506106a17f000000000000000000000000000000000000000000000000000000000000000081565b348015610979575f5ffd5b50610982612151565b6040516001600160e01b03199091168152602001610441565b3480156109a6575f5ffd5b506108a86109b5366004613a92565b61215b565b3480156109c5575f5ffd5b5061077c6109d4366004613a92565b61223b565b3480156109e4575f5ffd5b506104346122bd565b3480156109f8575f5ffd5b50610a0c610a07366004613a48565b6123a6565b6040516104419190613fd4565b348015610a24575f5ffd5b505f546001600160a01b03166106a1565b348015610a40575f5ffd5b50610469610a4f3660046140a0565b6124b8565b610469610a623660046140d1565b612685565b348015610a72575f5ffd5b50610a86610a81366004613a48565b61275b565b60405161044191906140fc565b348015610a9e575f5ffd5b506104697f000000000000000000000000000000000000000000000000000000000000000081565b348015610ad1575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000003f610469565b348015610b04575f5ffd5b506304722eaf60e31b610982565b348015610b1d575f5ffd5b506107d4610b2c366004613e84565b61280d565b348015610b3c575f5ffd5b5061077c612863565b348015610b50575f5ffd5b5061077c610b5f366004613a92565b612883565b348015610b6f575f5ffd5b50610496612954565b348015610b83575f5ffd5b50610b97610b92366004613a48565b61298b565b604051610441919061410e565b348015610baf575f5ffd5b50610469610bbe366004614120565b612a30565b348015610bce575f5ffd5b50610434612ac2565b348015610be2575f5ffd5b506106a17f000000000000000000000000000000000000000000000000000000000000000081565b348015610c15575f5ffd5b506001546001600160a01b03166106a1565b348015610c32575f5ffd5b506106a17f000000000000000000000000000000000000000000000000000000000000000081565b610388610c68366004613a92565b612b1c565b348015610c78575f5ffd5b50610388610c87366004613a77565b612c75565b348015610c97575f5ffd5b50610469610ca6366004613a48565b612ce5565b348015610cb6575f5ffd5b50610469610cc5366004614153565b612d73565b348015610cd5575f5ffd5b50610cde612eb0565b60405163ffffffff9091168152602001610441565b6040516311f9fbc960e21b81526001600160a01b03831660048201526024810182905273__$ae81277065e375dbfccbe8236469c17501$__906347e7ef24906044015b5f6040518083038186803b158015610d4c575f5ffd5b505af4158015610d5e573d5f5f3e3d5ffd5b505050505050565b6040805160028082528183019092526060915f91906020820181803683370190505090505f610d96601085614212565b610da1906030614233565b90505f610daf60108661424c565b610dba906030614233565b905060398260ff161115610dd657610dd3600783614233565b91505b60398160ff161115610df057610ded600782614233565b90505b8160f81b835f81518110610e0657610e0661426d565b60200101906001600160f81b03191690815f1a9053508060f81b83600181518110610e3357610e3361426d565b60200101906001600160f81b03191690815f1a90535091949350505050565b610e5a6136f0565b60405163f308da0f60e01b815273__$ae81277065e375dbfccbe8236469c17501$__9063f308da0f90610e939086908690600401614473565b61012060405180830381865af4925050508015610ecd575060408051601f3d908101601f19168201909252610eca918101906144d9565b60015b610f4057610ed961456a565b806308c379a003610f075750610eed614582565b80610ef85750610f09565b610f0181612ec6565b50610f43565b505b3d808015610f32576040519150601f19603f3d011682016040523d82523d5f602084013e610f37565b606091505b50610f01612ee0565b90505b92915050565b5f80610f767f00000000000000000000000000000000000000000000000000000000000000006003614604565b610fa0907f000000000000000000000000000000000000000000000000000000000000000061461b565b9050808362ffffff161080610fe2575080610fe062ffffff85167f000000000000000000000000000000000000000000000000000000000000000061461b565b105b15610ff957610ff18185614604565b915050610f43565b61102862ffffff84167f000000000000000000000000000000000000000000000000000000000000000061461b565b610ff19085614604565b5092915050565b5f610f4382612eeb565b5f610f4382612f47565b5f805b82811015611032573684848381811061106b5761106b61426d565b905060200281019061107d919061462e565b60405163194eb1ef60e21b815290915073__$ae81277065e375dbfccbe8236469c17501$__9063653ac7bc906110fb9084907f0000000000000000000000000000000000000000000000000000000000000000907f000000000000000000000000000000000000000000000000000000000000000090600401614776565b5f60405180830381865af492505050801561113757506040513d5f823e601f3d908101601f191682016040526111349190810190614806565b60015b6111fc5761114361456a565b806308c379a00361119a5750611157614582565b80611162575061119c565b5f5160206156845f395f51905f5261117d6020840184613a48565b8260405161118c92919061489e565b60405180910390a150611353565b505b3d8080156111c5576040519150601f19603f3d011682016040523d82523d5f602084013e6111ca565b606091505b505f5160206156845f395f51905f526111e66020840184613a48565b6111ee612f59565b60405161118c92919061489e565b604051637102a0df60e11b815273__$713c4f4487e8756194dbc5b3b091cd4345$__9063e20541be9061123f908a908a908a908a908a908a908a906004016148bf565b602060405180830381865af4925050508015611278575060408051601f3d908101601f1916820190925261127591810190614918565b60015b61133d5761128461456a565b806308c379a0036112db5750611298614582565b806112a357506112dd565b5f5160206156845f395f51905f526112be60208b018b613a48565b826040516112cd92919061489e565b60405180910390a15061134b565b505b3d808015611306576040519150601f19603f3d011682016040523d82523d5f602084013e61130b565b606091505b505f5160206156845f395f51905f5261132760208b018b613a48565b61132f612f59565b6040516112cd92919061489e565b611347818c61461b565b9a50505b505050505050505b50600101611050565b5f6113887f00000000000000000000000000000000000000000000000000000000000000006004614604565b6113b2907f000000000000000000000000000000000000000000000000000000000000000061461b565b610f439083614604565b5f346113cc3a8460200151610f49565b808210156113ec576113e7336113e2848461492f565b612fa8565b61142e565b6113f781600a614604565b82111561142e5761142e6040518060400160405280600f81526020016e1d1bdbc81b5d58da081c995dd85c99608a1b815250612ec6565b8461146461143b82612fef565b6040518060400160405280600b81526020016a696e76616c696420534c4160a81b81525061302a565b8461152a5f825f01516001600160a01b03163b1180156114e8575081516040516323d0872b60e11b81523060048201526001600160a01b03909116906347a10e5690602401602060405180830381865afa1580156114c4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114e89190614942565b80156114fc57505f826020015162ffffff16115b6040518060400160405280601081526020016f696e76616c69642063616c6c6261636b60801b81525061302a565b8551602087015161153e9190348b8b61303c565b9450336001600160a01b03167ffbe74eb38ea9de3d74d481a4f701ae121d794895c5797db8260d06d317901d263a34888c8c604051611581959493929190614961565b60405180910390a2505050509392505050565b6040516351cff8d960e01b81523360048201525f9073__$ae81277065e375dbfccbe8236469c17501$__906351cff8d990602401602060405180830381865af41580156115e3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116079190614918565b905061161333826131ba565b90565b5f5f5f5f5f611624866131ed565b600981015460058201546004909201546001600160881b0319608883901b16999298506001600160401b03600160c01b9182900481169850910416945092505050565b5f546001600160a01b03168061169d578180602001905181019061168b91906149ba565b9250905061169881613222565b6116e5565b336001600160a01b038216146116e55760405162461bcd60e51b815260206004820152600d60248201526c3737ba103a34329037bbb732b960991b604482015260640161040c565b6116ee8261323b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbe541580159061175f57507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbe547f00000000000000000000000000000000000000000000000000000000000000003f145b156117ac5760405162461bcd60e51b815260206004820152601c60248201527f616c726561647920696e697469616c697a656420636f64656861736800000000604482015260640161040c565b7f00000000000000000000000000000000000000000000000000000000000000003f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc600201557f00000000000000000000000000000000000000000000000000000000000000003f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166118505f546001600160a01b031690565b6001600160a01b03167fe73e754121f0bad1327816970101955bfffdf53d270ac509d777c25be070d7f6611882611d10565b60405161188f91906138c3565b60405180910390a45050565b6118a36136f0565b6118b28263ffffffff1661347c565b6040805160c081018252825463ffffffff8082168352640100000000820416602083015267ffffffffffffffff19600160401b909104831b168183015260018301546001600160801b0319608082811b82166060850152600160801b909204821b16818301528251908101909252919060a08301906002830160048282826020028201915b815481526020019060010190808311611937575050505050815250509050919050565b604051634cddf61560e01b8152600481018290525f9073__$713c4f4487e8756194dbc5b3b091cd4345$__90634cddf61590602401602060405180830381865af41580156119aa573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f439190614a16565b604051630a70cd2160e31b81526001600160401b03821660048201527f000000000000000000000000000000000000000000000000000000000000000060248201527f000000000000000000000000000000000000000000000000000000000000000060448201525f9073__$ae81277065e375dbfccbe8236469c17501$__906353866908906064015b602060405180830381865af4925050508015611a91575060408051601f3d908101601f19168201909252611a8e91810190614918565b60015b610f4357611a9d61456a565b806308c379a003611acb5750611ab1614582565b80611abc5750611acd565b611ac581612ec6565b50919050565b505b3d808015611af6576040519150601f19603f3d011682016040523d82523d5f602084013e611afb565b606091505b50611ac5612ee0565b919050565b5f805b828110156110325773__$ae81277065e375dbfccbe8236469c17501$__6355caae04858584818110611b4057611b4061426d565b9050602002016020810190611b559190613a48565b6040516001600160e01b031960e084901b1681526001600160401b0390911660048201527f000000000000000000000000000000000000000000000000000000000000000060248201527f00000000000000000000000000000000000000000000000000000000000000006044820152606401602060405180830381865af4925050508015611c01575060408051601f3d908101601f19168201909252611bfe91810190614918565b60015b611cfa57611c0d61456a565b806308c379a003611c7e5750611c21614582565b80611c2c5750611c80565b5f5160206156845f395f51905f52858584818110611c4c57611c4c61426d565b9050602002016020810190611c619190613a48565b82604051611c7092919061489e565b60405180910390a150611d08565b505b3d808015611ca9576040519150601f19603f3d011682016040523d82523d5f602084013e611cae565b606091505b505f5160206156845f395f51905f52858584818110611ccf57611ccf61426d565b9050602002016020810190611ce49190613a48565b611cec612f59565b604051611c7092919061489e565b611d04818461461b565b9250505b600101611b0c565b6060611d3b7f0000000000000000000000000000000000000000000000000000000000000000613490565b905090565b6060816001600160401b03811115611d5a57611d5a613aa9565b604051908082528060200260200182016040528015611d83578160200160208202803683370190505b5090505f5b8281101561103257611db1848483818110611da557611da561426d565b90506020020135612021565b828281518110611dc357611dc361426d565b60200260200101906006811115611ddc57611ddc613d07565b90816006811115611def57611def613d07565b905250600101611d88565b611e0261372b565b6040516359209b3960e01b81526004810183905273__$713c4f4487e8756194dbc5b3b091cd4345$__906359209b39906024015f60405180830381865af4158015611e4f573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610f439190810190614b1b565b5f7f00000000000000000000000000000000000000000000000000000000000000008015610f435750816001600160a01b0316611eba5f546001600160a01b031690565b6001600160a01b03161492915050565b611ed261372b565b5f80611ee084860186614d57565b604051638578337760e01b8152919350915073__$ae81277065e375dbfccbe8236469c17501$__90638578337790611f20908990869086906004016150a5565b5f60405180830381865af4925050508015611f5c57506040513d5f823e601f3d908101601f19168201604052611f599190810190614b1b565b60015b61201057611f6861456a565b806308c379a003611fa15750611f7c614582565b80611f875750611fa3565b8060405162461bcd60e51b815260040161040c91906138c3565b505b3d808015611fcc576040519150601f19603f3d011682016040523d82523d5f602084013e611fd1565b606091505b5060405162461bcd60e51b81526020600482015260136024820152723ab73430b7323632b21030b9b9b2b93a34b7b760691b604482015260640161040c565b925061201a915050565b9392505050565b5f61202b826131ed565b604051633962372d60e01b815260048101919091527f0000000000000000000000000000000000000000000000000000000000000000602482015273__$ae81277065e375dbfccbe8236469c17501$__90633962372d90604401602060405180830381865af41580156120a0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f43919061516d565b6120cc613531565b6120d55f613222565b565b60015433906001600160a01b031681146121455760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b606482015260840161040c565b61214e81613222565b50565b5f611d3b3061355d565b6040516345ac7f3f60e01b8152600481018290527f000000000000000000000000000000000000000000000000000000000000000060248201527f000000000000000000000000000000000000000000000000000000000000000060448201525f9073__$ae81277065e375dbfccbe8236469c17501$__906345ac7f3f90606401602060405180830381865af4925050508015612215575060408051601f3d908101601f19168201909252612212918101906151a1565b60015b61222157611a9d61456a565b6001600160481b03811680156110325761103233826131ba565b606073__$713c4f4487e8756194dbc5b3b091cd4345$__634cbc7ff861226084612021565b6040518263ffffffff1660e01b815260040161227c9190613f1d565b5f60405180830381865af4158015612296573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610f4391908101906151ba565b6122c56136f0565b5f5160206156645f395f51905f52545f9081527ff595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e101602052604090206040805160c081018252825463ffffffff8082168352640100000000820416602083015267ffffffffffffffff19600160401b909104831b168183015260018301546001600160801b0319608082811b82166060850152600160801b909204821b16818301528251908101909252919060a08301906002830160048282826020028201915b81548152602001906001019080831161238557505050505081525050905090565b61243c6040805161014081019091525f60c0820181815260e083018290526060610100840152610120830191909152819081526040805160a0810182525f808252602082810182905292820181905260608083015260808201529101908152604080516060810182525f80825260208281018290529282015291019081525f602082018190526040820181905260609091015290565b60405163467e6f5160e11b81526001600160401b038316600482015273__$713c4f4487e8756194dbc5b3b091cd4345$__90638cfcdea2906024015f60405180830381865af4158015612491573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610f439190810190615394565b60405163194eb1ef60e21b81525f9073__$ae81277065e375dbfccbe8236469c17501$__9063653ac7bc906125359085907f0000000000000000000000000000000000000000000000000000000000000000907f000000000000000000000000000000000000000000000000000000000000000090600401614776565b5f60405180830381865af492505050801561257157506040513d5f823e601f3d908101601f1916820160405261256e9190810190614806565b60015b61257d57611a9d61456a565b604051637102a0df60e11b815273__$713c4f4487e8756194dbc5b3b091cd4345$__9063e20541be906125c0908a908a908a908a908a908a908a906004016148bf565b602060405180830381865af49250505080156125f9575060408051601f3d908101601f191682019092526125f691810190614918565b60015b61266c5761260561456a565b806308c379a0036126335750612619614582565b806126245750612635565b61262d81612ec6565b50612679565b505b3d80801561265e576040519150601f19603f3d011682016040523d82523d5f602084013e612663565b606091505b5061262d612ee0565b9998505050505050505050565b50505050505050919050565b5f346126903a61135c565b808210156126ab576126a6336113e2848461492f565b6126ed565b6126b681600a614604565b8211156126ed576126ed6040518060400160405280600f81526020016e1d1bdbc81b5d58da081c995dd85c99608a1b815250612ec6565b836126fa61143b82612fef565b612707335f34898961303c565b9350336001600160a01b03167ffbe74eb38ea9de3d74d481a4f701ae121d794895c5797db8260d06d317901d263a34878a8a60405161274a959493929190614961565b60405180910390a250505092915050565b61279160405180608001604052805f6001600160a01b031681526020015f62ffffff168152602001606081526020015f81525090565b60405163a667533f60e01b81526001600160401b038316600482015273__$713c4f4487e8756194dbc5b3b091cd4345$__9063a667533f906024015f60405180830381865af41580156127e6573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610f43919081019061546e565b61281561372b565b5f8061282384860186614d57565b604051631ac0750360e01b8152919350915073__$ae81277065e375dbfccbe8236469c17501$__90631ac0750390611f20908990869086906004016150a5565b60606040518060600160405260238152806020016156a460239139905090565b606073__$39c1c75f9ff01712a7ae2d1d1d8c462aa1$__6371aad10d73__$713c4f4487e8756194dbc5b3b091cd4345$__6359209b39856040518263ffffffff1660e01b81526004016128d891815260200190565b5f60405180830381865af41580156128f2573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526129199190810190614b1b565b6040516020016129299190613d98565b6040516020818303038152906040526040518263ffffffff1660e01b815260040161227c91906138c3565b5f7ff595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e18354611d3b906001600160401b0316600161549f565b6040805160a0810182525f80825260208201819052918101829052606080820152608081019190915260405163ca7da98b60e01b81526001600160401b038316600482015273__$713c4f4487e8756194dbc5b3b091cd4345$__9063ca7da98b906024015f60405180830381865af4158015612a09573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610f4391908101906154be565b5f6020825f015161ffff1611612a46575f612a98565b8151602090612a569082906154ef565b612a609190615509565b61ffff16612a8e7f000000000000000000000000000000000000000000000000000000000000000086614604565b612a989190614604565b6040830151612ab0906001600160401b031685614604565b612aba919061461b565b949350505050565b612aca6136f0565b506040805160c0810182525f808252602080830182905282840182905260608084018390526080808501849052855190810186528381529182018390529381018290529283015260a081019190915290565b80600180612b2983612021565b6006811115612b3a57612b3a613d07565b14612bc557604051638f191e5f60e01b8152612bc09073__$713c4f4487e8756194dbc5b3b091cd4345$__90638f191e5f90612b7a908590600401613f1d565b5f60405180830381865af4158015612b94573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612bbb91908101906151ba565b612ec6565b505050565b5f612bcf846131ed565b90505f346009830154612bf29190600160781b90046001600160481b031661461b565b6009830180546001600160481b038316600160781b0268ffffffffffffffffff60781b19909116179055604080516001600160401b03881681523360208201523a818301526060810183905290519192507f66f95ec285ca572fa1cac40e7019e14ab45a8fc619c6405222e8af55534c2f67919081900360800190a15050505050565b612c7d613531565b600180546001600160a01b0383166001600160a01b03199091168117909155612cad5f546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b604051631572ab8160e21b81526001600160401b03821660048201527f000000000000000000000000000000000000000000000000000000000000000060248201527f000000000000000000000000000000000000000000000000000000000000000060448201525f9073__$ae81277065e375dbfccbe8236469c17501$__906355caae0490606401611a58565b6040516334c20ee360e01b81525f9073__$ae81277065e375dbfccbe8236469c17501$__906334c20ee390612df890899089908990899089907f0000000000000000000000000000000000000000000000000000000000000000907f00000000000000000000000000000000000000000000000000000000000000009060040161552c565b602060405180830381865af4925050508015612e31575060408051601f3d908101601f19168201909252612e2e91810190614918565b60015b612ea457612e3d61456a565b806308c379a003612e6b5750612e51614582565b80612e5c5750612e6d565b612e6581612ec6565b50612ea7565b505b3d808015612e96576040519150601f19603f3d011682016040523d82523d5f602084013e612e9b565b606091505b50612e65612ee0565b90505b95945050505050565b5f611d3b5f5160206156645f395f51905f525490565b612ece612863565b816040516020016103e692919061559d565b6120d5612bbb612f59565b5f6001600160401b03821615612f1b576014612f075f846155bd565b612f1191906155dc565b610f43905f61549f565b6001600160401b03821615612f4057602d612f365f846155bd565b610f4391906155dc565b505f919050565b5f610f43612f5483612eeb565b61359b565b60606040518060400160405260108152806020016f2bb4ba27b930b1b632a230ba30a634b160811b815250604051602001612f949190615609565b604051602081830303815290604052905090565b604051632770a7eb60e21b81526001600160a01b03831660048201526024810182905273__$ae81277065e375dbfccbe8236469c17501$__90639dc29fac90604401610d36565b5f5f826020015161ffff161180156130105750607f826020015161ffff1611155b8015610f43575050604001516001600160401b0316151590565b816130385761303881612ec6565b5050565b5f7ff595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e18380545f90613074906001600160401b0316615639565b91906101000a8154816001600160401b0302191690836001600160401b0316021790556001600160401b031690505f6130ac826131ed565b6009810180546001600160c01b0316600160c01b436001600160401b03160217905590506130e382856130de866135a7565b6135fa565b60098201805460889290921c6001600160c01b031990921691909117600160781b6001600160481b0388160217905580546001600160a01b0319166001600160a01b0388161781556002810184905562ffffff86161561315857805462ffffff60a01b1916600160a01b62ffffff8816021781555b82516008909101805460208501516040909501516001600160401b0316640100000000026bffffffffffffffff000000001961ffff968716620100000263ffffffff199093169690941695909517179190911692909217909155949350505050565b6040516001600160a01b0383169082156108fc029083905f818181858888f19350505050158015612bc0573d5f5f3e3d5ffd5b5f7ff595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e1835b5f928352600101602052506040902090565b600180546001600160a01b031916905561214e81613669565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbe546133b0576040805160c0810182525f80825260208083018281528385018381526060808601858152608080880187815289518083018b52888152808801899052808b0189905293840188905260a089019384529680527ff595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e10190955286517fc183f9983e4d9665af3c4426441c2490530d67a07a506de5a3030081c7e86fd680549551945190991c600160401b026001600160401b0363ffffffff9586166401000000000267ffffffffffffffff199097169590921694909417949094179390931691909117865590519251821c600160801b029290911c919091177fc183f9983e4d9665af3c4426441c2490530d67a07a506de5a3030081c7e86fd755519091906133aa907fc183f9983e4d9665af3c4426441c2490530d67a07a506de5a3030081c7e86fd89060046137a6565b50505050565b80511561214e575f818060200190518101906133cc91906144d9565b9050805f5160206156645f395f51905f52825163ffffffff9081165f9081526001928301602090815260409182902085518154928701518785015190941c600160401b026001600160401b039486166401000000000267ffffffffffffffff19909416919095161791909117919091169190911781556060830151608080850151811c600160801b0291901c179181019190915560a082015161347590600283019060046137a6565b5050505050565b5f5f5160206156645f395f51905f52613210565b60605f61349c836136b8565b6001600160401b038111156134b3576134b3613aa9565b6040519080825280601f01601f1916602001820160405280156134dd576020820181803683370190505b5090505f5b8151811015611032578381602081106134fd576134fd61426d565b1a60f81b8282815181106135135761351361426d565b60200101906001600160f81b03191690815f1a9053506001016134e2565b5f546001600160a01b031633146120d55760405163118cdaa760e01b815233600482015260240161040c565b604080516001600160a01b038316602082015246918101919091525f906060015b604051602081830303815290604052805190602001209050919050565b5f610f43600a836155dc565b5f815f01518260200151836040015160405160200161357e9392919060f093841b6001600160f01b031990811682529290931b909116600283015260c01b6001600160c01b0319166004820152600c0190565b5f6136043061355d565b61360f60014361492f565b604080516001600160e01b031990931660208401529040908201526001600160401b03851660608201526080810184905260a0810183905260c0016040516020818303038152906040528051906020012090509392505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f5b6020811015611b04578181602081106136d5576136d561426d565b1a60f81b6001600160f81b03191615611b04576001016136ba565b6040805160c0810182525f8082526020820181905291810182905260608101829052608081019190915260a081016137266137e4565b905290565b6040805160c08101909152805f81526020015f81526020015f81526020015f81526020015f6001600160401b03168152602001613726604080516101008101909152606060c082019081525f60e0830152819081525f6020820181905260408201819052606082018190526080820181905260a09091015290565b82600481019282156137d4579160200282015b828111156137d45782518255916020019190600101906137b9565b506137e0929150613802565b5090565b60405180608001604052806004906020820280368337509192915050565b5b808211156137e0575f8155600101613803565b5f81518060208401855e5f93019283525090919050565b7f5769746e657455706772616461626c65426173653a206e6f7420696d706c656d8152680cadce8cac8744060f60bb1b60208201525f61388b61388561387f613879602986018a613816565b88613816565b86613816565b84613816565b9695505050505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61201a6020830184613895565b5f5f83601f8401126138e5575f5ffd5b5081356001600160401b038111156138fb575f5ffd5b6020830191508360208260051b8501011115613915575f5ffd5b9250929050565b5f5f6020838503121561392d575f5ffd5b82356001600160401b03811115613942575f5ffd5b61394e858286016138d5565b90969095509350505050565b5f6101208201905063ffffffff835116825263ffffffff60208401511660208301526001600160401b031960408401511660408301526001600160801b031960608401511660608301526001600160801b0319608084015116608083015260a083015160a083015f5b60048110156139e25782518252602092830192909101906001016139c3565b50505092915050565b62ffffff8116811461214e575f5ffd5b5f5f60408385031215613a0c575f5ffd5b823591506020830135613a1e816139eb565b809150509250929050565b6001600160401b038116811461214e575f5ffd5b8035611b0481613a29565b5f60208284031215613a58575f5ffd5b813561201a81613a29565b6001600160a01b038116811461214e575f5ffd5b5f60208284031215613a87575f5ffd5b813561201a81613a63565b5f60208284031215613aa2575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b606081018181106001600160401b0382111715613adc57613adc613aa9565b60405250565b604081018181106001600160401b0382111715613adc57613adc613aa9565b60c081018181106001600160401b0382111715613adc57613adc613aa9565b601f8201601f191681016001600160401b0381118282101715613b4557613b45613aa9565b6040525050565b60405161161360c082613b20565b61ffff8116811461214e575f5ffd5b5f60608284031215613b79575f5ffd5b604051613b8581613abd565b8091508235613b9381613b5a565b81526020830135613ba381613b5a565b60208201526040830135613bb681613a29565b6040919091015292915050565b5f5f5f83850360c0811215613bd6575f5ffd5b84359350613be78660208701613b69565b92506040607f1982011215613bfa575f5ffd5b50604051613c0781613ae2565b6080850135613c1581613a63565b815260a0850135613c25816139eb565b602082015292959194509192509050565b5f6001600160401b03821115613c4e57613c4e613aa9565b50601f01601f191660200190565b5f60208284031215613c6c575f5ffd5b81356001600160401b03811115613c81575f5ffd5b8201601f81018413613c91575f5ffd5b8035613c9c81613c36565b604051613ca98282613b20565b828152866020848601011115613cbd575f5ffd5b826020850160208301375f9281016020019290925250949350505050565b63ffffffff8116811461214e575f5ffd5b5f60208284031215613cfc575f5ffd5b813561201a81613cdb565b634e487b7160e01b5f52602160045260245ffd5b6101008110613d2c57613d2c613d07565b9052565b60208101610f438284613d1b565b60078110613d2c57613d2c613d07565b602080825282518282018190525f918401906040840190835b81811015613d8d57613d7a838551613d3e565b6020938401939290920191600101613d67565b509095945050505050565b60208152613daa602082018351613d1b565b5f602083015160148110613dc057613dc0613d07565b8060408401525060408301516060830152606083015160808301526001600160401b0360808401511660a083015260a083015160c080840152805160c060e0850152805160406101a0860152613e1a6101e0860182613895565b6020928301516101c08701529183015160ff1661010086015250604082015190613e4a61012086018360ff169052565b606083015160ff1661014086015260808301516001600160401b0380821661016088015260a0909401519384166101808701529150612ea7565b5f5f5f60408486031215613e96575f5ffd5b83356001600160401b03811115613eab575f5ffd5b840160e08187031215613ebc575f5ffd5b925060208401356001600160401b03811115613ed6575f5ffd5b8401601f81018613613ee6575f5ffd5b80356001600160401b03811115613efb575f5ffd5b866020828401011115613f0c575f5ffd5b939660209190910195509293505050565b60208101610f438284613d3e565b60018060a01b03815116825262ffffff60208201511660208301525f604082015160806040850152613f606080850182613895565b606093840151949093019390935250919050565b60018060a01b0381511682526001600160401b036020820151166020830152604081015160408301525f606082015160a06060850152613fb760a0850182613895565b6080938401516001600160a01b0316949093019390935250919050565b602081525f82516101006020840152613ff1610120840182613f2b565b90506020840151601f1984830301604085015261400e8282613f74565b915050604084015161404b606085018261ffff815116825261ffff60208201511660208301526001600160401b0360408201511660408301525050565b5060608401516001600160881b03191660c084015260808401516001600160481b031660e084015260a0909301516001600160401b0316610100909201919091525090565b5f60c08284031215611ac5575f5ffd5b5f602082840312156140b0575f5ffd5b81356001600160401b038111156140c5575f5ffd5b612aba84828501614090565b5f5f608083850312156140e2575f5ffd5b823591506140f38460208501613b69565b90509250929050565b602081525f61201a6020830184613f2b565b602081525f61201a6020830184613f74565b5f5f5f60a08486031215614132575f5ffd5b833592506020840135915061414a8560408601613b69565b90509250925092565b5f5f5f5f5f60608688031215614167575f5ffd5b85356001600160401b0381111561417c575f5ffd5b614188888289016138d5565b90965094505060208601356001600160401b038111156141a6575f5ffd5b6141b288828901614090565b93505060408601356001600160401b038111156141cd575f5ffd5b6141d9888289016138d5565b969995985093965092949392505050565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f60ff831680614224576142246141ea565b8060ff84160491505092915050565b60ff8181168382160190811115610f4357610f436141fe565b5f60ff83168061425e5761425e6141ea565b8060ff84160691505092915050565b634e487b7160e01b5f52603260045260245ffd5b67ffffffffffffffff198116811461214e575f5ffd5b6001600160801b03198116811461214e575f5ffd5b8035611b0481614297565b60808183375050565b60408183375050565b5f5f8335601e198436030181126142de575f5ffd5b83016020810192503590506001600160401b038111156142fc575f5ffd5b8060071b3603821315613915575f5ffd5b8183526020830192505f815f5b8481101561433a576080828737608095860195919091019060010161431a565b5093949350505050565b5f8383855260208501945060208460051b820101835f5b8681101561446757838303601f1901885281353687900361017e19018112614381575f5ffd5b8601803561438e81613cdb565b63ffffffff16845260208101356143a481613cdb565b63ffffffff16602085015260408101356143bd81614281565b67ffffffffffffffff1916604085015260608101356143db81614297565b6001600160801b03191660608501526143f6608082016142ac565b6001600160801b031916608085015261441560a08086019083016142b7565b614427610120850161012083016142c0565b6144356101608201826142c9565b915061018061016086015261444f6101808601838361430d565b60209a8b019a9095509390930192505060010161435b565b50909695505050505050565b602081525f612aba602083018486614344565b5f82601f830112614495575f5ffd5b6040516144a3608082613b20565b8060808401858111156144b4575f5ffd5b845b818110156144ce5780518352602092830192016144b6565b509195945050505050565b5f6101208284031280156144eb575f5ffd5b506040516144f881613b01565b825161450381613cdb565b8152602083015161451381613cdb565b6020820152604083015161452681614281565b6040820152606083015161453981614297565b6060820152608083015161454c81614297565b608082015261455e8460a08501614486565b60a08201529392505050565b5f60033d11156116135760045f5f3e505f5160e01c90565b5f60443d101561458f5790565b6040513d600319016004823e80513d60248201116001600160401b03821117156145b857505090565b80820180516001600160401b038111156145d3575050505090565b3d84016003190182820160200111156145ed575050505090565b6145fc60208285010185613b20565b509392505050565b8082028115828204841417610f4357610f436141fe565b80820180821115610f4357610f436141fe565b5f823560be19833603018112614642575f5ffd5b9190910192915050565b6001600160881b03198116811461214e575f5ffd5b5f5f8335601e19843603018112614676575f5ffd5b83016020810192503590506001600160401b03811115614694575f5ffd5b803603821315613915575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f81356146d681613a29565b6001600160401b0316835260208201356146ef8161464c565b6001600160881b031916602084015261470b6040830183614661565b60c0604086015261472060c0860182846146a2565b915050606083013561473181613a29565b6001600160401b0316606085015261474c6080840184614661565b858303608087015261475f8382846146a2565b60a095860135969095019590955250919392505050565b606081525f61478860608301866146ca565b60208301949094525060400152919050565b8051611b0481613a29565b5f6147af83613c36565b6040516147bc8282613b20565b8092508481528585850111156147d0575f5ffd5b8484602083015e5f6020868301015250509392505050565b5f82601f8301126147f7575f5ffd5b61201a838351602085016147a5565b5f5f5f5f5f5f5f60e0888a03121561481c575f5ffd5b875161482781613a63565b602089015160408a0151919850965061483f81613a29565b606089015190955061485081613a29565b608089015190945061486181613a29565b60a089015160c08a015191945092506001600160401b03811115614883575f5ffd5b61488f8a828b016147e8565b91505092959891949750929550565b6001600160401b0383168152604060208201525f612aba6040830184613895565b60018060a01b03881681528660208201526001600160401b03861660408201526001600160401b03851660608201526001600160401b03841660808201528260a082015260e060c08201525f61266c60e0830184613895565b5f60208284031215614928575f5ffd5b5051919050565b81810381811115610f4357610f436141fe565b5f60208284031215614952575f5ffd5b8151801515811461201a575f5ffd5b858152602081018590526001600160401b03841660408201526060810183905260e0810161388b608083018461ffff815116825261ffff60208201511660208301526001600160401b0360408201511660408301525050565b5f5f604083850312156149cb575f5ffd5b82516149d681613a63565b60208401519092506001600160401b038111156149f1575f5ffd5b6149fd858286016147e8565b9150509250929050565b80516101008110611b04575f5ffd5b5f60208284031215614a26575f5ffd5b61201a82614a07565b805160ff81168114611b04575f5ffd5b5f60c08284031215614a4f575f5ffd5b604051614a5b81613b01565b80915082516001600160401b03811115614a73575f5ffd5b830160408186031215614a84575f5ffd5b604051614a9081613ae2565b81516001600160401b03811115614aa5575f5ffd5b614ab1878285016147e8565b825250602091820151828201528252614acb908401614a2f565b6020820152614adc60408401614a2f565b6040820152614aed60608401614a2f565b6060820152614afe6080840161479a565b6080820152614b0f60a0840161479a565b60a08201525092915050565b5f60208284031215614b2b575f5ffd5b81516001600160401b03811115614b40575f5ffd5b820160c08185031215614b51575f5ffd5b604051614b5d81613b01565b614b6682614a07565b8152602082015160148110614b79575f5ffd5b60208201526040828101519082015260608083015190820152614b9e6080830161479a565b608082015260a08201516001600160401b03811115614bbb575f5ffd5b614bc786828501614a3f565b60a083015250949350505050565b5f6001600160401b03821115614bed57614bed613aa9565b5060051b60200190565b5f82601f830112614c06575f5ffd5b6040515f90614c16608082613b20565b9050806080840185811115614c29575f5ffd5b845b81811015613d8d578035845260209384019301614c2b565b5f82601f830112614c52575f5ffd5b604080515f91614c629082613b20565b9050806040840185811115614c29575f5ffd5b5f82601f830112614c84575f5ffd5b8135614c8f81614bd5565b604051614c9c8282613b20565b80915082815260208101915060208360071b860101925085831115614cbf575f5ffd5b602085015b83811015614ce657614cd68782614bf7565b8352602090920191608001614cc4565b5095945050505050565b5f82601f830112614cff575f5ffd5b8135614d0a81614bd5565b604051614d178282613b20565b80915082815260208101915060208360051b860101925085831115614d3a575f5ffd5b602085015b83811015614ce6578035835260209283019201614d3f565b5f5f60408385031215614d68575f5ffd5b82356001600160401b03811115614d7d575f5ffd5b8301601f81018513614d8d575f5ffd5b8035614d9881614bd5565b604051614da58282613b20565b80915082815260208101915060208360051b850101925087831115614dc8575f5ffd5b602084015b83811015614eea5780356001600160401b03811115614dea575f5ffd5b8501808a03601f1901610180811215614e01575f5ffd5b604051614e0d81613abd565b610120821215614e1b575f5ffd5b6040519150614e2982613b01565b6020830135614e3781613cdb565b82526040830135614e4781613cdb565b60208301526060830135614e5a81614281565b60408301526080830135614e6d81614297565b6060830152614e7e60a084016142ac565b6080830152614e908c60c08501614bf7565b60a0830152818152614ea68c6101408501614c43565b602082015261018083013591506001600160401b03821115614ec6575f5ffd5b614ed58c602084860101614c75565b60408201528552505060209283019201614dcd565b50945050505060208301356001600160401b03811115614f08575f5ffd5b6149fd85828601614cf0565b805f5b60048110156133aa578151845260209384019390910190600101614f17565b805f5b60028110156133aa578151845260209384019390910190600101614f39565b5f8151808452602084019350602083015f5b8281101561433a57614f7d868351614f14565b6080959095019460209190910190600101614f6a565b5f82825180855260208501945060208160051b830101602085015f5b8381101561446757601f198584030188528151805163ffffffff815116855263ffffffff60208201511660208601526001600160401b031960408201511660408601526001600160801b031960608201511660608601526001600160801b0319608082015116608086015260a0810151905061502e60a0860182614f14565b506020810151615042610120860182614f36565b5060400151610180610160850181905261505e90850182614f58565b6020998a0199909450929092019150600101614faf565b5f8151808452602084019350602083015f5b8281101561433a578151865260209586019590910190600101615087565b6060808252843590820152602084013560808201525f60408501356150c981613b5a565b61ffff1660a083015260608501356150e081613b5a565b61ffff1660c083015260808501356150f781613a29565b6001600160401b031660e083015261511160a08601613a3d565b6001600160401b031661010083015261512d60c0860186614661565b60e0610120850152615144610140850182846146a2565b91505082810360208401526151598186614f93565b9050828103604084015261388b8185615075565b5f6020828403121561517d575f5ffd5b81516007811061201a575f5ffd5b80516001600160481b0381168114611b04575f5ffd5b5f602082840312156151b1575f5ffd5b61201a8261518b565b5f602082840312156151ca575f5ffd5b81516001600160401b038111156151df575f5ffd5b8201601f810184136151ef575f5ffd5b612aba848251602084016147a5565b5f6080828403121561520e575f5ffd5b604051608081018181106001600160401b038211171561523057615230613aa9565b8060405250809150825161524381613a63565b81526020830151615253816139eb565b602082015260408301516001600160401b03811115615270575f5ffd5b61527c858286016147e8565b604083015250606092830151920191909152919050565b5f60a082840312156152a3575f5ffd5b60405160a081018181106001600160401b03821117156152c5576152c5613aa9565b806040525080915082516152d881613a63565b815260208301516152e881613a29565b60208201526040838101519082015260608301516001600160401b0381111561530f575f5ffd5b61531b858286016147e8565b606083015250608083015161532f81613a63565b6080919091015292915050565b5f6060828403121561534c575f5ffd5b60405161535881613abd565b809150825161536681613b5a565b8152602083015161537681613b5a565b60208201526040830151613bb681613a29565b8051611b048161464c565b5f602082840312156153a4575f5ffd5b81516001600160401b038111156153b9575f5ffd5b820161010081850312156153cb575f5ffd5b6153d3613b4c565b81516001600160401b038111156153e8575f5ffd5b6153f4868285016151fe565b82525060208201516001600160401b0381111561540f575f5ffd5b61541b86828501615293565b60208301525061542e856040840161533c565b604082015261543f60a08301615389565b606082015261545060c0830161518b565b608082015261546160e0830161479a565b60a0820152949350505050565b5f6020828403121561547e575f5ffd5b81516001600160401b03811115615493575f5ffd5b612aba848285016151fe565b6001600160401b038181168382160190811115610f4357610f436141fe565b5f602082840312156154ce575f5ffd5b81516001600160401b038111156154e3575f5ffd5b612aba84828501615293565b61ffff8281168282160390811115610f4357610f436141fe565b5f61ffff83168061551c5761551c6141ea565b8061ffff84160491505092915050565b60a081525f61553f60a08301898b614344565b828103602084015261555181896146ca565b838103604085015286815290506001600160fb1b03861115615571575f5ffd5b8560051b8088602084013760608401959095526080909201929092529091016020019695505050505050565b5f6155a88285613816565b6101d160f51b8152612ea76002820185613816565b6001600160401b038281168282160390811115610f4357610f436141fe565b5f6001600160401b038316806155f4576155f46141ea565b806001600160401b0384160491505092915050565b5f6156148284613816565b741d103ab73430b7323632b21030b9b9b2b93a34b7b760591b81526015019392505050565b5f6001600160401b0382166001600160401b03810361565a5761565a6141fe565b6001019291505056fef595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e1007ae9f29e9f698fdd92cfb045617624fdc0c640b517e34bc5670b6ada3b54b48b5769744f7261636c6554727573746c65737355706772616461626c6544656661756c74a2646970667358221220d0eb146e0a751e41a5065d2faeede750b475f79fa21faa247ee7ec61755c714164736f6c634300081e00335769744f7261636c6554727573746c65737355706772616461626c6544656661756c74",
  "deployedBytecode": "0x608060405260043610610379575f3560e01c806379ba5097116101d0578063b783922b11610101578063d5f394881161009f578063f2fde38b1161006e578063f2fde38b14610c6d578063f91ffdb214610c8c578063fc140d7714610cab578063fe52e05f14610cca5761038a565b8063d5f3948814610bd7578063e30c397814610c0a578063e5a6b10f14610c27578063ec5946db14610c5a5761038a565b8063c805dd0f116100db578063c805dd0f14610b64578063ca7da98b14610b78578063d0a92a0814610ba4578063d4038ac614610bc35761038a565b8063b783922b14610b12578063bff852fa14610b31578063c258134814610b455761038a565b80638da5cb5b1161016e578063a667533f11610148578063a667533f14610a67578063a6ef08c014610a93578063a9e954b914610ac6578063adb7c3f714610af95761038a565b80638da5cb5b14610a1957806390602a9014610a35578063a58f680314610a545761038a565b80637c1fbda3116101aa5780637c1fbda31461099b578063838d44e2146109ba5780638bfabb4f146109d95780638cfcdea2146109ed5761038a565b806379ba5097146109275780637b1039991461093b5780637bbdb96e1461096e5761038a565b80635001f3b5116102aa57806359209b39116102485780636f07abcc116102225780636f07abcc1461081f5780636fdaab7e1461084b57806370a08231146108c0578063715018a6146109135761038a565b806359209b39146107b55780636b58960a146107e15780636d0d6a7e146108005761038a565b806353a5d58c1161028457806353a5d58c1461070b5780635479d9401461072a57806354fd4d5014610768578063581f5094146107895761038a565b80635001f3b51461067357806350127a96146106b957806352d1902d146106d85761038a565b806339a8653e116103175780633fa59576116102f15780633fa59576146105bb578063439fab911461060957806347ad9e69146106285780634cddf615146106475761038a565b806339a8653e146105755780633b3195b7146105945780633ccfd60b146105a75761038a565b80631105c863116103535780631105c863146104ae57806317d298d0146104e15780631aefb107146105005780631f08f481146105565761038a565b8063057600311461041557806305e742ef1461044a5780630f884886146104775761038a565b3661038a576103883334610cf3565b005b348015610395575f5ffd5b506103a35f3560f81c610d66565b6103b360ff5f3560f01c16610d66565b6103c360ff5f3560e81c16610d66565b6103d360ff5f3560e01c16610d66565b6040516020016103e6949392919061382d565b60408051601f198184030181529082905262461bcd60e51b825261040c916004016138c3565b60405180910390fd5b348015610420575f5ffd5b5061043461042f36600461391c565b610e52565b604051610441919061395a565b60405180910390f35b348015610455575f5ffd5b506104696104643660046139fb565b610f49565b604051908152602001610441565b348015610482575f5ffd5b50610496610491366004613a48565b611039565b6040516001600160401b039091168152602001610441565b3480156104b9575f5ffd5b506104697f000000000000000000000000000000000000000000000000000000000000000081565b3480156104ec575f5ffd5b506104966104fb366004613a48565b611043565b34801561050b575f5ffd5b5061046961051a366004613a77565b6001600160a01b03165f9081527ff595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e102602052604090206001015490565b348015610561575f5ffd5b5061046961057036600461391c565b61104d565b348015610580575f5ffd5b5061046961058f366004613a92565b61135c565b6104696105a2366004613bc3565b6113bc565b3480156105b2575f5ffd5b50610469611594565b3480156105c6575f5ffd5b506105da6105d5366004613a92565b611616565b604051610441949392919093845260208401929092526001600160401b03166040830152606082015260800190565b348015610614575f5ffd5b50610388610623366004613c5c565b611667565b348015610633575f5ffd5b50610434610642366004613cec565b61189b565b348015610652575f5ffd5b50610666610661366004613a92565b61195a565b6040516104419190613d30565b34801561067e575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b039091168152602001610441565b3480156106c4575f5ffd5b506104696106d3366004613a48565b6119ce565b3480156106e3575f5ffd5b506104697f000000000000000000000000000000000000000000000000000000000000000081565b348015610716575f5ffd5b5061046961072536600461391c565b611b09565b348015610735575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040519015158152602001610441565b348015610773575f5ffd5b5061077c611d10565b60405161044191906138c3565b348015610794575f5ffd5b506107a86107a336600461391c565b611d40565b6040516104419190613d4e565b3480156107c0575f5ffd5b506107d46107cf366004613a92565b611dfa565b6040516104419190613d98565b3480156107ec575f5ffd5b506107586107fb366004613a77565b611e76565b34801561080b575f5ffd5b506107d461081a366004613e84565b611eca565b34801561082a575f5ffd5b5061083e610839366004613a92565b612021565b6040516104419190613f1d565b348015610856575f5ffd5b506108a8610865366004613a92565b5f9081527ff595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e1846020526040902060090154600160781b90046001600160481b031690565b6040516001600160481b039091168152602001610441565b3480156108cb575f5ffd5b506104696108da366004613a77565b6001600160a01b03165f9081527ff595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e102602052604090205490565b34801561091e575f5ffd5b506103886120c4565b348015610932575f5ffd5b506103886120d7565b348015610946575f5ffd5b506106a17f000000000000000000000000000000000000000000000000000000000000000081565b348015610979575f5ffd5b50610982612151565b6040516001600160e01b03199091168152602001610441565b3480156109a6575f5ffd5b506108a86109b5366004613a92565b61215b565b3480156109c5575f5ffd5b5061077c6109d4366004613a92565b61223b565b3480156109e4575f5ffd5b506104346122bd565b3480156109f8575f5ffd5b50610a0c610a07366004613a48565b6123a6565b6040516104419190613fd4565b348015610a24575f5ffd5b505f546001600160a01b03166106a1565b348015610a40575f5ffd5b50610469610a4f3660046140a0565b6124b8565b610469610a623660046140d1565b612685565b348015610a72575f5ffd5b50610a86610a81366004613a48565b61275b565b60405161044191906140fc565b348015610a9e575f5ffd5b506104697f000000000000000000000000000000000000000000000000000000000000000081565b348015610ad1575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000003f610469565b348015610b04575f5ffd5b506304722eaf60e31b610982565b348015610b1d575f5ffd5b506107d4610b2c366004613e84565b61280d565b348015610b3c575f5ffd5b5061077c612863565b348015610b50575f5ffd5b5061077c610b5f366004613a92565b612883565b348015610b6f575f5ffd5b50610496612954565b348015610b83575f5ffd5b50610b97610b92366004613a48565b61298b565b604051610441919061410e565b348015610baf575f5ffd5b50610469610bbe366004614120565b612a30565b348015610bce575f5ffd5b50610434612ac2565b348015610be2575f5ffd5b506106a17f000000000000000000000000000000000000000000000000000000000000000081565b348015610c15575f5ffd5b506001546001600160a01b03166106a1565b348015610c32575f5ffd5b506106a17f000000000000000000000000000000000000000000000000000000000000000081565b610388610c68366004613a92565b612b1c565b348015610c78575f5ffd5b50610388610c87366004613a77565b612c75565b348015610c97575f5ffd5b50610469610ca6366004613a48565b612ce5565b348015610cb6575f5ffd5b50610469610cc5366004614153565b612d73565b348015610cd5575f5ffd5b50610cde612eb0565b60405163ffffffff9091168152602001610441565b6040516311f9fbc960e21b81526001600160a01b03831660048201526024810182905273__$ae81277065e375dbfccbe8236469c17501$__906347e7ef24906044015b5f6040518083038186803b158015610d4c575f5ffd5b505af4158015610d5e573d5f5f3e3d5ffd5b505050505050565b6040805160028082528183019092526060915f91906020820181803683370190505090505f610d96601085614212565b610da1906030614233565b90505f610daf60108661424c565b610dba906030614233565b905060398260ff161115610dd657610dd3600783614233565b91505b60398160ff161115610df057610ded600782614233565b90505b8160f81b835f81518110610e0657610e0661426d565b60200101906001600160f81b03191690815f1a9053508060f81b83600181518110610e3357610e3361426d565b60200101906001600160f81b03191690815f1a90535091949350505050565b610e5a6136f0565b60405163f308da0f60e01b815273__$ae81277065e375dbfccbe8236469c17501$__9063f308da0f90610e939086908690600401614473565b61012060405180830381865af4925050508015610ecd575060408051601f3d908101601f19168201909252610eca918101906144d9565b60015b610f4057610ed961456a565b806308c379a003610f075750610eed614582565b80610ef85750610f09565b610f0181612ec6565b50610f43565b505b3d808015610f32576040519150601f19603f3d011682016040523d82523d5f602084013e610f37565b606091505b50610f01612ee0565b90505b92915050565b5f80610f767f00000000000000000000000000000000000000000000000000000000000000006003614604565b610fa0907f000000000000000000000000000000000000000000000000000000000000000061461b565b9050808362ffffff161080610fe2575080610fe062ffffff85167f000000000000000000000000000000000000000000000000000000000000000061461b565b105b15610ff957610ff18185614604565b915050610f43565b61102862ffffff84167f000000000000000000000000000000000000000000000000000000000000000061461b565b610ff19085614604565b5092915050565b5f610f4382612eeb565b5f610f4382612f47565b5f805b82811015611032573684848381811061106b5761106b61426d565b905060200281019061107d919061462e565b60405163194eb1ef60e21b815290915073__$ae81277065e375dbfccbe8236469c17501$__9063653ac7bc906110fb9084907f0000000000000000000000000000000000000000000000000000000000000000907f000000000000000000000000000000000000000000000000000000000000000090600401614776565b5f60405180830381865af492505050801561113757506040513d5f823e601f3d908101601f191682016040526111349190810190614806565b60015b6111fc5761114361456a565b806308c379a00361119a5750611157614582565b80611162575061119c565b5f5160206156845f395f51905f5261117d6020840184613a48565b8260405161118c92919061489e565b60405180910390a150611353565b505b3d8080156111c5576040519150601f19603f3d011682016040523d82523d5f602084013e6111ca565b606091505b505f5160206156845f395f51905f526111e66020840184613a48565b6111ee612f59565b60405161118c92919061489e565b604051637102a0df60e11b815273__$713c4f4487e8756194dbc5b3b091cd4345$__9063e20541be9061123f908a908a908a908a908a908a908a906004016148bf565b602060405180830381865af4925050508015611278575060408051601f3d908101601f1916820190925261127591810190614918565b60015b61133d5761128461456a565b806308c379a0036112db5750611298614582565b806112a357506112dd565b5f5160206156845f395f51905f526112be60208b018b613a48565b826040516112cd92919061489e565b60405180910390a15061134b565b505b3d808015611306576040519150601f19603f3d011682016040523d82523d5f602084013e61130b565b606091505b505f5160206156845f395f51905f5261132760208b018b613a48565b61132f612f59565b6040516112cd92919061489e565b611347818c61461b565b9a50505b505050505050505b50600101611050565b5f6113887f00000000000000000000000000000000000000000000000000000000000000006004614604565b6113b2907f000000000000000000000000000000000000000000000000000000000000000061461b565b610f439083614604565b5f346113cc3a8460200151610f49565b808210156113ec576113e7336113e2848461492f565b612fa8565b61142e565b6113f781600a614604565b82111561142e5761142e6040518060400160405280600f81526020016e1d1bdbc81b5d58da081c995dd85c99608a1b815250612ec6565b8461146461143b82612fef565b6040518060400160405280600b81526020016a696e76616c696420534c4160a81b81525061302a565b8461152a5f825f01516001600160a01b03163b1180156114e8575081516040516323d0872b60e11b81523060048201526001600160a01b03909116906347a10e5690602401602060405180830381865afa1580156114c4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114e89190614942565b80156114fc57505f826020015162ffffff16115b6040518060400160405280601081526020016f696e76616c69642063616c6c6261636b60801b81525061302a565b8551602087015161153e9190348b8b61303c565b9450336001600160a01b03167ffbe74eb38ea9de3d74d481a4f701ae121d794895c5797db8260d06d317901d263a34888c8c604051611581959493929190614961565b60405180910390a2505050509392505050565b6040516351cff8d960e01b81523360048201525f9073__$ae81277065e375dbfccbe8236469c17501$__906351cff8d990602401602060405180830381865af41580156115e3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116079190614918565b905061161333826131ba565b90565b5f5f5f5f5f611624866131ed565b600981015460058201546004909201546001600160881b0319608883901b16999298506001600160401b03600160c01b9182900481169850910416945092505050565b5f546001600160a01b03168061169d578180602001905181019061168b91906149ba565b9250905061169881613222565b6116e5565b336001600160a01b038216146116e55760405162461bcd60e51b815260206004820152600d60248201526c3737ba103a34329037bbb732b960991b604482015260640161040c565b6116ee8261323b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbe541580159061175f57507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbe547f00000000000000000000000000000000000000000000000000000000000000003f145b156117ac5760405162461bcd60e51b815260206004820152601c60248201527f616c726561647920696e697469616c697a656420636f64656861736800000000604482015260640161040c565b7f00000000000000000000000000000000000000000000000000000000000000003f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc600201557f00000000000000000000000000000000000000000000000000000000000000003f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166118505f546001600160a01b031690565b6001600160a01b03167fe73e754121f0bad1327816970101955bfffdf53d270ac509d777c25be070d7f6611882611d10565b60405161188f91906138c3565b60405180910390a45050565b6118a36136f0565b6118b28263ffffffff1661347c565b6040805160c081018252825463ffffffff8082168352640100000000820416602083015267ffffffffffffffff19600160401b909104831b168183015260018301546001600160801b0319608082811b82166060850152600160801b909204821b16818301528251908101909252919060a08301906002830160048282826020028201915b815481526020019060010190808311611937575050505050815250509050919050565b604051634cddf61560e01b8152600481018290525f9073__$713c4f4487e8756194dbc5b3b091cd4345$__90634cddf61590602401602060405180830381865af41580156119aa573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f439190614a16565b604051630a70cd2160e31b81526001600160401b03821660048201527f000000000000000000000000000000000000000000000000000000000000000060248201527f000000000000000000000000000000000000000000000000000000000000000060448201525f9073__$ae81277065e375dbfccbe8236469c17501$__906353866908906064015b602060405180830381865af4925050508015611a91575060408051601f3d908101601f19168201909252611a8e91810190614918565b60015b610f4357611a9d61456a565b806308c379a003611acb5750611ab1614582565b80611abc5750611acd565b611ac581612ec6565b50919050565b505b3d808015611af6576040519150601f19603f3d011682016040523d82523d5f602084013e611afb565b606091505b50611ac5612ee0565b919050565b5f805b828110156110325773__$ae81277065e375dbfccbe8236469c17501$__6355caae04858584818110611b4057611b4061426d565b9050602002016020810190611b559190613a48565b6040516001600160e01b031960e084901b1681526001600160401b0390911660048201527f000000000000000000000000000000000000000000000000000000000000000060248201527f00000000000000000000000000000000000000000000000000000000000000006044820152606401602060405180830381865af4925050508015611c01575060408051601f3d908101601f19168201909252611bfe91810190614918565b60015b611cfa57611c0d61456a565b806308c379a003611c7e5750611c21614582565b80611c2c5750611c80565b5f5160206156845f395f51905f52858584818110611c4c57611c4c61426d565b9050602002016020810190611c619190613a48565b82604051611c7092919061489e565b60405180910390a150611d08565b505b3d808015611ca9576040519150601f19603f3d011682016040523d82523d5f602084013e611cae565b606091505b505f5160206156845f395f51905f52858584818110611ccf57611ccf61426d565b9050602002016020810190611ce49190613a48565b611cec612f59565b604051611c7092919061489e565b611d04818461461b565b9250505b600101611b0c565b6060611d3b7f0000000000000000000000000000000000000000000000000000000000000000613490565b905090565b6060816001600160401b03811115611d5a57611d5a613aa9565b604051908082528060200260200182016040528015611d83578160200160208202803683370190505b5090505f5b8281101561103257611db1848483818110611da557611da561426d565b90506020020135612021565b828281518110611dc357611dc361426d565b60200260200101906006811115611ddc57611ddc613d07565b90816006811115611def57611def613d07565b905250600101611d88565b611e0261372b565b6040516359209b3960e01b81526004810183905273__$713c4f4487e8756194dbc5b3b091cd4345$__906359209b39906024015f60405180830381865af4158015611e4f573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610f439190810190614b1b565b5f7f00000000000000000000000000000000000000000000000000000000000000008015610f435750816001600160a01b0316611eba5f546001600160a01b031690565b6001600160a01b03161492915050565b611ed261372b565b5f80611ee084860186614d57565b604051638578337760e01b8152919350915073__$ae81277065e375dbfccbe8236469c17501$__90638578337790611f20908990869086906004016150a5565b5f60405180830381865af4925050508015611f5c57506040513d5f823e601f3d908101601f19168201604052611f599190810190614b1b565b60015b61201057611f6861456a565b806308c379a003611fa15750611f7c614582565b80611f875750611fa3565b8060405162461bcd60e51b815260040161040c91906138c3565b505b3d808015611fcc576040519150601f19603f3d011682016040523d82523d5f602084013e611fd1565b606091505b5060405162461bcd60e51b81526020600482015260136024820152723ab73430b7323632b21030b9b9b2b93a34b7b760691b604482015260640161040c565b925061201a915050565b9392505050565b5f61202b826131ed565b604051633962372d60e01b815260048101919091527f0000000000000000000000000000000000000000000000000000000000000000602482015273__$ae81277065e375dbfccbe8236469c17501$__90633962372d90604401602060405180830381865af41580156120a0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f43919061516d565b6120cc613531565b6120d55f613222565b565b60015433906001600160a01b031681146121455760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b606482015260840161040c565b61214e81613222565b50565b5f611d3b3061355d565b6040516345ac7f3f60e01b8152600481018290527f000000000000000000000000000000000000000000000000000000000000000060248201527f000000000000000000000000000000000000000000000000000000000000000060448201525f9073__$ae81277065e375dbfccbe8236469c17501$__906345ac7f3f90606401602060405180830381865af4925050508015612215575060408051601f3d908101601f19168201909252612212918101906151a1565b60015b61222157611a9d61456a565b6001600160481b03811680156110325761103233826131ba565b606073__$713c4f4487e8756194dbc5b3b091cd4345$__634cbc7ff861226084612021565b6040518263ffffffff1660e01b815260040161227c9190613f1d565b5f60405180830381865af4158015612296573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610f4391908101906151ba565b6122c56136f0565b5f5160206156645f395f51905f52545f9081527ff595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e101602052604090206040805160c081018252825463ffffffff8082168352640100000000820416602083015267ffffffffffffffff19600160401b909104831b168183015260018301546001600160801b0319608082811b82166060850152600160801b909204821b16818301528251908101909252919060a08301906002830160048282826020028201915b81548152602001906001019080831161238557505050505081525050905090565b61243c6040805161014081019091525f60c0820181815260e083018290526060610100840152610120830191909152819081526040805160a0810182525f808252602082810182905292820181905260608083015260808201529101908152604080516060810182525f80825260208281018290529282015291019081525f602082018190526040820181905260609091015290565b60405163467e6f5160e11b81526001600160401b038316600482015273__$713c4f4487e8756194dbc5b3b091cd4345$__90638cfcdea2906024015f60405180830381865af4158015612491573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610f439190810190615394565b60405163194eb1ef60e21b81525f9073__$ae81277065e375dbfccbe8236469c17501$__9063653ac7bc906125359085907f0000000000000000000000000000000000000000000000000000000000000000907f000000000000000000000000000000000000000000000000000000000000000090600401614776565b5f60405180830381865af492505050801561257157506040513d5f823e601f3d908101601f1916820160405261256e9190810190614806565b60015b61257d57611a9d61456a565b604051637102a0df60e11b815273__$713c4f4487e8756194dbc5b3b091cd4345$__9063e20541be906125c0908a908a908a908a908a908a908a906004016148bf565b602060405180830381865af49250505080156125f9575060408051601f3d908101601f191682019092526125f691810190614918565b60015b61266c5761260561456a565b806308c379a0036126335750612619614582565b806126245750612635565b61262d81612ec6565b50612679565b505b3d80801561265e576040519150601f19603f3d011682016040523d82523d5f602084013e612663565b606091505b5061262d612ee0565b9998505050505050505050565b50505050505050919050565b5f346126903a61135c565b808210156126ab576126a6336113e2848461492f565b6126ed565b6126b681600a614604565b8211156126ed576126ed6040518060400160405280600f81526020016e1d1bdbc81b5d58da081c995dd85c99608a1b815250612ec6565b836126fa61143b82612fef565b612707335f34898961303c565b9350336001600160a01b03167ffbe74eb38ea9de3d74d481a4f701ae121d794895c5797db8260d06d317901d263a34878a8a60405161274a959493929190614961565b60405180910390a250505092915050565b61279160405180608001604052805f6001600160a01b031681526020015f62ffffff168152602001606081526020015f81525090565b60405163a667533f60e01b81526001600160401b038316600482015273__$713c4f4487e8756194dbc5b3b091cd4345$__9063a667533f906024015f60405180830381865af41580156127e6573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610f43919081019061546e565b61281561372b565b5f8061282384860186614d57565b604051631ac0750360e01b8152919350915073__$ae81277065e375dbfccbe8236469c17501$__90631ac0750390611f20908990869086906004016150a5565b60606040518060600160405260238152806020016156a460239139905090565b606073__$39c1c75f9ff01712a7ae2d1d1d8c462aa1$__6371aad10d73__$713c4f4487e8756194dbc5b3b091cd4345$__6359209b39856040518263ffffffff1660e01b81526004016128d891815260200190565b5f60405180830381865af41580156128f2573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526129199190810190614b1b565b6040516020016129299190613d98565b6040516020818303038152906040526040518263ffffffff1660e01b815260040161227c91906138c3565b5f7ff595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e18354611d3b906001600160401b0316600161549f565b6040805160a0810182525f80825260208201819052918101829052606080820152608081019190915260405163ca7da98b60e01b81526001600160401b038316600482015273__$713c4f4487e8756194dbc5b3b091cd4345$__9063ca7da98b906024015f60405180830381865af4158015612a09573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610f4391908101906154be565b5f6020825f015161ffff1611612a46575f612a98565b8151602090612a569082906154ef565b612a609190615509565b61ffff16612a8e7f000000000000000000000000000000000000000000000000000000000000000086614604565b612a989190614604565b6040830151612ab0906001600160401b031685614604565b612aba919061461b565b949350505050565b612aca6136f0565b506040805160c0810182525f808252602080830182905282840182905260608084018390526080808501849052855190810186528381529182018390529381018290529283015260a081019190915290565b80600180612b2983612021565b6006811115612b3a57612b3a613d07565b14612bc557604051638f191e5f60e01b8152612bc09073__$713c4f4487e8756194dbc5b3b091cd4345$__90638f191e5f90612b7a908590600401613f1d565b5f60405180830381865af4158015612b94573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612bbb91908101906151ba565b612ec6565b505050565b5f612bcf846131ed565b90505f346009830154612bf29190600160781b90046001600160481b031661461b565b6009830180546001600160481b038316600160781b0268ffffffffffffffffff60781b19909116179055604080516001600160401b03881681523360208201523a818301526060810183905290519192507f66f95ec285ca572fa1cac40e7019e14ab45a8fc619c6405222e8af55534c2f67919081900360800190a15050505050565b612c7d613531565b600180546001600160a01b0383166001600160a01b03199091168117909155612cad5f546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b604051631572ab8160e21b81526001600160401b03821660048201527f000000000000000000000000000000000000000000000000000000000000000060248201527f000000000000000000000000000000000000000000000000000000000000000060448201525f9073__$ae81277065e375dbfccbe8236469c17501$__906355caae0490606401611a58565b6040516334c20ee360e01b81525f9073__$ae81277065e375dbfccbe8236469c17501$__906334c20ee390612df890899089908990899089907f0000000000000000000000000000000000000000000000000000000000000000907f00000000000000000000000000000000000000000000000000000000000000009060040161552c565b602060405180830381865af4925050508015612e31575060408051601f3d908101601f19168201909252612e2e91810190614918565b60015b612ea457612e3d61456a565b806308c379a003612e6b5750612e51614582565b80612e5c5750612e6d565b612e6581612ec6565b50612ea7565b505b3d808015612e96576040519150601f19603f3d011682016040523d82523d5f602084013e612e9b565b606091505b50612e65612ee0565b90505b95945050505050565b5f611d3b5f5160206156645f395f51905f525490565b612ece612863565b816040516020016103e692919061559d565b6120d5612bbb612f59565b5f6001600160401b03821615612f1b576014612f075f846155bd565b612f1191906155dc565b610f43905f61549f565b6001600160401b03821615612f4057602d612f365f846155bd565b610f4391906155dc565b505f919050565b5f610f43612f5483612eeb565b61359b565b60606040518060400160405260108152806020016f2bb4ba27b930b1b632a230ba30a634b160811b815250604051602001612f949190615609565b604051602081830303815290604052905090565b604051632770a7eb60e21b81526001600160a01b03831660048201526024810182905273__$ae81277065e375dbfccbe8236469c17501$__90639dc29fac90604401610d36565b5f5f826020015161ffff161180156130105750607f826020015161ffff1611155b8015610f43575050604001516001600160401b0316151590565b816130385761303881612ec6565b5050565b5f7ff595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e18380545f90613074906001600160401b0316615639565b91906101000a8154816001600160401b0302191690836001600160401b0316021790556001600160401b031690505f6130ac826131ed565b6009810180546001600160c01b0316600160c01b436001600160401b03160217905590506130e382856130de866135a7565b6135fa565b60098201805460889290921c6001600160c01b031990921691909117600160781b6001600160481b0388160217905580546001600160a01b0319166001600160a01b0388161781556002810184905562ffffff86161561315857805462ffffff60a01b1916600160a01b62ffffff8816021781555b82516008909101805460208501516040909501516001600160401b0316640100000000026bffffffffffffffff000000001961ffff968716620100000263ffffffff199093169690941695909517179190911692909217909155949350505050565b6040516001600160a01b0383169082156108fc029083905f818181858888f19350505050158015612bc0573d5f5f3e3d5ffd5b5f7ff595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e1835b5f928352600101602052506040902090565b600180546001600160a01b031916905561214e81613669565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbe546133b0576040805160c0810182525f80825260208083018281528385018381526060808601858152608080880187815289518083018b52888152808801899052808b0189905293840188905260a089019384529680527ff595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e10190955286517fc183f9983e4d9665af3c4426441c2490530d67a07a506de5a3030081c7e86fd680549551945190991c600160401b026001600160401b0363ffffffff9586166401000000000267ffffffffffffffff199097169590921694909417949094179390931691909117865590519251821c600160801b029290911c919091177fc183f9983e4d9665af3c4426441c2490530d67a07a506de5a3030081c7e86fd755519091906133aa907fc183f9983e4d9665af3c4426441c2490530d67a07a506de5a3030081c7e86fd89060046137a6565b50505050565b80511561214e575f818060200190518101906133cc91906144d9565b9050805f5160206156645f395f51905f52825163ffffffff9081165f9081526001928301602090815260409182902085518154928701518785015190941c600160401b026001600160401b039486166401000000000267ffffffffffffffff19909416919095161791909117919091169190911781556060830151608080850151811c600160801b0291901c179181019190915560a082015161347590600283019060046137a6565b5050505050565b5f5f5160206156645f395f51905f52613210565b60605f61349c836136b8565b6001600160401b038111156134b3576134b3613aa9565b6040519080825280601f01601f1916602001820160405280156134dd576020820181803683370190505b5090505f5b8151811015611032578381602081106134fd576134fd61426d565b1a60f81b8282815181106135135761351361426d565b60200101906001600160f81b03191690815f1a9053506001016134e2565b5f546001600160a01b031633146120d55760405163118cdaa760e01b815233600482015260240161040c565b604080516001600160a01b038316602082015246918101919091525f906060015b604051602081830303815290604052805190602001209050919050565b5f610f43600a836155dc565b5f815f01518260200151836040015160405160200161357e9392919060f093841b6001600160f01b031990811682529290931b909116600283015260c01b6001600160c01b0319166004820152600c0190565b5f6136043061355d565b61360f60014361492f565b604080516001600160e01b031990931660208401529040908201526001600160401b03851660608201526080810184905260a0810183905260c0016040516020818303038152906040528051906020012090509392505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f5b6020811015611b04578181602081106136d5576136d561426d565b1a60f81b6001600160f81b03191615611b04576001016136ba565b6040805160c0810182525f8082526020820181905291810182905260608101829052608081019190915260a081016137266137e4565b905290565b6040805160c08101909152805f81526020015f81526020015f81526020015f81526020015f6001600160401b03168152602001613726604080516101008101909152606060c082019081525f60e0830152819081525f6020820181905260408201819052606082018190526080820181905260a09091015290565b82600481019282156137d4579160200282015b828111156137d45782518255916020019190600101906137b9565b506137e0929150613802565b5090565b60405180608001604052806004906020820280368337509192915050565b5b808211156137e0575f8155600101613803565b5f81518060208401855e5f93019283525090919050565b7f5769746e657455706772616461626c65426173653a206e6f7420696d706c656d8152680cadce8cac8744060f60bb1b60208201525f61388b61388561387f613879602986018a613816565b88613816565b86613816565b84613816565b9695505050505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61201a6020830184613895565b5f5f83601f8401126138e5575f5ffd5b5081356001600160401b038111156138fb575f5ffd5b6020830191508360208260051b8501011115613915575f5ffd5b9250929050565b5f5f6020838503121561392d575f5ffd5b82356001600160401b03811115613942575f5ffd5b61394e858286016138d5565b90969095509350505050565b5f6101208201905063ffffffff835116825263ffffffff60208401511660208301526001600160401b031960408401511660408301526001600160801b031960608401511660608301526001600160801b0319608084015116608083015260a083015160a083015f5b60048110156139e25782518252602092830192909101906001016139c3565b50505092915050565b62ffffff8116811461214e575f5ffd5b5f5f60408385031215613a0c575f5ffd5b823591506020830135613a1e816139eb565b809150509250929050565b6001600160401b038116811461214e575f5ffd5b8035611b0481613a29565b5f60208284031215613a58575f5ffd5b813561201a81613a29565b6001600160a01b038116811461214e575f5ffd5b5f60208284031215613a87575f5ffd5b813561201a81613a63565b5f60208284031215613aa2575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b606081018181106001600160401b0382111715613adc57613adc613aa9565b60405250565b604081018181106001600160401b0382111715613adc57613adc613aa9565b60c081018181106001600160401b0382111715613adc57613adc613aa9565b601f8201601f191681016001600160401b0381118282101715613b4557613b45613aa9565b6040525050565b60405161161360c082613b20565b61ffff8116811461214e575f5ffd5b5f60608284031215613b79575f5ffd5b604051613b8581613abd565b8091508235613b9381613b5a565b81526020830135613ba381613b5a565b60208201526040830135613bb681613a29565b6040919091015292915050565b5f5f5f83850360c0811215613bd6575f5ffd5b84359350613be78660208701613b69565b92506040607f1982011215613bfa575f5ffd5b50604051613c0781613ae2565b6080850135613c1581613a63565b815260a0850135613c25816139eb565b602082015292959194509192509050565b5f6001600160401b03821115613c4e57613c4e613aa9565b50601f01601f191660200190565b5f60208284031215613c6c575f5ffd5b81356001600160401b03811115613c81575f5ffd5b8201601f81018413613c91575f5ffd5b8035613c9c81613c36565b604051613ca98282613b20565b828152866020848601011115613cbd575f5ffd5b826020850160208301375f9281016020019290925250949350505050565b63ffffffff8116811461214e575f5ffd5b5f60208284031215613cfc575f5ffd5b813561201a81613cdb565b634e487b7160e01b5f52602160045260245ffd5b6101008110613d2c57613d2c613d07565b9052565b60208101610f438284613d1b565b60078110613d2c57613d2c613d07565b602080825282518282018190525f918401906040840190835b81811015613d8d57613d7a838551613d3e565b6020938401939290920191600101613d67565b509095945050505050565b60208152613daa602082018351613d1b565b5f602083015160148110613dc057613dc0613d07565b8060408401525060408301516060830152606083015160808301526001600160401b0360808401511660a083015260a083015160c080840152805160c060e0850152805160406101a0860152613e1a6101e0860182613895565b6020928301516101c08701529183015160ff1661010086015250604082015190613e4a61012086018360ff169052565b606083015160ff1661014086015260808301516001600160401b0380821661016088015260a0909401519384166101808701529150612ea7565b5f5f5f60408486031215613e96575f5ffd5b83356001600160401b03811115613eab575f5ffd5b840160e08187031215613ebc575f5ffd5b925060208401356001600160401b03811115613ed6575f5ffd5b8401601f81018613613ee6575f5ffd5b80356001600160401b03811115613efb575f5ffd5b866020828401011115613f0c575f5ffd5b939660209190910195509293505050565b60208101610f438284613d3e565b60018060a01b03815116825262ffffff60208201511660208301525f604082015160806040850152613f606080850182613895565b606093840151949093019390935250919050565b60018060a01b0381511682526001600160401b036020820151166020830152604081015160408301525f606082015160a06060850152613fb760a0850182613895565b6080938401516001600160a01b0316949093019390935250919050565b602081525f82516101006020840152613ff1610120840182613f2b565b90506020840151601f1984830301604085015261400e8282613f74565b915050604084015161404b606085018261ffff815116825261ffff60208201511660208301526001600160401b0360408201511660408301525050565b5060608401516001600160881b03191660c084015260808401516001600160481b031660e084015260a0909301516001600160401b0316610100909201919091525090565b5f60c08284031215611ac5575f5ffd5b5f602082840312156140b0575f5ffd5b81356001600160401b038111156140c5575f5ffd5b612aba84828501614090565b5f5f608083850312156140e2575f5ffd5b823591506140f38460208501613b69565b90509250929050565b602081525f61201a6020830184613f2b565b602081525f61201a6020830184613f74565b5f5f5f60a08486031215614132575f5ffd5b833592506020840135915061414a8560408601613b69565b90509250925092565b5f5f5f5f5f60608688031215614167575f5ffd5b85356001600160401b0381111561417c575f5ffd5b614188888289016138d5565b90965094505060208601356001600160401b038111156141a6575f5ffd5b6141b288828901614090565b93505060408601356001600160401b038111156141cd575f5ffd5b6141d9888289016138d5565b969995985093965092949392505050565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f60ff831680614224576142246141ea565b8060ff84160491505092915050565b60ff8181168382160190811115610f4357610f436141fe565b5f60ff83168061425e5761425e6141ea565b8060ff84160691505092915050565b634e487b7160e01b5f52603260045260245ffd5b67ffffffffffffffff198116811461214e575f5ffd5b6001600160801b03198116811461214e575f5ffd5b8035611b0481614297565b60808183375050565b60408183375050565b5f5f8335601e198436030181126142de575f5ffd5b83016020810192503590506001600160401b038111156142fc575f5ffd5b8060071b3603821315613915575f5ffd5b8183526020830192505f815f5b8481101561433a576080828737608095860195919091019060010161431a565b5093949350505050565b5f8383855260208501945060208460051b820101835f5b8681101561446757838303601f1901885281353687900361017e19018112614381575f5ffd5b8601803561438e81613cdb565b63ffffffff16845260208101356143a481613cdb565b63ffffffff16602085015260408101356143bd81614281565b67ffffffffffffffff1916604085015260608101356143db81614297565b6001600160801b03191660608501526143f6608082016142ac565b6001600160801b031916608085015261441560a08086019083016142b7565b614427610120850161012083016142c0565b6144356101608201826142c9565b915061018061016086015261444f6101808601838361430d565b60209a8b019a9095509390930192505060010161435b565b50909695505050505050565b602081525f612aba602083018486614344565b5f82601f830112614495575f5ffd5b6040516144a3608082613b20565b8060808401858111156144b4575f5ffd5b845b818110156144ce5780518352602092830192016144b6565b509195945050505050565b5f6101208284031280156144eb575f5ffd5b506040516144f881613b01565b825161450381613cdb565b8152602083015161451381613cdb565b6020820152604083015161452681614281565b6040820152606083015161453981614297565b6060820152608083015161454c81614297565b608082015261455e8460a08501614486565b60a08201529392505050565b5f60033d11156116135760045f5f3e505f5160e01c90565b5f60443d101561458f5790565b6040513d600319016004823e80513d60248201116001600160401b03821117156145b857505090565b80820180516001600160401b038111156145d3575050505090565b3d84016003190182820160200111156145ed575050505090565b6145fc60208285010185613b20565b509392505050565b8082028115828204841417610f4357610f436141fe565b80820180821115610f4357610f436141fe565b5f823560be19833603018112614642575f5ffd5b9190910192915050565b6001600160881b03198116811461214e575f5ffd5b5f5f8335601e19843603018112614676575f5ffd5b83016020810192503590506001600160401b03811115614694575f5ffd5b803603821315613915575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f81356146d681613a29565b6001600160401b0316835260208201356146ef8161464c565b6001600160881b031916602084015261470b6040830183614661565b60c0604086015261472060c0860182846146a2565b915050606083013561473181613a29565b6001600160401b0316606085015261474c6080840184614661565b858303608087015261475f8382846146a2565b60a095860135969095019590955250919392505050565b606081525f61478860608301866146ca565b60208301949094525060400152919050565b8051611b0481613a29565b5f6147af83613c36565b6040516147bc8282613b20565b8092508481528585850111156147d0575f5ffd5b8484602083015e5f6020868301015250509392505050565b5f82601f8301126147f7575f5ffd5b61201a838351602085016147a5565b5f5f5f5f5f5f5f60e0888a03121561481c575f5ffd5b875161482781613a63565b602089015160408a0151919850965061483f81613a29565b606089015190955061485081613a29565b608089015190945061486181613a29565b60a089015160c08a015191945092506001600160401b03811115614883575f5ffd5b61488f8a828b016147e8565b91505092959891949750929550565b6001600160401b0383168152604060208201525f612aba6040830184613895565b60018060a01b03881681528660208201526001600160401b03861660408201526001600160401b03851660608201526001600160401b03841660808201528260a082015260e060c08201525f61266c60e0830184613895565b5f60208284031215614928575f5ffd5b5051919050565b81810381811115610f4357610f436141fe565b5f60208284031215614952575f5ffd5b8151801515811461201a575f5ffd5b858152602081018590526001600160401b03841660408201526060810183905260e0810161388b608083018461ffff815116825261ffff60208201511660208301526001600160401b0360408201511660408301525050565b5f5f604083850312156149cb575f5ffd5b82516149d681613a63565b60208401519092506001600160401b038111156149f1575f5ffd5b6149fd858286016147e8565b9150509250929050565b80516101008110611b04575f5ffd5b5f60208284031215614a26575f5ffd5b61201a82614a07565b805160ff81168114611b04575f5ffd5b5f60c08284031215614a4f575f5ffd5b604051614a5b81613b01565b80915082516001600160401b03811115614a73575f5ffd5b830160408186031215614a84575f5ffd5b604051614a9081613ae2565b81516001600160401b03811115614aa5575f5ffd5b614ab1878285016147e8565b825250602091820151828201528252614acb908401614a2f565b6020820152614adc60408401614a2f565b6040820152614aed60608401614a2f565b6060820152614afe6080840161479a565b6080820152614b0f60a0840161479a565b60a08201525092915050565b5f60208284031215614b2b575f5ffd5b81516001600160401b03811115614b40575f5ffd5b820160c08185031215614b51575f5ffd5b604051614b5d81613b01565b614b6682614a07565b8152602082015160148110614b79575f5ffd5b60208201526040828101519082015260608083015190820152614b9e6080830161479a565b608082015260a08201516001600160401b03811115614bbb575f5ffd5b614bc786828501614a3f565b60a083015250949350505050565b5f6001600160401b03821115614bed57614bed613aa9565b5060051b60200190565b5f82601f830112614c06575f5ffd5b6040515f90614c16608082613b20565b9050806080840185811115614c29575f5ffd5b845b81811015613d8d578035845260209384019301614c2b565b5f82601f830112614c52575f5ffd5b604080515f91614c629082613b20565b9050806040840185811115614c29575f5ffd5b5f82601f830112614c84575f5ffd5b8135614c8f81614bd5565b604051614c9c8282613b20565b80915082815260208101915060208360071b860101925085831115614cbf575f5ffd5b602085015b83811015614ce657614cd68782614bf7565b8352602090920191608001614cc4565b5095945050505050565b5f82601f830112614cff575f5ffd5b8135614d0a81614bd5565b604051614d178282613b20565b80915082815260208101915060208360051b860101925085831115614d3a575f5ffd5b602085015b83811015614ce6578035835260209283019201614d3f565b5f5f60408385031215614d68575f5ffd5b82356001600160401b03811115614d7d575f5ffd5b8301601f81018513614d8d575f5ffd5b8035614d9881614bd5565b604051614da58282613b20565b80915082815260208101915060208360051b850101925087831115614dc8575f5ffd5b602084015b83811015614eea5780356001600160401b03811115614dea575f5ffd5b8501808a03601f1901610180811215614e01575f5ffd5b604051614e0d81613abd565b610120821215614e1b575f5ffd5b6040519150614e2982613b01565b6020830135614e3781613cdb565b82526040830135614e4781613cdb565b60208301526060830135614e5a81614281565b60408301526080830135614e6d81614297565b6060830152614e7e60a084016142ac565b6080830152614e908c60c08501614bf7565b60a0830152818152614ea68c6101408501614c43565b602082015261018083013591506001600160401b03821115614ec6575f5ffd5b614ed58c602084860101614c75565b60408201528552505060209283019201614dcd565b50945050505060208301356001600160401b03811115614f08575f5ffd5b6149fd85828601614cf0565b805f5b60048110156133aa578151845260209384019390910190600101614f17565b805f5b60028110156133aa578151845260209384019390910190600101614f39565b5f8151808452602084019350602083015f5b8281101561433a57614f7d868351614f14565b6080959095019460209190910190600101614f6a565b5f82825180855260208501945060208160051b830101602085015f5b8381101561446757601f198584030188528151805163ffffffff815116855263ffffffff60208201511660208601526001600160401b031960408201511660408601526001600160801b031960608201511660608601526001600160801b0319608082015116608086015260a0810151905061502e60a0860182614f14565b506020810151615042610120860182614f36565b5060400151610180610160850181905261505e90850182614f58565b6020998a0199909450929092019150600101614faf565b5f8151808452602084019350602083015f5b8281101561433a578151865260209586019590910190600101615087565b6060808252843590820152602084013560808201525f60408501356150c981613b5a565b61ffff1660a083015260608501356150e081613b5a565b61ffff1660c083015260808501356150f781613a29565b6001600160401b031660e083015261511160a08601613a3d565b6001600160401b031661010083015261512d60c0860186614661565b60e0610120850152615144610140850182846146a2565b91505082810360208401526151598186614f93565b9050828103604084015261388b8185615075565b5f6020828403121561517d575f5ffd5b81516007811061201a575f5ffd5b80516001600160481b0381168114611b04575f5ffd5b5f602082840312156151b1575f5ffd5b61201a8261518b565b5f602082840312156151ca575f5ffd5b81516001600160401b038111156151df575f5ffd5b8201601f810184136151ef575f5ffd5b612aba848251602084016147a5565b5f6080828403121561520e575f5ffd5b604051608081018181106001600160401b038211171561523057615230613aa9565b8060405250809150825161524381613a63565b81526020830151615253816139eb565b602082015260408301516001600160401b03811115615270575f5ffd5b61527c858286016147e8565b604083015250606092830151920191909152919050565b5f60a082840312156152a3575f5ffd5b60405160a081018181106001600160401b03821117156152c5576152c5613aa9565b806040525080915082516152d881613a63565b815260208301516152e881613a29565b60208201526040838101519082015260608301516001600160401b0381111561530f575f5ffd5b61531b858286016147e8565b606083015250608083015161532f81613a63565b6080919091015292915050565b5f6060828403121561534c575f5ffd5b60405161535881613abd565b809150825161536681613b5a565b8152602083015161537681613b5a565b60208201526040830151613bb681613a29565b8051611b048161464c565b5f602082840312156153a4575f5ffd5b81516001600160401b038111156153b9575f5ffd5b820161010081850312156153cb575f5ffd5b6153d3613b4c565b81516001600160401b038111156153e8575f5ffd5b6153f4868285016151fe565b82525060208201516001600160401b0381111561540f575f5ffd5b61541b86828501615293565b60208301525061542e856040840161533c565b604082015261543f60a08301615389565b606082015261545060c0830161518b565b608082015261546160e0830161479a565b60a0820152949350505050565b5f6020828403121561547e575f5ffd5b81516001600160401b03811115615493575f5ffd5b612aba848285016151fe565b6001600160401b038181168382160190811115610f4357610f436141fe565b5f602082840312156154ce575f5ffd5b81516001600160401b038111156154e3575f5ffd5b612aba84828501615293565b61ffff8281168282160390811115610f4357610f436141fe565b5f61ffff83168061551c5761551c6141ea565b8061ffff84160491505092915050565b60a081525f61553f60a08301898b614344565b828103602084015261555181896146ca565b838103604085015286815290506001600160fb1b03861115615571575f5ffd5b8560051b8088602084013760608401959095526080909201929092529091016020019695505050505050565b5f6155a88285613816565b6101d160f51b8152612ea76002820185613816565b6001600160401b038281168282160390811115610f4357610f436141fe565b5f6001600160401b038316806155f4576155f46141ea565b806001600160401b0384160491505092915050565b5f6156148284613816565b741d103ab73430b7323632b21030b9b9b2b93a34b7b760591b81526015019392505050565b5f6001600160401b0382166001600160401b03810361565a5761565a6141fe565b6001019291505056fef595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e1007ae9f29e9f698fdd92cfb045617624fdc0c640b517e34bc5670b6ada3b54b48b5769744f7261636c6554727573746c65737355706772616461626c6544656661756c74a2646970667358221220d0eb146e0a751e41a5065d2faeede750b475f79fa21faa247ee7ec61755c714164736f6c634300081e0033",
  "linkReferences": {
    "project/contracts/data/WitOracleDataLib.sol": {
      "WitOracleDataLib": [
        {
          "length": 20,
          "start": 6745
        },
        {
          "length": 20,
          "start": 8640
        },
        {
          "length": 20,
          "start": 9830
        },
        {
          "length": 20,
          "start": 10893
        },
        {
          "length": 20,
          "start": 11432
        },
        {
          "length": 20,
          "start": 11738
        },
        {
          "length": 20,
          "start": 12285
        },
        {
          "length": 20,
          "start": 12527
        },
        {
          "length": 20,
          "start": 12832
        },
        {
          "length": 20,
          "start": 13216
        }
      ]
    },
    "project/contracts/data/WitOracleTrustlessDataLib.sol": {
      "WitOracleTrustlessDataLib": [
        {
          "length": 20,
          "start": 5478
        },
        {
          "length": 20,
          "start": 5815
        },
        {
          "length": 20,
          "start": 6365
        },
        {
          "length": 20,
          "start": 7673
        },
        {
          "length": 20,
          "start": 8840
        },
        {
          "length": 20,
          "start": 9060
        },
        {
          "length": 20,
          "start": 10050
        },
        {
          "length": 20,
          "start": 10422
        },
        {
          "length": 20,
          "start": 10765
        },
        {
          "length": 20,
          "start": 11543
        },
        {
          "length": 20,
          "start": 12421
        },
        {
          "length": 20,
          "start": 13727
        },
        {
          "length": 20,
          "start": 13778
        },
        {
          "length": 20,
          "start": 14363
        }
      ]
    },
    "project/contracts/libs/WitOracleResultStatusLib.sol": {
      "WitOracleResultStatusLib": [
        {
          "length": 20,
          "start": 12501
        }
      ]
    }
  },
  "deployedLinkReferences": {
    "project/contracts/data/WitOracleDataLib.sol": {
      "WitOracleDataLib": [
        {
          "length": 20,
          "start": 4619
        },
        {
          "length": 20,
          "start": 6514
        },
        {
          "length": 20,
          "start": 7704
        },
        {
          "length": 20,
          "start": 8767
        },
        {
          "length": 20,
          "start": 9306
        },
        {
          "length": 20,
          "start": 9612
        },
        {
          "length": 20,
          "start": 10159
        },
        {
          "length": 20,
          "start": 10401
        },
        {
          "length": 20,
          "start": 10706
        },
        {
          "length": 20,
          "start": 11090
        }
      ]
    },
    "project/contracts/data/WitOracleTrustlessDataLib.sol": {
      "WitOracleTrustlessDataLib": [
        {
          "length": 20,
          "start": 3352
        },
        {
          "length": 20,
          "start": 3689
        },
        {
          "length": 20,
          "start": 4239
        },
        {
          "length": 20,
          "start": 5547
        },
        {
          "length": 20,
          "start": 6714
        },
        {
          "length": 20,
          "start": 6934
        },
        {
          "length": 20,
          "start": 7924
        },
        {
          "length": 20,
          "start": 8296
        },
        {
          "length": 20,
          "start": 8639
        },
        {
          "length": 20,
          "start": 9417
        },
        {
          "length": 20,
          "start": 10295
        },
        {
          "length": 20,
          "start": 11601
        },
        {
          "length": 20,
          "start": 11652
        },
        {
          "length": 20,
          "start": 12237
        }
      ]
    },
    "project/contracts/libs/WitOracleResultStatusLib.sol": {
      "WitOracleResultStatusLib": [
        {
          "length": 20,
          "start": 10375
        }
      ]
    }
  },
  "immutableReferences": {
    "9009": [
      {
        "length": 32,
        "start": 7447
      }
    ],
    "9013": [
      {
        "length": 32,
        "start": 3048
      }
    ],
    "9104": [
      {
        "length": 32,
        "start": 1769
      }
    ],
    "10085": [
      {
        "length": 32,
        "start": 2380
      }
    ],
    "10087": [
      {
        "length": 32,
        "start": 5006
      }
    ],
    "10089": [
      {
        "length": 32,
        "start": 4028
      },
      {
        "length": 32,
        "start": 4100
      }
    ],
    "10091": [
      {
        "length": 32,
        "start": 3964
      }
    ],
    "10093": [
      {
        "length": 32,
        "start": 3920
      },
      {
        "length": 32,
        "start": 4962
      },
      {
        "length": 32,
        "start": 10857
      }
    ],
    "12554": [
      {
        "length": 32,
        "start": 1215
      },
      {
        "length": 32,
        "start": 4273
      },
      {
        "length": 32,
        "start": 6636
      },
      {
        "length": 32,
        "start": 7035
      },
      {
        "length": 32,
        "start": 8258
      },
      {
        "length": 32,
        "start": 8561
      },
      {
        "length": 32,
        "start": 9451
      },
      {
        "length": 32,
        "start": 11523
      },
      {
        "length": 32,
        "start": 11694
      }
    ],
    "12557": [
      {
        "length": 32,
        "start": 2724
      },
      {
        "length": 32,
        "start": 4307
      },
      {
        "length": 32,
        "start": 6674
      },
      {
        "length": 32,
        "start": 7073
      },
      {
        "length": 32,
        "start": 8599
      },
      {
        "length": 32,
        "start": 9485
      },
      {
        "length": 32,
        "start": 11561
      },
      {
        "length": 32,
        "start": 11728
      }
    ],
    "45715": [
      {
        "length": 32,
        "start": 3128
      }
    ],
    "45824": [
      {
        "length": 32,
        "start": 1665
      },
      {
        "length": 32,
        "start": 2772
      },
      {
        "length": 32,
        "start": 5949
      },
      {
        "length": 32,
        "start": 6062
      },
      {
        "length": 32,
        "start": 6133
      },
      {
        "length": 32,
        "start": 6167
      }
    ],
    "45828": [
      {
        "length": 32,
        "start": 1848
      },
      {
        "length": 32,
        "start": 7801
      }
    ]
  },
  "inputSourceName": "project/contracts/core/upgradable/WitOracleTrustlessUpgradableDefault.sol",
  "buildInfoId": "solc-0_8_30-47301052af11a5aa5062e9b98ca44d5e142950cf"
}