{
  "contractName": "BaseBidOnAddresses",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "ApprovalForAll",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "contract IERC1155",
          "name": "contractAddress",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "collateralTokenId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "uint64",
          "name": "oracleId",
          "type": "uint64"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "CollateralWithdrawn",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "customer",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "condition",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "ConditionCreated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "contract IERC1155",
          "name": "collateralContractAddress",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "collateralTokenId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "DonateCollateral",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint64",
          "name": "oracleId",
          "type": "uint64"
        }
      ],
      "name": "OracleCreated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint64",
          "name": "oracleId",
          "type": "uint64"
        }
      ],
      "name": "OracleFinished",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "oracleOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint64",
          "name": "oracleId",
          "type": "uint64"
        }
      ],
      "name": "OracleOwnerChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint64",
          "name": "oracleId",
          "type": "uint64"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "condition",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "numerator",
          "type": "uint256"
        }
      ],
      "name": "ReportedNumerator",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint64",
          "name": "oracleId",
          "type": "uint64"
        },
        {
          "indexed": true,
          "internalType": "uint64[]",
          "name": "conditions",
          "type": "uint64[]"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "numerators",
          "type": "uint256[]"
        }
      ],
      "name": "ReportedNumeratorsBatch",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "ids",
          "type": "uint256[]"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "values",
          "type": "uint256[]"
        }
      ],
      "name": "TransferBatch",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "TransferSingle",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "value",
          "type": "string"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "URI",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "accounts",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "ids",
          "type": "uint256[]"
        }
      ],
      "name": "balanceOfBatch",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_newOracleOwner",
          "type": "address"
        },
        {
          "internalType": "uint64",
          "name": "_oracleId",
          "type": "uint64"
        }
      ],
      "name": "changeOracleOwner",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IERC1155",
          "name": "_collateralContractAddress",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_collateralTokenId",
          "type": "uint256"
        },
        {
          "internalType": "uint64",
          "name": "_oracleId",
          "type": "uint64"
        },
        {
          "internalType": "uint256",
          "name": "_condition",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_user",
          "type": "address"
        }
      ],
      "name": "collateralOwing",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "conditionOwners",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IERC1155",
          "name": "_collateralContractAddress",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_collateralTokenId",
          "type": "uint256"
        },
        {
          "internalType": "uint64",
          "name": "_oracleId",
          "type": "uint64"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "donate",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IERC1155",
          "name": "_collateralContractAddress",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_collateralTokenId",
          "type": "uint256"
        },
        {
          "internalType": "uint64",
          "name": "_oracleId",
          "type": "uint64"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "gatherDeFiProfit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_oracleId",
          "type": "uint64"
        }
      ],
      "name": "gracePeriodEnd",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "isApprovedForAll",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_user",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_condition",
          "type": "uint256"
        }
      ],
      "name": "isConditionalLocked",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "lastCollateralBalanceFirstRoundMap",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "lastCollateralBalanceSecondRoundMap",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "maxConditionId",
      "outputs": [
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "maxOracleId",
      "outputs": [
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "",
          "type": "uint256[]"
        },
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "name": "onERC1155BatchReceived",
      "outputs": [
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "name": "onERC1155Received",
      "outputs": [
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "name": "onERC721Received",
      "outputs": [
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_oracleId",
          "type": "uint64"
        }
      ],
      "name": "oracleOwner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "_ids",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "_values",
          "type": "uint256[]"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "safeBatchTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_id",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_value",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "setApprovalForAll",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_oracleId",
          "type": "uint64"
        },
        {
          "internalType": "uint256",
          "name": "_time",
          "type": "uint256"
        }
      ],
      "name": "updateGracePeriodEnds",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "uri",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "name": "usersWithdrewInFirstRound",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IERC1155",
          "name": "_collateralContractAddress",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_collateralTokenId",
          "type": "uint256"
        },
        {
          "internalType": "uint64",
          "name": "_oracleId",
          "type": "uint64"
        },
        {
          "internalType": "uint256",
          "name": "_condition",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "withdrawCollateral",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_oracleId",
          "type": "uint64"
        },
        {
          "internalType": "uint256",
          "name": "_condition",
          "type": "uint256"
        }
      ],
      "name": "payoutNumerator",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_oracleId",
          "type": "uint64"
        }
      ],
      "name": "payoutDenominator",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_oracleId",
          "type": "uint64"
        },
        {
          "internalType": "uint256",
          "name": "_condition",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_numerator",
          "type": "uint256"
        }
      ],
      "name": "reportNumerator",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_oracleId",
          "type": "uint64"
        },
        {
          "internalType": "uint64[]",
          "name": "_conditions",
          "type": "uint64[]"
        },
        {
          "internalType": "uint256[]",
          "name": "_numerators",
          "type": "uint256[]"
        }
      ],
      "name": "reportNumeratorsBatch",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_oracleId",
          "type": "uint64"
        }
      ],
      "name": "finishOracle",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_oracleId",
          "type": "uint64"
        }
      ],
      "name": "isOracleFinished",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC1155\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"collateralTokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"oracleId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"CollateralWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"customer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"condition\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"ConditionCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC1155\",\"name\":\"collateralContractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"collateralTokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"DonateCollateral\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"oracleId\",\"type\":\"uint64\"}],\"name\":\"OracleCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"oracleId\",\"type\":\"uint64\"}],\"name\":\"OracleFinished\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oracleOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"oracleId\",\"type\":\"uint64\"}],\"name\":\"OracleOwnerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"oracleId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"condition\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"numerator\",\"type\":\"uint256\"}],\"name\":\"ReportedNumerator\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"oracleId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64[]\",\"name\":\"conditions\",\"type\":\"uint64[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"numerators\",\"type\":\"uint256[]\"}],\"name\":\"ReportedNumeratorsBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"URI\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newOracleOwner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"_oracleId\",\"type\":\"uint64\"}],\"name\":\"changeOracleOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC1155\",\"name\":\"_collateralContractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_collateralTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"_oracleId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"_condition\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"collateralOwing\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"conditionOwners\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC1155\",\"name\":\"_collateralContractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_collateralTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"_oracleId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"donate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_oracleId\",\"type\":\"uint64\"}],\"name\":\"finishOracle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC1155\",\"name\":\"_collateralContractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_collateralTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"_oracleId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"gatherDeFiProfit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_oracleId\",\"type\":\"uint64\"}],\"name\":\"gracePeriodEnd\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_condition\",\"type\":\"uint256\"}],\"name\":\"isConditionalLocked\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_oracleId\",\"type\":\"uint64\"}],\"name\":\"isOracleFinished\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"lastCollateralBalanceFirstRoundMap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"lastCollateralBalanceSecondRoundMap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxConditionId\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxOracleId\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155BatchReceived\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_oracleId\",\"type\":\"uint64\"}],\"name\":\"oracleOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_oracleId\",\"type\":\"uint64\"}],\"name\":\"payoutDenominator\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_oracleId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"_condition\",\"type\":\"uint256\"}],\"name\":\"payoutNumerator\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_oracleId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"_condition\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_numerator\",\"type\":\"uint256\"}],\"name\":\"reportNumerator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_oracleId\",\"type\":\"uint64\"},{\"internalType\":\"uint64[]\",\"name\":\"_conditions\",\"type\":\"uint64[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_numerators\",\"type\":\"uint256[]\"}],\"name\":\"reportNumeratorsBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"_ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_values\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_oracleId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"_time\",\"type\":\"uint256\"}],\"name\":\"updateGracePeriodEnds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"usersWithdrewInFirstRound\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC1155\",\"name\":\"_collateralContractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_collateralTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"_oracleId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"_condition\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"withdrawCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Victor Porton This allows anyone claim conditional tokens in order for him to transfer money from the future. See `docs/future-money.rst`.\",\"events\":{\"ReportedNumerator(uint64,uint256,uint256)\":{\"params\":{\"condition\":\"The conditional (customer addresses).\",\"numerator\":\"The relative score provided by the oracle.\",\"oracleId\":\"The oracle ID.\"}},\"ReportedNumeratorsBatch(uint64,uint64[],uint256[])\":{\"params\":{\"conditions\":\"The conditionals (customer addresses).\",\"numerators\":\"The relative scores provided by the oracle.\",\"oracleId\":\"The oracle ID.\"}}},\"kind\":\"dev\",\"methods\":{\"balanceOf(address,uint256)\":{\"details\":\"See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address.\"},\"balanceOfBatch(address[],uint256[])\":{\"details\":\"See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length.\"},\"changeOracleOwner(address,uint64)\":{\"params\":{\"_newOracleOwner\":\"New owner.\",\"_oracleId\":\"The oracle whose owner to change.\"}},\"collateralOwing(address,uint256,uint64,uint256,address)\":{\"params\":{\"_collateralContractAddress\":\"The ERC-1155 collateral token contract.\",\"_collateralTokenId\":\"The ERC-1155 collateral token ID.\",\"_condition\":\"The condition (the original receiver of a conditional token).\",\"_oracleId\":\"From which oracle's \\\"account\\\" to withdraw.\",\"_user\":\"The user to which we may owe.\"}},\"constructor\":{\"params\":{\"_uri\":\"Our ERC-1155 tokens description URI.\"}},\"donate(address,uint256,uint64,uint256,address,address,bytes)\":{\"params\":{\"_amount\":\"The amount to donate.\",\"_collateralContractAddress\":\"The collateral ERC-1155 contract address.\",\"_collateralTokenId\":\"The collateral ERC-1155 token ID.\",\"_data\":\"Additional transaction data.\",\"_from\":\"From whom to take the donation.\",\"_oracleId\":\"The oracle ID to whose ecosystem to donate to.\",\"_to\":\"On whose account the donation amount is assigned.\"}},\"finishOracle(uint64)\":{\"params\":{\"_oracleId\":\"The oracle ID. You should set grace period end time before calling this method.\"}},\"gatherDeFiProfit(address,uint256,uint64,bytes)\":{\"params\":{\"_collateralContractAddress\":\"The collateral ERC-1155 contract address.\",\"_collateralTokenId\":\"The collateral ERC-1155 token ID.\",\"_data\":\"Additional transaction data.\",\"_oracleId\":\"The oracle ID to whose ecosystem to donate to.\"}},\"gracePeriodEnd(uint64)\":{\"params\":{\"_oracleId\":\"For which oracle.\"}},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC1155-isApprovedForAll}.\"},\"isConditionalLocked(address,uint256)\":{\"params\":{\"_condition\":\"The condition (the original receiver of a conditional token).\",\"_user\":\"Querying if locked for this user.\"}},\"isOracleFinished(uint64)\":{\"params\":{\"_oracleId\":\"The oracle ID.\"},\"returns\":{\"_0\":\"`true` if it has finished.\"}},\"onERC721Received(address,address,uint256,bytes)\":{\"details\":\"See {IERC721Receiver-onERC721Received}. Always returns `IERC721Receiver.onERC721Received.selector`.\"},\"oracleOwner(uint64)\":{\"params\":{\"_oracleId\":\"The oracle ID.\"}},\"payoutDenominator(uint64)\":{\"params\":{\"_oracleId\":\"The oracle ID. The result can't change if the oracle has finished.\"}},\"payoutNumerator(uint64,uint256)\":{\"params\":{\"_condition\":\"The condition (the original receiver of a conditional token). The result can't change if the oracle has finished.\",\"_oracleId\":\"The oracle ID.\"}},\"reportNumerator(uint64,uint256,uint256)\":{\"params\":{\"_condition\":\"The condition.\",\"_numerator\":\"The relative score of the condition. Note: We could make oracles easily verificable by a hash of all the data, but       - It may need allowing to set a numerator only once.       - It may be not necessary because future technology will allow to aggregate blockchains.\",\"_oracleId\":\"The oracle ID.\"}},\"reportNumeratorsBatch(uint64,uint64[],uint256[])\":{\"params\":{\"_conditions\":\"The conditions.\",\"_numerators\":\"The relative scores of the condition.\",\"_oracleId\":\"The oracle ID.\"}},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC1155-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}. Time complexity O(1), guaranteed to always use less than 30 000 gas.\"},\"totalSupply(uint256)\":{\"params\":{\"id\":\"Token ID.\"},\"returns\":{\"_0\":\"Total supply.\"}},\"uri(uint256)\":{\"details\":\"See {IERC1155MetadataURI-uri}. This implementation returns the same URI for *all* token types. It relies on the token type ID substitution mechanism https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP]. Clients calling this function must replace the `\\\\{id\\\\}` substring with the actual token type ID.\"},\"withdrawCollateral(address,uint256,uint64,uint256,bytes)\":{\"params\":{\"_collateralContractAddress\":\"The ERC-1155 collateral token contract.\",\"_collateralTokenId\":\"The ERC-1155 collateral token ID.\",\"_condition\":\"The condition.\",\"_data\":\"Additional data. Notes: - It is made impossible to withdraw somebody's other collateral, as otherwise we can't mark non-active   accounts in grace period. - We can't transfer to somebody other than `msg.sender` because anybody can transfer   (needed for multi-level transfers). - After this function is called, it becomes impossible to transfer the corresponding conditional token   of `msg.sender` (to prevent its repeated withdrawal).\",\"_oracleId\":\"From which oracle's \\\"account\\\" to withdraw.\"}}},\"title\":\"Bidding on Ethereum addresses\",\"version\":1},\"userdoc\":{\"events\":{\"CollateralWithdrawn(address,uint256,uint64,address,uint256)\":{\"notice\":\"Emitted when collateral is withdrawn.\"},\"ConditionCreated(address,address,uint256,bytes)\":{\"notice\":\"Emitted when an oracle owner is set.\"},\"DonateCollateral(address,uint256,address,uint256,address,bytes)\":{\"notice\":\"Emitted when a collateral is donated.\"},\"OracleCreated(address,uint64)\":{\"notice\":\"Emitted when an oracle is created.\"},\"OracleFinished(uint64)\":{\"notice\":\"Emitted when an oracle is marked as having finished its work.\"},\"OracleOwnerChanged(address,uint64)\":{\"notice\":\"Emitted when an oracle owner is set.\"},\"ReportedNumerator(uint64,uint256,uint256)\":{\"notice\":\"A condition score was stored in the chain by an oracle.\"},\"ReportedNumeratorsBatch(uint64,uint64[],uint256[])\":{\"notice\":\"Some condition scores were stored in the chain by an oracle.\"}},\"kind\":\"user\",\"methods\":{\"changeOracleOwner(address,uint64)\":{\"notice\":\"Modify the owner of an oracle.\"},\"collateralOwing(address,uint256,uint64,uint256,address)\":{\"notice\":\"Calculate how much collateral is owed to a user.\"},\"constructor\":{\"notice\":\"Constructor.\"},\"donate(address,uint256,uint64,uint256,address,address,bytes)\":{\"notice\":\"Donate funds in an ERC-1155 token. First, the collateral token need to be approved to be spent by this contract from the address `_from`. It also mints a token (with a different ID), that counts donations in that token.\"},\"finishOracle(uint64)\":{\"notice\":\"Need to be called after all numerators were reported.\"},\"gatherDeFiProfit(address,uint256,uint64,bytes)\":{\"notice\":\"Gather a DeFi profit of a token previous donated to this contact.\"},\"gracePeriodEnd(uint64)\":{\"notice\":\"Retrieve the end of the grace period.\"},\"isConditionalLocked(address,uint256)\":{\"notice\":\"Are transfers of a conditinal token locked? This is used to prevent its repeated withdrawal.\"},\"isOracleFinished(uint64)\":{\"notice\":\"Check if an oracle has finished.\"},\"oracleOwner(uint64)\":{\"notice\":\"Get the oracle owner.\"},\"payoutDenominator(uint64)\":{\"notice\":\"Retrieve the last stored payout denominator (the sum of all numerators of the oracle).\"},\"payoutNumerator(uint64,uint256)\":{\"notice\":\"Retrieve the last stored payout numerator (relative score of a condition).\"},\"reportNumerator(uint64,uint256,uint256)\":{\"notice\":\"Called by the oracle owner for reporting results of conditions.\"},\"reportNumeratorsBatch(uint64,uint64[],uint256[])\":{\"notice\":\"Called by the oracle owner for reporting results of several conditions.\"},\"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\":{\"notice\":\"An ERC-1155 function. We disallow transfers of conditional tokens after redeem `_to` prevent \\\"gathering\\\" them before redeeming each oracle.\"},\"safeTransferFrom(address,address,uint256,uint256,bytes)\":{\"notice\":\"An ERC-1155 function. We disallow transfers of conditional tokens after redeem `_to` prevent \\\"gathering\\\" them before redeeming each oracle.\"},\"totalSupply(uint256)\":{\"notice\":\"Total supply of a token (conforms to `IERC1155Views`).\"},\"updateGracePeriodEnds(uint64,uint256)\":{\"notice\":\"Set the end time of the grace period. The first withdrawal can be done *only* during the grace period. The second withdrawal can be done after the end of the grace period and only if the first withdrawal was done. The intention of the grace period is to check which of users are active (\\\"alive\\\").\"},\"usersWithdrewInFirstRound(uint64)\":{\"notice\":\"Mapping (oracleId => amount user withdrew in first round) (see `docs/Calculations.md`).\"},\"withdrawCollateral(address,uint256,uint64,uint256,bytes)\":{\"notice\":\"Transfer to `msg.sender` the collateral ERC-1155 token. The amount transferred is proportional to the score of `_condition` by the oracle.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/user/Projects/future-contracts/contracts/BaseBidOnAddresses.sol\":\"BaseBidOnAddresses\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"/home/user/Projects/future-contracts/contracts/BaseBidOnAddresses.sol\":{\"keccak256\":\"0x0f468f447255c1349ffac58a16d2a3d64e8b3a14ad8289acdf367538d1dce04e\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://7e610bbd572bfb395b91253f5244e0dd8f5a20c523a9df5d846f9d370b3fbb76\",\"dweb:/ipfs/QmbrcKL49Efghwx95EEM7SD2PArLkUMxdNujUk2tygb91Y\"]},\"/home/user/Projects/future-contracts/contracts/BaseLock.sol\":{\"keccak256\":\"0x477edfd8178110507dd44a101ec4d45bd82e073a8441c30062a9ca3cc3742184\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://0188608bd813e9e1de9472d2c71264fa24655ec646cc59be93d56a648fab1c6c\",\"dweb:/ipfs/QmdERM9oNEvHgmes3AWG8zAyx4ueAFKtXGsegAfXUKryDW\"]},\"/home/user/Projects/future-contracts/contracts/ERC1155/ERC1155.sol\":{\"keccak256\":\"0x7dcdf324fd4d2dec68846958865ae833956cb4ad80cd83cf6f107e7c33500bf6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cddf52afd931cbf983100a0415f04e6646aa90d100fd91437d2a75e3b241206\",\"dweb:/ipfs/QmXXJ2qoC1rSsKdg5s87m3BPQ3RFGw2rNrNv7KygzGJ9zQ\"]},\"/home/user/Projects/future-contracts/contracts/ERC1155/ERC1155WithTotals.sol\":{\"keccak256\":\"0x1d5fcf7a70d6f5dcd4ddf25caece633a9b4d17154fb98b5fc9a5ae4600b2db15\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://9638d138ecec5f7f6651cf690295fdaaa99023d58555360fa801ace5cac88a9d\",\"dweb:/ipfs/QmUWf56QEe5uSfpHB7inMUGzufNZSxyu8aszLzoYMZHMYf\"]},\"@openzeppelin/contracts/GSN/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]},\"@openzeppelin/contracts/introspection/ERC165.sol\":{\"keccak256\":\"0xd6b90e604fb2eb2d641c7110c72440bf2dc999ec6ab8ff60f200e71ca75d1d90\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7b92d8ab83b21ff984b1f0d6d66897d5afb1f2052004cbcb133cea023e0ae468\",\"dweb:/ipfs/QmTarypkQrFp4UMjTh7Zzhz2nZLz5uPS4nJQtHDEuwBVe6\"]},\"@openzeppelin/contracts/introspection/IERC165.sol\":{\"keccak256\":\"0xf70bc25d981e4ec9673a995ad2995d5d493ea188d3d8f388bba9c227ce09fb82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd970f51e3a77790c2f02b5b1759827c3b897c3d98c407b3631e8af32e3dc93c\",\"dweb:/ipfs/QmPF85Amgbqjk3SNZKsPCsqCw8JfwYEPMnnhvMJUyX58je\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x3b21f2c8d626de3b9925ae33e972d8bf5c8b1bffb3f4ee94daeed7d0679036e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7f8d45329fecbf0836ad7543330c3ecd0f8d0ffa42d4016278c3eb2215fdcdfe\",\"dweb:/ipfs/QmXWLT7GcnHtA5NiD6MFi2CV3EWJY4wv5mLNnypqYDrxL3\"]},\"@openzeppelin/contracts/token/ERC1155/ERC1155Holder.sol\":{\"keccak256\":\"0x21428ca879b2437107322dfc1e214d25ecd6b966344961025ee412c3acfd5fc0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9747c875899d05823aede28b60ca8d3719b8c28018f397521c4ffb05041e1ac5\",\"dweb:/ipfs/QmQEQ4jJYEGFNfcngfZ3gPkcrcWYWKbo1Bq2F57scJxbmE\"]},\"@openzeppelin/contracts/token/ERC1155/ERC1155Receiver.sol\":{\"keccak256\":\"0xfce008c2ddf19a62e29e056fdddfa10204b19417ae0f711913703e4ee9dec92c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37a7bb9249c0e8aaecd0c6f33fae7f03d15aebb015f5f7f1face393cfd58d75b\",\"dweb:/ipfs/QmevqbHb43sTLnpWzrGW9WvWvktMzuP5EzYHhqZox2A5v3\"]},\"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\":{\"keccak256\":\"0x61321d2c86346045bf394885ee3afeecc65f9daad2694bc19110967588fd7b5d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1703b877203e0447ede72dcf73f1c4f2089b415bd1c44877904128a64fafed5b\",\"dweb:/ipfs/QmaZoYDo2FWtKcwCc9zuabU6zri8KV9xJrhU614d93sLid\"]},\"@openzeppelin/contracts/token/ERC1155/IERC1155MetadataURI.sol\":{\"keccak256\":\"0xd918cca1b659f588a6d12d05fd7196179a8b1eac9133d7f77da7ef3133e13256\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c75d578f42e2e2e427b934e6c41cc759be2d0a52155868308e915328c8feb2b\",\"dweb:/ipfs/QmbFNHtWAoNhe82Hy6yKTePWJRczqzp1APSBfLS9XfAN6e\"]},\"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol\":{\"keccak256\":\"0x2690a9b7f4f7489b8d25a4fc6bffc02ec3971fb41ed6c8b59adef2833bdab07c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8148c99452b6793ac9599abdc8bdaf4eeb47f34590beea8aa01089be14e2990c\",\"dweb:/ipfs/QmNdenmZ4EDfH9TuBas3pHeGuZvDNo2rsfgUj6ka8vuH37\"]},\"@openzeppelin/contracts/token/ERC721/ERC721Holder.sol\":{\"keccak256\":\"0xdb2133d55b8f3a94313af8f4371ae0501a58e412d471b03d8581214c5ea2ce33\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cea1e4bf769f27c8c9c1442f1518b49ef6c8b71a4bd4ce88353da9e9a8ba1704\",\"dweb:/ipfs/QmR1b8sj7fxgeHqDksV4GYTjZS1qajWC3yg9VCMUJus2bF\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x52146049d6709c870e8ddcd988b5155cb6c5d640cfcd8978aee52bc1ba2ec4eb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada84513617b7c1b2f890b44503735abaec73a1acd030112a17aac7e6c66a4a1\",\"dweb:/ipfs/QmaiFwdio67iJrfjAdkMac24eJ5sS1qD7CZW6PhUU6KjiK\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xa6a15ddddcbf29d2922a1e0d4151b5d2d33da24b93cc9ebc12390e0d855532f8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c119bcaecfa853d564ac88d312777f75fa1126a3bca88a3371adb0ad9f35cb0\",\"dweb:/ipfs/QmY9UPuXeSKq86Zh38fE43VGQPhKMN34mkuFSFqPcr6nvZ\"]},\"abdk-libraries-solidity/ABDKMath64x64.sol\":{\"keccak256\":\"0x67609bc0923563d05d3a8a7c681056f9702a92120777cb0bcbb40d0afbb4a015\",\"license\":\"BSD-4-Clause\",\"urls\":[\"bzz-raw://55e817969394d4e0201a8cd3763ad6776bc9fddc986febe9b4acf120e8b7ad0d\",\"dweb:/ipfs/QmNMve5ZjUfA8DJYic4sYTrDEAN6VyxcC7jWUTX25Wmnnp\"]}},\"version\":1}",
  "bytecode": "0x",
  "deployedBytecode": "0x",
  "immutableReferences": {},
  "generatedSources": [],
  "deployedGeneratedSources": [],
  "sourceMap": "",
  "deployedSourceMap": "",
  "source": "// SPDX-License-Identifier: LGPL-3.0-or-later\npragma solidity ^0.7.1;\nimport { SafeMath } from \"@openzeppelin/contracts/math/SafeMath.sol\";\nimport { ABDKMath64x64 } from \"abdk-libraries-solidity/ABDKMath64x64.sol\";\nimport { BaseLock } from \"./BaseLock.sol\";\n\n/// @title Bidding on Ethereum addresses\n/// @author Victor Porton\n/// This allows anyone claim conditional tokens in order for him to transfer money from the future.\n/// See `docs/future-money.rst`.\nabstract contract BaseBidOnAddresses is BaseLock {\n    using ABDKMath64x64 for int128;\n    using SafeMath for uint256;\n\n    /// A condition score was stored in the chain by an oracle.\n    /// @param oracleId The oracle ID.\n    /// @param condition The conditional (customer addresses).\n    /// @param numerator The relative score provided by the oracle.\n    event ReportedNumerator(\n        uint64 indexed oracleId,\n        uint256 indexed condition,\n        uint256 numerator\n    );\n\n    /// Some condition scores were stored in the chain by an oracle.\n    /// @param oracleId The oracle ID.\n    /// @param conditions The conditionals (customer addresses).\n    /// @param numerators The relative scores provided by the oracle.\n    event ReportedNumeratorsBatch(\n        uint64 indexed oracleId,\n        uint64[] indexed conditions,\n        uint256[] numerators\n    );\n\n    // Whether an oracle finished its work.\n    mapping(uint64 => bool) private oracleFinishedMap;\n    // Mapping (oracleId => (condition => numerator)) for payout numerators.\n    mapping(uint64 => mapping(uint256 => uint256)) private payoutNumeratorsMap;\n    // Mapping (oracleId => denominator) for payout denominators.\n    mapping(uint256 => uint) private payoutDenominatorsMap;\n\n    /// Constructor.\n    /// @param _uri Our ERC-1155 tokens description URI.\n    constructor(string memory _uri) BaseLock(_uri) { }\n\n    /// Retrieve the last stored payout numerator (relative score of a condition).\n    /// @param _oracleId The oracle ID.\n    /// @param _condition The condition (the original receiver of a conditional token).\n    /// The result can't change if the oracle has finished.\n    function payoutNumerator(uint64 _oracleId, uint256 _condition) public view returns (uint256) {\n        return payoutNumeratorsMap[_oracleId][_condition];\n    }\n\n    /// Retrieve the last stored payout denominator (the sum of all numerators of the oracle).\n    /// @param _oracleId The oracle ID.\n    /// The result can't change if the oracle has finished.\n    function payoutDenominator(uint64 _oracleId) public view returns (uint256) {\n        return payoutDenominatorsMap[_oracleId];\n    }\n\n    /// Called by the oracle owner for reporting results of conditions.\n    /// @param _oracleId The oracle ID.\n    /// @param _condition The condition.\n    /// @param _numerator The relative score of the condition.\n    /// Note: We could make oracles easily verificable by a hash of all the data, but\n    ///       - It may need allowing to set a numerator only once.\n    ///       - It may be not necessary because future technology will allow to aggregate blockchains.\n    function reportNumerator(uint64 _oracleId, uint256 _condition, uint256 _numerator) external\n        _isOracle(_oracleId)\n        _oracleNotFinished(_oracleId) // otherwise an oracle can break data consistency\n    {\n        _updateNumerator(_oracleId, _numerator, _condition);\n        emit ReportedNumerator(_oracleId, _condition, _numerator);\n    }\n\n    /// Called by the oracle owner for reporting results of several conditions.\n    /// @param _oracleId The oracle ID.\n    /// @param _conditions The conditions.\n    /// @param _numerators The relative scores of the condition.\n    function reportNumeratorsBatch(uint64 _oracleId, uint64[] calldata _conditions, uint256[] calldata _numerators) external\n        _isOracle(_oracleId)\n        _oracleNotFinished(_oracleId) // otherwise an oracle can break data consistency\n    {\n        require(_conditions.length == _numerators.length, \"Length mismatch.\");\n        for (uint _i = 0; _i < _conditions.length; ++_i) {\n            _updateNumerator(_oracleId, _numerators[_i], _conditions[_i]);\n        }\n        emit ReportedNumeratorsBatch(_oracleId, _conditions, _numerators);\n    }\n\n    /// Need to be called after all numerators were reported.\n    /// @param _oracleId The oracle ID.\n    ///\n    /// You should set grace period end time before calling this method.\n    function finishOracle(uint64 _oracleId) external\n        _isOracle(_oracleId)\n    {\n        oracleFinishedMap[_oracleId] = true;\n        emit OracleFinished(_oracleId);\n    }\n\n    /// Check if an oracle has finished.\n    /// @param _oracleId The oracle ID.\n    /// @return `true` if it has finished.\n    function isOracleFinished(uint64 _oracleId) public view override returns (bool) {\n        return oracleFinishedMap[_oracleId];\n    }\n\n    function _updateNumerator(uint64 _oracleId, uint256 _numerator, uint256 _condition) private {\n        payoutDenominatorsMap[_oracleId] = payoutDenominatorsMap[_oracleId].add(_numerator).sub(payoutNumeratorsMap[_oracleId][_condition]);\n        payoutNumeratorsMap[_oracleId][_condition] = _numerator;\n    }\n\n    // Virtuals //\n\n    function _calcRewardShare(uint64 _oracleId, uint256 _condition) internal virtual override view returns (int128) {\n        uint256 _numerator = payoutNumeratorsMap[_oracleId][_condition];\n        uint256 _denominator = payoutDenominatorsMap[_oracleId];\n        return ABDKMath64x64.divu(_numerator, _denominator);\n    }\n\n    // Modifiers //\n\n    modifier _oracleNotFinished(uint64 _oracleId) {\n        require(!isOracleFinished(_oracleId), \"Oracle is finished.\");\n        _;\n    }\n}\n",
  "sourcePath": "/home/user/Projects/future-contracts/contracts/BaseBidOnAddresses.sol",
  "ast": {
    "absolutePath": "/home/user/Projects/future-contracts/contracts/BaseBidOnAddresses.sol",
    "exportedSymbols": {
      "ABDKMath64x64": [
        9904
      ],
      "BaseBidOnAddresses": [
        292
      ],
      "BaseLock": [
        1494
      ],
      "SafeMath": [
        4453
      ]
    },
    "id": 293,
    "license": "LGPL-3.0-or-later",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1,
        "literals": [
          "solidity",
          "^",
          "0.7",
          ".1"
        ],
        "nodeType": "PragmaDirective",
        "src": "46:23:0"
      },
      {
        "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol",
        "file": "@openzeppelin/contracts/math/SafeMath.sol",
        "id": 3,
        "nodeType": "ImportDirective",
        "scope": 293,
        "sourceUnit": 4454,
        "src": "70:69:0",
        "symbolAliases": [
          {
            "foreign": {
              "id": 2,
              "name": "SafeMath",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "src": "79:8:0",
              "typeDescriptions": {}
            }
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "abdk-libraries-solidity/ABDKMath64x64.sol",
        "file": "abdk-libraries-solidity/ABDKMath64x64.sol",
        "id": 5,
        "nodeType": "ImportDirective",
        "scope": 293,
        "sourceUnit": 9905,
        "src": "140:74:0",
        "symbolAliases": [
          {
            "foreign": {
              "id": 4,
              "name": "ABDKMath64x64",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "src": "149:13:0",
              "typeDescriptions": {}
            }
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/user/Projects/future-contracts/contracts/BaseLock.sol",
        "file": "./BaseLock.sol",
        "id": 7,
        "nodeType": "ImportDirective",
        "scope": 293,
        "sourceUnit": 1495,
        "src": "215:42:0",
        "symbolAliases": [
          {
            "foreign": {
              "id": 6,
              "name": "BaseLock",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "src": "224:8:0",
              "typeDescriptions": {}
            }
          }
        ],
        "unitAlias": ""
      },
      {
        "abstract": true,
        "baseContracts": [
          {
            "baseName": {
              "id": 9,
              "name": "BaseLock",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1494,
              "src": "499:8:0",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_BaseLock_$1494",
                "typeString": "contract BaseLock"
              }
            },
            "id": 10,
            "nodeType": "InheritanceSpecifier",
            "src": "499:8:0"
          }
        ],
        "contractDependencies": [
          1494,
          3318,
          3651,
          4079,
          4245,
          4257,
          4504,
          4532,
          4654,
          4669,
          4710,
          5668,
          5860
        ],
        "contractKind": "contract",
        "documentation": {
          "id": 8,
          "nodeType": "StructuredDocumentation",
          "src": "259:200:0",
          "text": "@title Bidding on Ethereum addresses\n @author Victor Porton\n This allows anyone claim conditional tokens in order for him to transfer money from the future.\n See `docs/future-money.rst`."
        },
        "fullyImplemented": true,
        "id": 292,
        "linearizedBaseContracts": [
          292,
          1494,
          5668,
          5860,
          4504,
          4532,
          4710,
          3651,
          3318,
          4669,
          4654,
          4245,
          4257,
          4079
        ],
        "name": "BaseBidOnAddresses",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 13,
            "libraryName": {
              "id": 11,
              "name": "ABDKMath64x64",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 9904,
              "src": "520:13:0",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ABDKMath64x64_$9904",
                "typeString": "library ABDKMath64x64"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "514:31:0",
            "typeName": {
              "id": 12,
              "name": "int128",
              "nodeType": "ElementaryTypeName",
              "src": "538:6:0",
              "typeDescriptions": {
                "typeIdentifier": "t_int128",
                "typeString": "int128"
              }
            }
          },
          {
            "id": 16,
            "libraryName": {
              "id": 14,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4453,
              "src": "556:8:0",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$4453",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "550:27:0",
            "typeName": {
              "id": 15,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "569:7:0",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "anonymous": false,
            "documentation": {
              "id": 17,
              "nodeType": "StructuredDocumentation",
              "src": "583:229:0",
              "text": "A condition score was stored in the chain by an oracle.\n @param oracleId The oracle ID.\n @param condition The conditional (customer addresses).\n @param numerator The relative score provided by the oracle."
            },
            "id": 25,
            "name": "ReportedNumerator",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 24,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "oracleId",
                  "nodeType": "VariableDeclaration",
                  "scope": 25,
                  "src": "850:23:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 18,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "850:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "condition",
                  "nodeType": "VariableDeclaration",
                  "scope": 25,
                  "src": "883:25:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "883:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "numerator",
                  "nodeType": "VariableDeclaration",
                  "scope": 25,
                  "src": "918:17:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 22,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "918:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "840:101:0"
            },
            "src": "817:125:0"
          },
          {
            "anonymous": false,
            "documentation": {
              "id": 26,
              "nodeType": "StructuredDocumentation",
              "src": "948:238:0",
              "text": "Some condition scores were stored in the chain by an oracle.\n @param oracleId The oracle ID.\n @param conditions The conditionals (customer addresses).\n @param numerators The relative scores provided by the oracle."
            },
            "id": 36,
            "name": "ReportedNumeratorsBatch",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 35,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 28,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "oracleId",
                  "nodeType": "VariableDeclaration",
                  "scope": 36,
                  "src": "1230:23:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 27,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "1230:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 31,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "conditions",
                  "nodeType": "VariableDeclaration",
                  "scope": 36,
                  "src": "1263:27:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr",
                    "typeString": "uint64[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 29,
                      "name": "uint64",
                      "nodeType": "ElementaryTypeName",
                      "src": "1263:6:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "id": 30,
                    "nodeType": "ArrayTypeName",
                    "src": "1263:8:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr",
                      "typeString": "uint64[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 34,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "numerators",
                  "nodeType": "VariableDeclaration",
                  "scope": 36,
                  "src": "1300:20:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 32,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1300:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 33,
                    "nodeType": "ArrayTypeName",
                    "src": "1300:9:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1220:106:0"
            },
            "src": "1191:136:0"
          },
          {
            "constant": false,
            "id": 40,
            "mutability": "mutable",
            "name": "oracleFinishedMap",
            "nodeType": "VariableDeclaration",
            "scope": 292,
            "src": "1377:49:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint64_$_t_bool_$",
              "typeString": "mapping(uint64 => bool)"
            },
            "typeName": {
              "id": 39,
              "keyType": {
                "id": 37,
                "name": "uint64",
                "nodeType": "ElementaryTypeName",
                "src": "1385:6:0",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint64",
                  "typeString": "uint64"
                }
              },
              "nodeType": "Mapping",
              "src": "1377:23:0",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint64_$_t_bool_$",
                "typeString": "mapping(uint64 => bool)"
              },
              "valueType": {
                "id": 38,
                "name": "bool",
                "nodeType": "ElementaryTypeName",
                "src": "1395:4:0",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              }
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 46,
            "mutability": "mutable",
            "name": "payoutNumeratorsMap",
            "nodeType": "VariableDeclaration",
            "scope": 292,
            "src": "1509:74:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint64_$_t_mapping$_t_uint256_$_t_uint256_$_$",
              "typeString": "mapping(uint64 => mapping(uint256 => uint256))"
            },
            "typeName": {
              "id": 45,
              "keyType": {
                "id": 41,
                "name": "uint64",
                "nodeType": "ElementaryTypeName",
                "src": "1517:6:0",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint64",
                  "typeString": "uint64"
                }
              },
              "nodeType": "Mapping",
              "src": "1509:46:0",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint64_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                "typeString": "mapping(uint64 => mapping(uint256 => uint256))"
              },
              "valueType": {
                "id": 44,
                "keyType": {
                  "id": 42,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1535:7:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "nodeType": "Mapping",
                "src": "1527:27:0",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                  "typeString": "mapping(uint256 => uint256)"
                },
                "valueType": {
                  "id": 43,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1546:7:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                }
              }
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 50,
            "mutability": "mutable",
            "name": "payoutDenominatorsMap",
            "nodeType": "VariableDeclaration",
            "scope": 292,
            "src": "1655:54:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
              "typeString": "mapping(uint256 => uint256)"
            },
            "typeName": {
              "id": 49,
              "keyType": {
                "id": 47,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "1663:7:0",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "1655:24:0",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                "typeString": "mapping(uint256 => uint256)"
              },
              "valueType": {
                "id": 48,
                "name": "uint",
                "nodeType": "ElementaryTypeName",
                "src": "1674:4:0",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "visibility": "private"
          },
          {
            "body": {
              "id": 59,
              "nodeType": "Block",
              "src": "1841:3:0",
              "statements": []
            },
            "documentation": {
              "id": 51,
              "nodeType": "StructuredDocumentation",
              "src": "1716:73:0",
              "text": "Constructor.\n @param _uri Our ERC-1155 tokens description URI."
            },
            "id": 60,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 56,
                    "name": "_uri",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 53,
                    "src": "1835:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  }
                ],
                "id": 57,
                "modifierName": {
                  "id": 55,
                  "name": "BaseLock",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1494,
                  "src": "1826:8:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_BaseLock_$1494_$",
                    "typeString": "type(contract BaseLock)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1826:14:0"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 54,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 53,
                  "mutability": "mutable",
                  "name": "_uri",
                  "nodeType": "VariableDeclaration",
                  "scope": 60,
                  "src": "1806:18:0",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 52,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1806:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1805:20:0"
            },
            "returnParameters": {
              "id": 58,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1841:0:0"
            },
            "scope": 292,
            "src": "1794:50:0",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 76,
              "nodeType": "Block",
              "src": "2214:66:0",
              "statements": [
                {
                  "expression": {
                    "baseExpression": {
                      "baseExpression": {
                        "id": 70,
                        "name": "payoutNumeratorsMap",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 46,
                        "src": "2231:19:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint64_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                          "typeString": "mapping(uint64 => mapping(uint256 => uint256))"
                        }
                      },
                      "id": 72,
                      "indexExpression": {
                        "id": 71,
                        "name": "_oracleId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 63,
                        "src": "2251:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "2231:30:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                        "typeString": "mapping(uint256 => uint256)"
                      }
                    },
                    "id": 74,
                    "indexExpression": {
                      "id": 73,
                      "name": "_condition",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 65,
                      "src": "2262:10:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "2231:42:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 69,
                  "id": 75,
                  "nodeType": "Return",
                  "src": "2224:49:0"
                }
              ]
            },
            "documentation": {
              "id": 61,
              "nodeType": "StructuredDocumentation",
              "src": "1850:266:0",
              "text": "Retrieve the last stored payout numerator (relative score of a condition).\n @param _oracleId The oracle ID.\n @param _condition The condition (the original receiver of a conditional token).\n The result can't change if the oracle has finished."
            },
            "functionSelector": "789908e9",
            "id": 77,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "payoutNumerator",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 66,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 63,
                  "mutability": "mutable",
                  "name": "_oracleId",
                  "nodeType": "VariableDeclaration",
                  "scope": 77,
                  "src": "2146:16:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 62,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "2146:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 65,
                  "mutability": "mutable",
                  "name": "_condition",
                  "nodeType": "VariableDeclaration",
                  "scope": 77,
                  "src": "2164:18:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 64,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2164:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2145:38:0"
            },
            "returnParameters": {
              "id": 69,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 68,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 77,
                  "src": "2205:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 67,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2205:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2204:9:0"
            },
            "scope": 292,
            "src": "2121:159:0",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 89,
              "nodeType": "Block",
              "src": "2556:56:0",
              "statements": [
                {
                  "expression": {
                    "baseExpression": {
                      "id": 85,
                      "name": "payoutDenominatorsMap",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 50,
                      "src": "2573:21:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                        "typeString": "mapping(uint256 => uint256)"
                      }
                    },
                    "id": 87,
                    "indexExpression": {
                      "id": 86,
                      "name": "_oracleId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 80,
                      "src": "2595:9:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "2573:32:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 84,
                  "id": 88,
                  "nodeType": "Return",
                  "src": "2566:39:0"
                }
              ]
            },
            "documentation": {
              "id": 78,
              "nodeType": "StructuredDocumentation",
              "src": "2286:190:0",
              "text": "Retrieve the last stored payout denominator (the sum of all numerators of the oracle).\n @param _oracleId The oracle ID.\n The result can't change if the oracle has finished."
            },
            "functionSelector": "dbc0a675",
            "id": 90,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "payoutDenominator",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 81,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 80,
                  "mutability": "mutable",
                  "name": "_oracleId",
                  "nodeType": "VariableDeclaration",
                  "scope": 90,
                  "src": "2508:16:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 79,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "2508:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2507:18:0"
            },
            "returnParameters": {
              "id": 84,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 83,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 90,
                  "src": "2547:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 82,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2547:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2546:9:0"
            },
            "scope": 292,
            "src": "2481:131:0",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 118,
              "nodeType": "Block",
              "src": "3303:135:0",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 107,
                        "name": "_oracleId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 93,
                        "src": "3330:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      {
                        "id": 108,
                        "name": "_numerator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 97,
                        "src": "3341:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 109,
                        "name": "_condition",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 95,
                        "src": "3353:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 106,
                      "name": "_updateNumerator",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 246,
                      "src": "3313:16:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint64_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (uint64,uint256,uint256)"
                      }
                    },
                    "id": 110,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3313:51:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 111,
                  "nodeType": "ExpressionStatement",
                  "src": "3313:51:0"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 113,
                        "name": "_oracleId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 93,
                        "src": "3397:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      {
                        "id": 114,
                        "name": "_condition",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 95,
                        "src": "3408:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 115,
                        "name": "_numerator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 97,
                        "src": "3420:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 112,
                      "name": "ReportedNumerator",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 25,
                      "src": "3379:17:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint64_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (uint64,uint256,uint256)"
                      }
                    },
                    "id": 116,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3379:52:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 117,
                  "nodeType": "EmitStatement",
                  "src": "3374:57:0"
                }
              ]
            },
            "documentation": {
              "id": 91,
              "nodeType": "StructuredDocumentation",
              "src": "2618:467:0",
              "text": "Called by the oracle owner for reporting results of conditions.\n @param _oracleId The oracle ID.\n @param _condition The condition.\n @param _numerator The relative score of the condition.\n Note: We could make oracles easily verificable by a hash of all the data, but\n       - It may need allowing to set a numerator only once.\n       - It may be not necessary because future technology will allow to aggregate blockchains."
            },
            "functionSelector": "1f1b9c05",
            "id": 119,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 100,
                    "name": "_oracleId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 93,
                    "src": "3200:9:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  }
                ],
                "id": 101,
                "modifierName": {
                  "id": 99,
                  "name": "_isOracle",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1480,
                  "src": "3190:9:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint64_$",
                    "typeString": "modifier (uint64)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3190:20:0"
              },
              {
                "arguments": [
                  {
                    "id": 103,
                    "name": "_oracleId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 93,
                    "src": "3238:9:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  }
                ],
                "id": 104,
                "modifierName": {
                  "id": 102,
                  "name": "_oracleNotFinished",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 291,
                  "src": "3219:18:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint64_$",
                    "typeString": "modifier (uint64)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3219:29:0"
              }
            ],
            "name": "reportNumerator",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 98,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 93,
                  "mutability": "mutable",
                  "name": "_oracleId",
                  "nodeType": "VariableDeclaration",
                  "scope": 119,
                  "src": "3115:16:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 92,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "3115:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 95,
                  "mutability": "mutable",
                  "name": "_condition",
                  "nodeType": "VariableDeclaration",
                  "scope": 119,
                  "src": "3133:18:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 94,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3133:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 97,
                  "mutability": "mutable",
                  "name": "_numerator",
                  "nodeType": "VariableDeclaration",
                  "scope": 119,
                  "src": "3153:18:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 96,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3153:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3114:58:0"
            },
            "returnParameters": {
              "id": 105,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3303:0:0"
            },
            "scope": 292,
            "src": "3090:348:0",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 175,
              "nodeType": "Block",
              "src": "3914:305:0",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 142,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 138,
                            "name": "_conditions",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 125,
                            "src": "3932:11:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr",
                              "typeString": "uint64[] calldata"
                            }
                          },
                          "id": 139,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "3932:18:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "expression": {
                            "id": 140,
                            "name": "_numerators",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 128,
                            "src": "3954:11:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            }
                          },
                          "id": 141,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "3954:18:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3932:40:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4c656e677468206d69736d617463682e",
                        "id": 143,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3974:18:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_69196e6d8f435b7dddd0284e4d20d421412f090ae1046c624c63207a11a30fb3",
                          "typeString": "literal_string \"Length mismatch.\""
                        },
                        "value": "Length mismatch."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_69196e6d8f435b7dddd0284e4d20d421412f090ae1046c624c63207a11a30fb3",
                          "typeString": "literal_string \"Length mismatch.\""
                        }
                      ],
                      "id": 137,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "3924:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 144,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3924:69:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 145,
                  "nodeType": "ExpressionStatement",
                  "src": "3924:69:0"
                },
                {
                  "body": {
                    "id": 167,
                    "nodeType": "Block",
                    "src": "4052:86:0",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 158,
                              "name": "_oracleId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 122,
                              "src": "4083:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            {
                              "baseExpression": {
                                "id": 159,
                                "name": "_numerators",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 128,
                                "src": "4094:11:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                  "typeString": "uint256[] calldata"
                                }
                              },
                              "id": 161,
                              "indexExpression": {
                                "id": 160,
                                "name": "_i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 147,
                                "src": "4106:2:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4094:15:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "baseExpression": {
                                "id": 162,
                                "name": "_conditions",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 125,
                                "src": "4111:11:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr",
                                  "typeString": "uint64[] calldata"
                                }
                              },
                              "id": 164,
                              "indexExpression": {
                                "id": 163,
                                "name": "_i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 147,
                                "src": "4123:2:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4111:15:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            ],
                            "id": 157,
                            "name": "_updateNumerator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 246,
                            "src": "4066:16:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint64_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (uint64,uint256,uint256)"
                            }
                          },
                          "id": 165,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4066:61:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 166,
                        "nodeType": "ExpressionStatement",
                        "src": "4066:61:0"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 153,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 150,
                      "name": "_i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 147,
                      "src": "4021:2:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 151,
                        "name": "_conditions",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 125,
                        "src": "4026:11:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr",
                          "typeString": "uint64[] calldata"
                        }
                      },
                      "id": 152,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "4026:18:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4021:23:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 168,
                  "initializationExpression": {
                    "assignments": [
                      147
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 147,
                        "mutability": "mutable",
                        "name": "_i",
                        "nodeType": "VariableDeclaration",
                        "scope": 168,
                        "src": "4008:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 146,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "4008:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 149,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 148,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4018:1:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "4008:11:0"
                  },
                  "loopExpression": {
                    "expression": {
                      "id": 155,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "4046:4:0",
                      "subExpression": {
                        "id": 154,
                        "name": "_i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 147,
                        "src": "4048:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 156,
                    "nodeType": "ExpressionStatement",
                    "src": "4046:4:0"
                  },
                  "nodeType": "ForStatement",
                  "src": "4003:135:0"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 170,
                        "name": "_oracleId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 122,
                        "src": "4176:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      {
                        "id": 171,
                        "name": "_conditions",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 125,
                        "src": "4187:11:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr",
                          "typeString": "uint64[] calldata"
                        }
                      },
                      {
                        "id": 172,
                        "name": "_numerators",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 128,
                        "src": "4200:11:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr",
                          "typeString": "uint64[] calldata"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        }
                      ],
                      "id": 169,
                      "name": "ReportedNumeratorsBatch",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 36,
                      "src": "4152:23:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint64_$_t_array$_t_uint64_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                        "typeString": "function (uint64,uint64[] memory,uint256[] memory)"
                      }
                    },
                    "id": 173,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4152:60:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 174,
                  "nodeType": "EmitStatement",
                  "src": "4147:65:0"
                }
              ]
            },
            "documentation": {
              "id": 120,
              "nodeType": "StructuredDocumentation",
              "src": "3444:223:0",
              "text": "Called by the oracle owner for reporting results of several conditions.\n @param _oracleId The oracle ID.\n @param _conditions The conditions.\n @param _numerators The relative scores of the condition."
            },
            "functionSelector": "914b5b59",
            "id": 176,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 131,
                    "name": "_oracleId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 122,
                    "src": "3811:9:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  }
                ],
                "id": 132,
                "modifierName": {
                  "id": 130,
                  "name": "_isOracle",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1480,
                  "src": "3801:9:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint64_$",
                    "typeString": "modifier (uint64)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3801:20:0"
              },
              {
                "arguments": [
                  {
                    "id": 134,
                    "name": "_oracleId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 122,
                    "src": "3849:9:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  }
                ],
                "id": 135,
                "modifierName": {
                  "id": 133,
                  "name": "_oracleNotFinished",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 291,
                  "src": "3830:18:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint64_$",
                    "typeString": "modifier (uint64)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3830:29:0"
              }
            ],
            "name": "reportNumeratorsBatch",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 129,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 122,
                  "mutability": "mutable",
                  "name": "_oracleId",
                  "nodeType": "VariableDeclaration",
                  "scope": 176,
                  "src": "3703:16:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 121,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "3703:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 125,
                  "mutability": "mutable",
                  "name": "_conditions",
                  "nodeType": "VariableDeclaration",
                  "scope": 176,
                  "src": "3721:29:0",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr",
                    "typeString": "uint64[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 123,
                      "name": "uint64",
                      "nodeType": "ElementaryTypeName",
                      "src": "3721:6:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "id": 124,
                    "nodeType": "ArrayTypeName",
                    "src": "3721:8:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr",
                      "typeString": "uint64[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 128,
                  "mutability": "mutable",
                  "name": "_numerators",
                  "nodeType": "VariableDeclaration",
                  "scope": 176,
                  "src": "3752:30:0",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 126,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3752:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 127,
                    "nodeType": "ArrayTypeName",
                    "src": "3752:9:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3702:81:0"
            },
            "returnParameters": {
              "id": 136,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3914:0:0"
            },
            "scope": 292,
            "src": "3672:547:0",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 195,
              "nodeType": "Block",
              "src": "4490:92:0",
              "statements": [
                {
                  "expression": {
                    "id": 189,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 185,
                        "name": "oracleFinishedMap",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 40,
                        "src": "4500:17:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint64_$_t_bool_$",
                          "typeString": "mapping(uint64 => bool)"
                        }
                      },
                      "id": 187,
                      "indexExpression": {
                        "id": 186,
                        "name": "_oracleId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 179,
                        "src": "4518:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "4500:28:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "hexValue": "74727565",
                      "id": 188,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4531:4:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "4500:35:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 190,
                  "nodeType": "ExpressionStatement",
                  "src": "4500:35:0"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 192,
                        "name": "_oracleId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 179,
                        "src": "4565:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      ],
                      "id": 191,
                      "name": "OracleFinished",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 364,
                      "src": "4550:14:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$",
                        "typeString": "function (uint64)"
                      }
                    },
                    "id": 193,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4550:25:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 194,
                  "nodeType": "EmitStatement",
                  "src": "4545:30:0"
                }
              ]
            },
            "documentation": {
              "id": 177,
              "nodeType": "StructuredDocumentation",
              "src": "4225:178:0",
              "text": "Need to be called after all numerators were reported.\n @param _oracleId The oracle ID.\n You should set grace period end time before calling this method."
            },
            "functionSelector": "68e22f56",
            "id": 196,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 182,
                    "name": "_oracleId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 179,
                    "src": "4475:9:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  }
                ],
                "id": 183,
                "modifierName": {
                  "id": 181,
                  "name": "_isOracle",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1480,
                  "src": "4465:9:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint64_$",
                    "typeString": "modifier (uint64)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4465:20:0"
              }
            ],
            "name": "finishOracle",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 180,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 179,
                  "mutability": "mutable",
                  "name": "_oracleId",
                  "nodeType": "VariableDeclaration",
                  "scope": 196,
                  "src": "4430:16:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 178,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "4430:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4429:18:0"
            },
            "returnParameters": {
              "id": 184,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4490:0:0"
            },
            "scope": 292,
            "src": "4408:174:0",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              898
            ],
            "body": {
              "id": 209,
              "nodeType": "Block",
              "src": "4792:52:0",
              "statements": [
                {
                  "expression": {
                    "baseExpression": {
                      "id": 205,
                      "name": "oracleFinishedMap",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 40,
                      "src": "4809:17:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint64_$_t_bool_$",
                        "typeString": "mapping(uint64 => bool)"
                      }
                    },
                    "id": 207,
                    "indexExpression": {
                      "id": 206,
                      "name": "_oracleId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 199,
                      "src": "4827:9:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4809:28:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 204,
                  "id": 208,
                  "nodeType": "Return",
                  "src": "4802:35:0"
                }
              ]
            },
            "documentation": {
              "id": 197,
              "nodeType": "StructuredDocumentation",
              "src": "4588:119:0",
              "text": "Check if an oracle has finished.\n @param _oracleId The oracle ID.\n @return `true` if it has finished."
            },
            "functionSelector": "92d2a6bc",
            "id": 210,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isOracleFinished",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 201,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "4768:8:0"
            },
            "parameters": {
              "id": 200,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 199,
                  "mutability": "mutable",
                  "name": "_oracleId",
                  "nodeType": "VariableDeclaration",
                  "scope": 210,
                  "src": "4738:16:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 198,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "4738:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4737:18:0"
            },
            "returnParameters": {
              "id": 204,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 203,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 210,
                  "src": "4786:4:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 202,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4786:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4785:6:0"
            },
            "scope": 292,
            "src": "4712:132:0",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 245,
              "nodeType": "Block",
              "src": "4942:213:0",
              "statements": [
                {
                  "expression": {
                    "id": 235,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 219,
                        "name": "payoutDenominatorsMap",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 50,
                        "src": "4952:21:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 221,
                      "indexExpression": {
                        "id": 220,
                        "name": "_oracleId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 212,
                        "src": "4974:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "4952:32:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 229,
                              "name": "payoutNumeratorsMap",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 46,
                              "src": "5040:19:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint64_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                                "typeString": "mapping(uint64 => mapping(uint256 => uint256))"
                              }
                            },
                            "id": 231,
                            "indexExpression": {
                              "id": 230,
                              "name": "_oracleId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 212,
                              "src": "5060:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "5040:30:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                              "typeString": "mapping(uint256 => uint256)"
                            }
                          },
                          "id": 233,
                          "indexExpression": {
                            "id": 232,
                            "name": "_condition",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 216,
                            "src": "5071:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5040:42:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "arguments": [
                            {
                              "id": 226,
                              "name": "_numerator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 214,
                              "src": "5024:10:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "baseExpression": {
                                "id": 222,
                                "name": "payoutDenominatorsMap",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 50,
                                "src": "4987:21:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                  "typeString": "mapping(uint256 => uint256)"
                                }
                              },
                              "id": 224,
                              "indexExpression": {
                                "id": 223,
                                "name": "_oracleId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 212,
                                "src": "5009:9:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4987:32:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 225,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4286,
                            "src": "4987:36:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 227,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4987:48:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 228,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4303,
                        "src": "4987:52:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 234,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4987:96:0",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4952:131:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 236,
                  "nodeType": "ExpressionStatement",
                  "src": "4952:131:0"
                },
                {
                  "expression": {
                    "id": 243,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "baseExpression": {
                          "id": 237,
                          "name": "payoutNumeratorsMap",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 46,
                          "src": "5093:19:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint64_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                            "typeString": "mapping(uint64 => mapping(uint256 => uint256))"
                          }
                        },
                        "id": 240,
                        "indexExpression": {
                          "id": 238,
                          "name": "_oracleId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 212,
                          "src": "5113:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "5093:30:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 241,
                      "indexExpression": {
                        "id": 239,
                        "name": "_condition",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 216,
                        "src": "5124:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "5093:42:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 242,
                      "name": "_numerator",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 214,
                      "src": "5138:10:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5093:55:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 244,
                  "nodeType": "ExpressionStatement",
                  "src": "5093:55:0"
                }
              ]
            },
            "id": 246,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_updateNumerator",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 217,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 212,
                  "mutability": "mutable",
                  "name": "_oracleId",
                  "nodeType": "VariableDeclaration",
                  "scope": 246,
                  "src": "4876:16:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 211,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "4876:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 214,
                  "mutability": "mutable",
                  "name": "_numerator",
                  "nodeType": "VariableDeclaration",
                  "scope": 246,
                  "src": "4894:18:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 213,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4894:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 216,
                  "mutability": "mutable",
                  "name": "_condition",
                  "nodeType": "VariableDeclaration",
                  "scope": 246,
                  "src": "4914:18:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 215,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4914:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4875:58:0"
            },
            "returnParameters": {
              "id": 218,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4942:0:0"
            },
            "scope": 292,
            "src": "4850:305:0",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          },
          {
            "baseFunctions": [
              980
            ],
            "body": {
              "id": 276,
              "nodeType": "Block",
              "src": "5293:206:0",
              "statements": [
                {
                  "assignments": [
                    257
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 257,
                      "mutability": "mutable",
                      "name": "_numerator",
                      "nodeType": "VariableDeclaration",
                      "scope": 276,
                      "src": "5303:18:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 256,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5303:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 263,
                  "initialValue": {
                    "baseExpression": {
                      "baseExpression": {
                        "id": 258,
                        "name": "payoutNumeratorsMap",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 46,
                        "src": "5324:19:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint64_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                          "typeString": "mapping(uint64 => mapping(uint256 => uint256))"
                        }
                      },
                      "id": 260,
                      "indexExpression": {
                        "id": 259,
                        "name": "_oracleId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 248,
                        "src": "5344:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "5324:30:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                        "typeString": "mapping(uint256 => uint256)"
                      }
                    },
                    "id": 262,
                    "indexExpression": {
                      "id": 261,
                      "name": "_condition",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 250,
                      "src": "5355:10:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5324:42:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5303:63:0"
                },
                {
                  "assignments": [
                    265
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 265,
                      "mutability": "mutable",
                      "name": "_denominator",
                      "nodeType": "VariableDeclaration",
                      "scope": 276,
                      "src": "5376:20:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 264,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5376:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 269,
                  "initialValue": {
                    "baseExpression": {
                      "id": 266,
                      "name": "payoutDenominatorsMap",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 50,
                      "src": "5399:21:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                        "typeString": "mapping(uint256 => uint256)"
                      }
                    },
                    "id": 268,
                    "indexExpression": {
                      "id": 267,
                      "name": "_oracleId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 248,
                      "src": "5421:9:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5399:32:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5376:55:0"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 272,
                        "name": "_numerator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 257,
                        "src": "5467:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 273,
                        "name": "_denominator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 265,
                        "src": "5479:12:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 270,
                        "name": "ABDKMath64x64",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9904,
                        "src": "5448:13:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ABDKMath64x64_$9904_$",
                          "typeString": "type(library ABDKMath64x64)"
                        }
                      },
                      "id": 271,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "divu",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7723,
                      "src": "5448:18:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_int128_$",
                        "typeString": "function (uint256,uint256) pure returns (int128)"
                      }
                    },
                    "id": 274,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5448:44:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int128",
                      "typeString": "int128"
                    }
                  },
                  "functionReturnParameters": 255,
                  "id": 275,
                  "nodeType": "Return",
                  "src": "5441:51:0"
                }
              ]
            },
            "id": 277,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_calcRewardShare",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 252,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "5262:8:0"
            },
            "parameters": {
              "id": 251,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 248,
                  "mutability": "mutable",
                  "name": "_oracleId",
                  "nodeType": "VariableDeclaration",
                  "scope": 277,
                  "src": "5207:16:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 247,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "5207:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 250,
                  "mutability": "mutable",
                  "name": "_condition",
                  "nodeType": "VariableDeclaration",
                  "scope": 277,
                  "src": "5225:18:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 249,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5225:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5206:38:0"
            },
            "returnParameters": {
              "id": 255,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 254,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 277,
                  "src": "5285:6:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int128",
                    "typeString": "int128"
                  },
                  "typeName": {
                    "id": 253,
                    "name": "int128",
                    "nodeType": "ElementaryTypeName",
                    "src": "5285:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int128",
                      "typeString": "int128"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5284:8:0"
            },
            "scope": 292,
            "src": "5181:318:0",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 290,
              "nodeType": "Block",
              "src": "5572:88:0",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 285,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "5590:28:0",
                        "subExpression": {
                          "arguments": [
                            {
                              "id": 283,
                              "name": "_oracleId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 279,
                              "src": "5608:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            ],
                            "id": 282,
                            "name": "isOracleFinished",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              210
                            ],
                            "referencedDeclaration": 210,
                            "src": "5591:16:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint64_$returns$_t_bool_$",
                              "typeString": "function (uint64) view returns (bool)"
                            }
                          },
                          "id": 284,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5591:27:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4f7261636c652069732066696e69736865642e",
                        "id": 286,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5620:21:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_07752f182bc07d784242893cf9e0df609e1c9fa69b6d0199490e4253b472b5ee",
                          "typeString": "literal_string \"Oracle is finished.\""
                        },
                        "value": "Oracle is finished."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_07752f182bc07d784242893cf9e0df609e1c9fa69b6d0199490e4253b472b5ee",
                          "typeString": "literal_string \"Oracle is finished.\""
                        }
                      ],
                      "id": 281,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "5582:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 287,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5582:60:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 288,
                  "nodeType": "ExpressionStatement",
                  "src": "5582:60:0"
                },
                {
                  "id": 289,
                  "nodeType": "PlaceholderStatement",
                  "src": "5652:1:0"
                }
              ]
            },
            "id": 291,
            "name": "_oracleNotFinished",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 280,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 279,
                  "mutability": "mutable",
                  "name": "_oracleId",
                  "nodeType": "VariableDeclaration",
                  "scope": 291,
                  "src": "5554:16:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 278,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "5554:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5553:18:0"
            },
            "src": "5526:134:0",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 293,
        "src": "459:5203:0"
      }
    ],
    "src": "46:5617:0"
  },
  "legacyAST": {
    "attributes": {
      "absolutePath": "/home/user/Projects/future-contracts/contracts/BaseBidOnAddresses.sol",
      "exportedSymbols": {
        "ABDKMath64x64": [
          9904
        ],
        "BaseBidOnAddresses": [
          292
        ],
        "BaseLock": [
          1494
        ],
        "SafeMath": [
          4453
        ]
      },
      "license": "LGPL-3.0-or-later"
    },
    "children": [
      {
        "attributes": {
          "literals": [
            "solidity",
            "^",
            "0.7",
            ".1"
          ]
        },
        "id": 1,
        "name": "PragmaDirective",
        "src": "46:23:0"
      },
      {
        "attributes": {
          "SourceUnit": 4454,
          "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol",
          "file": "@openzeppelin/contracts/math/SafeMath.sol",
          "scope": 293,
          "symbolAliases": [
            {
              "foreign": {
                "attributes": {
                  "overloadedDeclarations": [
                    null
                  ],
                  "value": "SafeMath"
                },
                "id": 2,
                "name": "Identifier",
                "src": "79:8:0"
              }
            }
          ],
          "unitAlias": ""
        },
        "id": 3,
        "name": "ImportDirective",
        "src": "70:69:0"
      },
      {
        "attributes": {
          "SourceUnit": 9905,
          "absolutePath": "abdk-libraries-solidity/ABDKMath64x64.sol",
          "file": "abdk-libraries-solidity/ABDKMath64x64.sol",
          "scope": 293,
          "symbolAliases": [
            {
              "foreign": {
                "attributes": {
                  "overloadedDeclarations": [
                    null
                  ],
                  "value": "ABDKMath64x64"
                },
                "id": 4,
                "name": "Identifier",
                "src": "149:13:0"
              }
            }
          ],
          "unitAlias": ""
        },
        "id": 5,
        "name": "ImportDirective",
        "src": "140:74:0"
      },
      {
        "attributes": {
          "SourceUnit": 1495,
          "absolutePath": "/home/user/Projects/future-contracts/contracts/BaseLock.sol",
          "file": "./BaseLock.sol",
          "scope": 293,
          "symbolAliases": [
            {
              "foreign": {
                "attributes": {
                  "overloadedDeclarations": [
                    null
                  ],
                  "value": "BaseLock"
                },
                "id": 6,
                "name": "Identifier",
                "src": "224:8:0"
              }
            }
          ],
          "unitAlias": ""
        },
        "id": 7,
        "name": "ImportDirective",
        "src": "215:42:0"
      },
      {
        "attributes": {
          "abstract": true,
          "contractDependencies": [
            1494,
            3318,
            3651,
            4079,
            4245,
            4257,
            4504,
            4532,
            4654,
            4669,
            4710,
            5668,
            5860
          ],
          "contractKind": "contract",
          "fullyImplemented": true,
          "linearizedBaseContracts": [
            292,
            1494,
            5668,
            5860,
            4504,
            4532,
            4710,
            3651,
            3318,
            4669,
            4654,
            4245,
            4257,
            4079
          ],
          "name": "BaseBidOnAddresses",
          "scope": 293
        },
        "children": [
          {
            "attributes": {
              "text": "@title Bidding on Ethereum addresses\n @author Victor Porton\n This allows anyone claim conditional tokens in order for him to transfer money from the future.\n See `docs/future-money.rst`."
            },
            "id": 8,
            "name": "StructuredDocumentation",
            "src": "259:200:0"
          },
          {
            "attributes": {},
            "children": [
              {
                "attributes": {
                  "name": "BaseLock",
                  "referencedDeclaration": 1494,
                  "type": "contract BaseLock"
                },
                "id": 9,
                "name": "UserDefinedTypeName",
                "src": "499:8:0"
              }
            ],
            "id": 10,
            "name": "InheritanceSpecifier",
            "src": "499:8:0"
          },
          {
            "children": [
              {
                "attributes": {
                  "name": "ABDKMath64x64",
                  "referencedDeclaration": 9904,
                  "type": "library ABDKMath64x64"
                },
                "id": 11,
                "name": "UserDefinedTypeName",
                "src": "520:13:0"
              },
              {
                "attributes": {
                  "name": "int128",
                  "type": "int128"
                },
                "id": 12,
                "name": "ElementaryTypeName",
                "src": "538:6:0"
              }
            ],
            "id": 13,
            "name": "UsingForDirective",
            "src": "514:31:0"
          },
          {
            "children": [
              {
                "attributes": {
                  "name": "SafeMath",
                  "referencedDeclaration": 4453,
                  "type": "library SafeMath"
                },
                "id": 14,
                "name": "UserDefinedTypeName",
                "src": "556:8:0"
              },
              {
                "attributes": {
                  "name": "uint256",
                  "type": "uint256"
                },
                "id": 15,
                "name": "ElementaryTypeName",
                "src": "569:7:0"
              }
            ],
            "id": 16,
            "name": "UsingForDirective",
            "src": "550:27:0"
          },
          {
            "attributes": {
              "anonymous": false,
              "name": "ReportedNumerator"
            },
            "children": [
              {
                "attributes": {
                  "text": "A condition score was stored in the chain by an oracle.\n @param oracleId The oracle ID.\n @param condition The conditional (customer addresses).\n @param numerator The relative score provided by the oracle."
                },
                "id": 17,
                "name": "StructuredDocumentation",
                "src": "583:229:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "oracleId",
                      "scope": 25,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint64",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint64",
                          "type": "uint64"
                        },
                        "id": 18,
                        "name": "ElementaryTypeName",
                        "src": "850:6:0"
                      }
                    ],
                    "id": 19,
                    "name": "VariableDeclaration",
                    "src": "850:23:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "condition",
                      "scope": 25,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 20,
                        "name": "ElementaryTypeName",
                        "src": "883:7:0"
                      }
                    ],
                    "id": 21,
                    "name": "VariableDeclaration",
                    "src": "883:25:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "numerator",
                      "scope": 25,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 22,
                        "name": "ElementaryTypeName",
                        "src": "918:7:0"
                      }
                    ],
                    "id": 23,
                    "name": "VariableDeclaration",
                    "src": "918:17:0"
                  }
                ],
                "id": 24,
                "name": "ParameterList",
                "src": "840:101:0"
              }
            ],
            "id": 25,
            "name": "EventDefinition",
            "src": "817:125:0"
          },
          {
            "attributes": {
              "anonymous": false,
              "name": "ReportedNumeratorsBatch"
            },
            "children": [
              {
                "attributes": {
                  "text": "Some condition scores were stored in the chain by an oracle.\n @param oracleId The oracle ID.\n @param conditions The conditionals (customer addresses).\n @param numerators The relative scores provided by the oracle."
                },
                "id": 26,
                "name": "StructuredDocumentation",
                "src": "948:238:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "oracleId",
                      "scope": 36,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint64",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint64",
                          "type": "uint64"
                        },
                        "id": 27,
                        "name": "ElementaryTypeName",
                        "src": "1230:6:0"
                      }
                    ],
                    "id": 28,
                    "name": "VariableDeclaration",
                    "src": "1230:23:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "conditions",
                      "scope": 36,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint64[]",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "type": "uint64[]"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint64",
                              "type": "uint64"
                            },
                            "id": 29,
                            "name": "ElementaryTypeName",
                            "src": "1263:6:0"
                          }
                        ],
                        "id": 30,
                        "name": "ArrayTypeName",
                        "src": "1263:8:0"
                      }
                    ],
                    "id": 31,
                    "name": "VariableDeclaration",
                    "src": "1263:27:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "numerators",
                      "scope": 36,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256[]",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "type": "uint256[]"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 32,
                            "name": "ElementaryTypeName",
                            "src": "1300:7:0"
                          }
                        ],
                        "id": 33,
                        "name": "ArrayTypeName",
                        "src": "1300:9:0"
                      }
                    ],
                    "id": 34,
                    "name": "VariableDeclaration",
                    "src": "1300:20:0"
                  }
                ],
                "id": 35,
                "name": "ParameterList",
                "src": "1220:106:0"
              }
            ],
            "id": 36,
            "name": "EventDefinition",
            "src": "1191:136:0"
          },
          {
            "attributes": {
              "constant": false,
              "mutability": "mutable",
              "name": "oracleFinishedMap",
              "scope": 292,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "mapping(uint64 => bool)",
              "visibility": "private"
            },
            "children": [
              {
                "attributes": {
                  "type": "mapping(uint64 => bool)"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint64",
                      "type": "uint64"
                    },
                    "id": 37,
                    "name": "ElementaryTypeName",
                    "src": "1385:6:0"
                  },
                  {
                    "attributes": {
                      "name": "bool",
                      "type": "bool"
                    },
                    "id": 38,
                    "name": "ElementaryTypeName",
                    "src": "1395:4:0"
                  }
                ],
                "id": 39,
                "name": "Mapping",
                "src": "1377:23:0"
              }
            ],
            "id": 40,
            "name": "VariableDeclaration",
            "src": "1377:49:0"
          },
          {
            "attributes": {
              "constant": false,
              "mutability": "mutable",
              "name": "payoutNumeratorsMap",
              "scope": 292,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "mapping(uint64 => mapping(uint256 => uint256))",
              "visibility": "private"
            },
            "children": [
              {
                "attributes": {
                  "type": "mapping(uint64 => mapping(uint256 => uint256))"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint64",
                      "type": "uint64"
                    },
                    "id": 41,
                    "name": "ElementaryTypeName",
                    "src": "1517:6:0"
                  },
                  {
                    "attributes": {
                      "type": "mapping(uint256 => uint256)"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 42,
                        "name": "ElementaryTypeName",
                        "src": "1535:7:0"
                      },
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 43,
                        "name": "ElementaryTypeName",
                        "src": "1546:7:0"
                      }
                    ],
                    "id": 44,
                    "name": "Mapping",
                    "src": "1527:27:0"
                  }
                ],
                "id": 45,
                "name": "Mapping",
                "src": "1509:46:0"
              }
            ],
            "id": 46,
            "name": "VariableDeclaration",
            "src": "1509:74:0"
          },
          {
            "attributes": {
              "constant": false,
              "mutability": "mutable",
              "name": "payoutDenominatorsMap",
              "scope": 292,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "mapping(uint256 => uint256)",
              "visibility": "private"
            },
            "children": [
              {
                "attributes": {
                  "type": "mapping(uint256 => uint256)"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint256",
                      "type": "uint256"
                    },
                    "id": 47,
                    "name": "ElementaryTypeName",
                    "src": "1663:7:0"
                  },
                  {
                    "attributes": {
                      "name": "uint",
                      "type": "uint256"
                    },
                    "id": 48,
                    "name": "ElementaryTypeName",
                    "src": "1674:4:0"
                  }
                ],
                "id": 49,
                "name": "Mapping",
                "src": "1655:24:0"
              }
            ],
            "id": 50,
            "name": "VariableDeclaration",
            "src": "1655:54:0"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": true,
              "kind": "constructor",
              "name": "",
              "scope": 292,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "text": "Constructor.\n @param _uri Our ERC-1155 tokens description URI."
                },
                "id": 51,
                "name": "StructuredDocumentation",
                "src": "1716:73:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_uri",
                      "scope": 60,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "string",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "string",
                          "type": "string"
                        },
                        "id": 52,
                        "name": "ElementaryTypeName",
                        "src": "1806:6:0"
                      }
                    ],
                    "id": 53,
                    "name": "VariableDeclaration",
                    "src": "1806:18:0"
                  }
                ],
                "id": 54,
                "name": "ParameterList",
                "src": "1805:20:0"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 58,
                "name": "ParameterList",
                "src": "1841:0:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 1494,
                      "type": "type(contract BaseLock)",
                      "value": "BaseLock"
                    },
                    "id": 55,
                    "name": "Identifier",
                    "src": "1826:8:0"
                  },
                  {
                    "attributes": {
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 53,
                      "type": "string memory",
                      "value": "_uri"
                    },
                    "id": 56,
                    "name": "Identifier",
                    "src": "1835:4:0"
                  }
                ],
                "id": 57,
                "name": "ModifierInvocation",
                "src": "1826:14:0"
              },
              {
                "attributes": {
                  "statements": [
                    null
                  ]
                },
                "children": [],
                "id": 59,
                "name": "Block",
                "src": "1841:3:0"
              }
            ],
            "id": 60,
            "name": "FunctionDefinition",
            "src": "1794:50:0"
          },
          {
            "attributes": {
              "functionSelector": "789908e9",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "payoutNumerator",
              "scope": 292,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "text": "Retrieve the last stored payout numerator (relative score of a condition).\n @param _oracleId The oracle ID.\n @param _condition The condition (the original receiver of a conditional token).\n The result can't change if the oracle has finished."
                },
                "id": 61,
                "name": "StructuredDocumentation",
                "src": "1850:266:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_oracleId",
                      "scope": 77,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint64",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint64",
                          "type": "uint64"
                        },
                        "id": 62,
                        "name": "ElementaryTypeName",
                        "src": "2146:6:0"
                      }
                    ],
                    "id": 63,
                    "name": "VariableDeclaration",
                    "src": "2146:16:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_condition",
                      "scope": 77,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 64,
                        "name": "ElementaryTypeName",
                        "src": "2164:7:0"
                      }
                    ],
                    "id": 65,
                    "name": "VariableDeclaration",
                    "src": "2164:18:0"
                  }
                ],
                "id": 66,
                "name": "ParameterList",
                "src": "2145:38:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 77,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 67,
                        "name": "ElementaryTypeName",
                        "src": "2205:7:0"
                      }
                    ],
                    "id": 68,
                    "name": "VariableDeclaration",
                    "src": "2205:7:0"
                  }
                ],
                "id": 69,
                "name": "ParameterList",
                "src": "2204:9:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 69
                    },
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "mapping(uint256 => uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 46,
                                  "type": "mapping(uint64 => mapping(uint256 => uint256))",
                                  "value": "payoutNumeratorsMap"
                                },
                                "id": 70,
                                "name": "Identifier",
                                "src": "2231:19:0"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 63,
                                  "type": "uint64",
                                  "value": "_oracleId"
                                },
                                "id": 71,
                                "name": "Identifier",
                                "src": "2251:9:0"
                              }
                            ],
                            "id": 72,
                            "name": "IndexAccess",
                            "src": "2231:30:0"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 65,
                              "type": "uint256",
                              "value": "_condition"
                            },
                            "id": 73,
                            "name": "Identifier",
                            "src": "2262:10:0"
                          }
                        ],
                        "id": 74,
                        "name": "IndexAccess",
                        "src": "2231:42:0"
                      }
                    ],
                    "id": 75,
                    "name": "Return",
                    "src": "2224:49:0"
                  }
                ],
                "id": 76,
                "name": "Block",
                "src": "2214:66:0"
              }
            ],
            "id": 77,
            "name": "FunctionDefinition",
            "src": "2121:159:0"
          },
          {
            "attributes": {
              "functionSelector": "dbc0a675",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "payoutDenominator",
              "scope": 292,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "text": "Retrieve the last stored payout denominator (the sum of all numerators of the oracle).\n @param _oracleId The oracle ID.\n The result can't change if the oracle has finished."
                },
                "id": 78,
                "name": "StructuredDocumentation",
                "src": "2286:190:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_oracleId",
                      "scope": 90,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint64",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint64",
                          "type": "uint64"
                        },
                        "id": 79,
                        "name": "ElementaryTypeName",
                        "src": "2508:6:0"
                      }
                    ],
                    "id": 80,
                    "name": "VariableDeclaration",
                    "src": "2508:16:0"
                  }
                ],
                "id": 81,
                "name": "ParameterList",
                "src": "2507:18:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 90,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 82,
                        "name": "ElementaryTypeName",
                        "src": "2547:7:0"
                      }
                    ],
                    "id": 83,
                    "name": "VariableDeclaration",
                    "src": "2547:7:0"
                  }
                ],
                "id": 84,
                "name": "ParameterList",
                "src": "2546:9:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 84
                    },
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 50,
                              "type": "mapping(uint256 => uint256)",
                              "value": "payoutDenominatorsMap"
                            },
                            "id": 85,
                            "name": "Identifier",
                            "src": "2573:21:0"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 80,
                              "type": "uint64",
                              "value": "_oracleId"
                            },
                            "id": 86,
                            "name": "Identifier",
                            "src": "2595:9:0"
                          }
                        ],
                        "id": 87,
                        "name": "IndexAccess",
                        "src": "2573:32:0"
                      }
                    ],
                    "id": 88,
                    "name": "Return",
                    "src": "2566:39:0"
                  }
                ],
                "id": 89,
                "name": "Block",
                "src": "2556:56:0"
              }
            ],
            "id": 90,
            "name": "FunctionDefinition",
            "src": "2481:131:0"
          },
          {
            "attributes": {
              "functionSelector": "1f1b9c05",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "name": "reportNumerator",
              "scope": 292,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "text": "Called by the oracle owner for reporting results of conditions.\n @param _oracleId The oracle ID.\n @param _condition The condition.\n @param _numerator The relative score of the condition.\n Note: We could make oracles easily verificable by a hash of all the data, but\n       - It may need allowing to set a numerator only once.\n       - It may be not necessary because future technology will allow to aggregate blockchains."
                },
                "id": 91,
                "name": "StructuredDocumentation",
                "src": "2618:467:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_oracleId",
                      "scope": 119,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint64",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint64",
                          "type": "uint64"
                        },
                        "id": 92,
                        "name": "ElementaryTypeName",
                        "src": "3115:6:0"
                      }
                    ],
                    "id": 93,
                    "name": "VariableDeclaration",
                    "src": "3115:16:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_condition",
                      "scope": 119,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 94,
                        "name": "ElementaryTypeName",
                        "src": "3133:7:0"
                      }
                    ],
                    "id": 95,
                    "name": "VariableDeclaration",
                    "src": "3133:18:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_numerator",
                      "scope": 119,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 96,
                        "name": "ElementaryTypeName",
                        "src": "3153:7:0"
                      }
                    ],
                    "id": 97,
                    "name": "VariableDeclaration",
                    "src": "3153:18:0"
                  }
                ],
                "id": 98,
                "name": "ParameterList",
                "src": "3114:58:0"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 105,
                "name": "ParameterList",
                "src": "3303:0:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 1480,
                      "type": "modifier (uint64)",
                      "value": "_isOracle"
                    },
                    "id": 99,
                    "name": "Identifier",
                    "src": "3190:9:0"
                  },
                  {
                    "attributes": {
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 93,
                      "type": "uint64",
                      "value": "_oracleId"
                    },
                    "id": 100,
                    "name": "Identifier",
                    "src": "3200:9:0"
                  }
                ],
                "id": 101,
                "name": "ModifierInvocation",
                "src": "3190:20:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 291,
                      "type": "modifier (uint64)",
                      "value": "_oracleNotFinished"
                    },
                    "id": 102,
                    "name": "Identifier",
                    "src": "3219:18:0"
                  },
                  {
                    "attributes": {
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 93,
                      "type": "uint64",
                      "value": "_oracleId"
                    },
                    "id": 103,
                    "name": "Identifier",
                    "src": "3238:9:0"
                  }
                ],
                "id": 104,
                "name": "ModifierInvocation",
                "src": "3219:29:0"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 246,
                              "type": "function (uint64,uint256,uint256)",
                              "value": "_updateNumerator"
                            },
                            "id": 106,
                            "name": "Identifier",
                            "src": "3313:16:0"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 93,
                              "type": "uint64",
                              "value": "_oracleId"
                            },
                            "id": 107,
                            "name": "Identifier",
                            "src": "3330:9:0"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 97,
                              "type": "uint256",
                              "value": "_numerator"
                            },
                            "id": 108,
                            "name": "Identifier",
                            "src": "3341:10:0"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 95,
                              "type": "uint256",
                              "value": "_condition"
                            },
                            "id": 109,
                            "name": "Identifier",
                            "src": "3353:10:0"
                          }
                        ],
                        "id": 110,
                        "name": "FunctionCall",
                        "src": "3313:51:0"
                      }
                    ],
                    "id": 111,
                    "name": "ExpressionStatement",
                    "src": "3313:51:0"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 25,
                              "type": "function (uint64,uint256,uint256)",
                              "value": "ReportedNumerator"
                            },
                            "id": 112,
                            "name": "Identifier",
                            "src": "3379:17:0"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 93,
                              "type": "uint64",
                              "value": "_oracleId"
                            },
                            "id": 113,
                            "name": "Identifier",
                            "src": "3397:9:0"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 95,
                              "type": "uint256",
                              "value": "_condition"
                            },
                            "id": 114,
                            "name": "Identifier",
                            "src": "3408:10:0"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 97,
                              "type": "uint256",
                              "value": "_numerator"
                            },
                            "id": 115,
                            "name": "Identifier",
                            "src": "3420:10:0"
                          }
                        ],
                        "id": 116,
                        "name": "FunctionCall",
                        "src": "3379:52:0"
                      }
                    ],
                    "id": 117,
                    "name": "EmitStatement",
                    "src": "3374:57:0"
                  }
                ],
                "id": 118,
                "name": "Block",
                "src": "3303:135:0"
              }
            ],
            "id": 119,
            "name": "FunctionDefinition",
            "src": "3090:348:0"
          },
          {
            "attributes": {
              "functionSelector": "914b5b59",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "name": "reportNumeratorsBatch",
              "scope": 292,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "text": "Called by the oracle owner for reporting results of several conditions.\n @param _oracleId The oracle ID.\n @param _conditions The conditions.\n @param _numerators The relative scores of the condition."
                },
                "id": 120,
                "name": "StructuredDocumentation",
                "src": "3444:223:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_oracleId",
                      "scope": 176,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint64",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint64",
                          "type": "uint64"
                        },
                        "id": 121,
                        "name": "ElementaryTypeName",
                        "src": "3703:6:0"
                      }
                    ],
                    "id": 122,
                    "name": "VariableDeclaration",
                    "src": "3703:16:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_conditions",
                      "scope": 176,
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "type": "uint64[]",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "type": "uint64[]"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint64",
                              "type": "uint64"
                            },
                            "id": 123,
                            "name": "ElementaryTypeName",
                            "src": "3721:6:0"
                          }
                        ],
                        "id": 124,
                        "name": "ArrayTypeName",
                        "src": "3721:8:0"
                      }
                    ],
                    "id": 125,
                    "name": "VariableDeclaration",
                    "src": "3721:29:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_numerators",
                      "scope": 176,
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "type": "uint256[]",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "type": "uint256[]"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 126,
                            "name": "ElementaryTypeName",
                            "src": "3752:7:0"
                          }
                        ],
                        "id": 127,
                        "name": "ArrayTypeName",
                        "src": "3752:9:0"
                      }
                    ],
                    "id": 128,
                    "name": "VariableDeclaration",
                    "src": "3752:30:0"
                  }
                ],
                "id": 129,
                "name": "ParameterList",
                "src": "3702:81:0"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 136,
                "name": "ParameterList",
                "src": "3914:0:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 1480,
                      "type": "modifier (uint64)",
                      "value": "_isOracle"
                    },
                    "id": 130,
                    "name": "Identifier",
                    "src": "3801:9:0"
                  },
                  {
                    "attributes": {
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 122,
                      "type": "uint64",
                      "value": "_oracleId"
                    },
                    "id": 131,
                    "name": "Identifier",
                    "src": "3811:9:0"
                  }
                ],
                "id": 132,
                "name": "ModifierInvocation",
                "src": "3801:20:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 291,
                      "type": "modifier (uint64)",
                      "value": "_oracleNotFinished"
                    },
                    "id": 133,
                    "name": "Identifier",
                    "src": "3830:18:0"
                  },
                  {
                    "attributes": {
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 122,
                      "type": "uint64",
                      "value": "_oracleId"
                    },
                    "id": 134,
                    "name": "Identifier",
                    "src": "3849:9:0"
                  }
                ],
                "id": 135,
                "name": "ModifierInvocation",
                "src": "3830:29:0"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_69196e6d8f435b7dddd0284e4d20d421412f090ae1046c624c63207a11a30fb3",
                                  "typeString": "literal_string \"Length mismatch.\""
                                }
                              ],
                              "overloadedDeclarations": [
                                4294967278,
                                4294967278
                              ],
                              "referencedDeclaration": 4294967278,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 137,
                            "name": "Identifier",
                            "src": "3924:7:0"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "==",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "length",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 125,
                                      "type": "uint64[] calldata",
                                      "value": "_conditions"
                                    },
                                    "id": 138,
                                    "name": "Identifier",
                                    "src": "3932:11:0"
                                  }
                                ],
                                "id": 139,
                                "name": "MemberAccess",
                                "src": "3932:18:0"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "length",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 128,
                                      "type": "uint256[] calldata",
                                      "value": "_numerators"
                                    },
                                    "id": 140,
                                    "name": "Identifier",
                                    "src": "3954:11:0"
                                  }
                                ],
                                "id": 141,
                                "name": "MemberAccess",
                                "src": "3954:18:0"
                              }
                            ],
                            "id": 142,
                            "name": "BinaryOperation",
                            "src": "3932:40:0"
                          },
                          {
                            "attributes": {
                              "hexvalue": "4c656e677468206d69736d617463682e",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "string",
                              "type": "literal_string \"Length mismatch.\"",
                              "value": "Length mismatch."
                            },
                            "id": 143,
                            "name": "Literal",
                            "src": "3974:18:0"
                          }
                        ],
                        "id": 144,
                        "name": "FunctionCall",
                        "src": "3924:69:0"
                      }
                    ],
                    "id": 145,
                    "name": "ExpressionStatement",
                    "src": "3924:69:0"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "assignments": [
                            147
                          ]
                        },
                        "children": [
                          {
                            "attributes": {
                              "constant": false,
                              "mutability": "mutable",
                              "name": "_i",
                              "scope": 168,
                              "stateVariable": false,
                              "storageLocation": "default",
                              "type": "uint256",
                              "visibility": "internal"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "name": "uint",
                                  "type": "uint256"
                                },
                                "id": 146,
                                "name": "ElementaryTypeName",
                                "src": "4008:4:0"
                              }
                            ],
                            "id": 147,
                            "name": "VariableDeclaration",
                            "src": "4008:7:0"
                          },
                          {
                            "attributes": {
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 148,
                            "name": "Literal",
                            "src": "4018:1:0"
                          }
                        ],
                        "id": 149,
                        "name": "VariableDeclarationStatement",
                        "src": "4008:11:0"
                      },
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "<",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 147,
                              "type": "uint256",
                              "value": "_i"
                            },
                            "id": 150,
                            "name": "Identifier",
                            "src": "4021:2:0"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "length",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 125,
                                  "type": "uint64[] calldata",
                                  "value": "_conditions"
                                },
                                "id": 151,
                                "name": "Identifier",
                                "src": "4026:11:0"
                              }
                            ],
                            "id": 152,
                            "name": "MemberAccess",
                            "src": "4026:18:0"
                          }
                        ],
                        "id": 153,
                        "name": "BinaryOperation",
                        "src": "4021:23:0"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "++",
                              "prefix": true,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 147,
                                  "type": "uint256",
                                  "value": "_i"
                                },
                                "id": 154,
                                "name": "Identifier",
                                "src": "4048:2:0"
                              }
                            ],
                            "id": 155,
                            "name": "UnaryOperation",
                            "src": "4046:4:0"
                          }
                        ],
                        "id": 156,
                        "name": "ExpressionStatement",
                        "src": "4046:4:0"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "tuple()",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint64",
                                          "typeString": "uint64"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint64",
                                          "typeString": "uint64"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 246,
                                      "type": "function (uint64,uint256,uint256)",
                                      "value": "_updateNumerator"
                                    },
                                    "id": 157,
                                    "name": "Identifier",
                                    "src": "4066:16:0"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 122,
                                      "type": "uint64",
                                      "value": "_oracleId"
                                    },
                                    "id": 158,
                                    "name": "Identifier",
                                    "src": "4083:9:0"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 128,
                                          "type": "uint256[] calldata",
                                          "value": "_numerators"
                                        },
                                        "id": 159,
                                        "name": "Identifier",
                                        "src": "4094:11:0"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 147,
                                          "type": "uint256",
                                          "value": "_i"
                                        },
                                        "id": 160,
                                        "name": "Identifier",
                                        "src": "4106:2:0"
                                      }
                                    ],
                                    "id": 161,
                                    "name": "IndexAccess",
                                    "src": "4094:15:0"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "uint64"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 125,
                                          "type": "uint64[] calldata",
                                          "value": "_conditions"
                                        },
                                        "id": 162,
                                        "name": "Identifier",
                                        "src": "4111:11:0"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 147,
                                          "type": "uint256",
                                          "value": "_i"
                                        },
                                        "id": 163,
                                        "name": "Identifier",
                                        "src": "4123:2:0"
                                      }
                                    ],
                                    "id": 164,
                                    "name": "IndexAccess",
                                    "src": "4111:15:0"
                                  }
                                ],
                                "id": 165,
                                "name": "FunctionCall",
                                "src": "4066:61:0"
                              }
                            ],
                            "id": 166,
                            "name": "ExpressionStatement",
                            "src": "4066:61:0"
                          }
                        ],
                        "id": 167,
                        "name": "Block",
                        "src": "4052:86:0"
                      }
                    ],
                    "id": 168,
                    "name": "ForStatement",
                    "src": "4003:135:0"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_uint64_$dyn_calldata_ptr",
                                  "typeString": "uint64[] calldata"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                  "typeString": "uint256[] calldata"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 36,
                              "type": "function (uint64,uint64[] memory,uint256[] memory)",
                              "value": "ReportedNumeratorsBatch"
                            },
                            "id": 169,
                            "name": "Identifier",
                            "src": "4152:23:0"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 122,
                              "type": "uint64",
                              "value": "_oracleId"
                            },
                            "id": 170,
                            "name": "Identifier",
                            "src": "4176:9:0"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 125,
                              "type": "uint64[] calldata",
                              "value": "_conditions"
                            },
                            "id": 171,
                            "name": "Identifier",
                            "src": "4187:11:0"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 128,
                              "type": "uint256[] calldata",
                              "value": "_numerators"
                            },
                            "id": 172,
                            "name": "Identifier",
                            "src": "4200:11:0"
                          }
                        ],
                        "id": 173,
                        "name": "FunctionCall",
                        "src": "4152:60:0"
                      }
                    ],
                    "id": 174,
                    "name": "EmitStatement",
                    "src": "4147:65:0"
                  }
                ],
                "id": 175,
                "name": "Block",
                "src": "3914:305:0"
              }
            ],
            "id": 176,
            "name": "FunctionDefinition",
            "src": "3672:547:0"
          },
          {
            "attributes": {
              "functionSelector": "68e22f56",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "name": "finishOracle",
              "scope": 292,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "text": "Need to be called after all numerators were reported.\n @param _oracleId The oracle ID.\n You should set grace period end time before calling this method."
                },
                "id": 177,
                "name": "StructuredDocumentation",
                "src": "4225:178:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_oracleId",
                      "scope": 196,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint64",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint64",
                          "type": "uint64"
                        },
                        "id": 178,
                        "name": "ElementaryTypeName",
                        "src": "4430:6:0"
                      }
                    ],
                    "id": 179,
                    "name": "VariableDeclaration",
                    "src": "4430:16:0"
                  }
                ],
                "id": 180,
                "name": "ParameterList",
                "src": "4429:18:0"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 184,
                "name": "ParameterList",
                "src": "4490:0:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 1480,
                      "type": "modifier (uint64)",
                      "value": "_isOracle"
                    },
                    "id": 181,
                    "name": "Identifier",
                    "src": "4465:9:0"
                  },
                  {
                    "attributes": {
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 179,
                      "type": "uint64",
                      "value": "_oracleId"
                    },
                    "id": 182,
                    "name": "Identifier",
                    "src": "4475:9:0"
                  }
                ],
                "id": 183,
                "name": "ModifierInvocation",
                "src": "4465:20:0"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 40,
                                  "type": "mapping(uint64 => bool)",
                                  "value": "oracleFinishedMap"
                                },
                                "id": 185,
                                "name": "Identifier",
                                "src": "4500:17:0"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 179,
                                  "type": "uint64",
                                  "value": "_oracleId"
                                },
                                "id": 186,
                                "name": "Identifier",
                                "src": "4518:9:0"
                              }
                            ],
                            "id": 187,
                            "name": "IndexAccess",
                            "src": "4500:28:0"
                          },
                          {
                            "attributes": {
                              "hexvalue": "74727565",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "bool",
                              "type": "bool",
                              "value": "true"
                            },
                            "id": 188,
                            "name": "Literal",
                            "src": "4531:4:0"
                          }
                        ],
                        "id": 189,
                        "name": "Assignment",
                        "src": "4500:35:0"
                      }
                    ],
                    "id": 190,
                    "name": "ExpressionStatement",
                    "src": "4500:35:0"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 364,
                              "type": "function (uint64)",
                              "value": "OracleFinished"
                            },
                            "id": 191,
                            "name": "Identifier",
                            "src": "4550:14:0"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 179,
                              "type": "uint64",
                              "value": "_oracleId"
                            },
                            "id": 192,
                            "name": "Identifier",
                            "src": "4565:9:0"
                          }
                        ],
                        "id": 193,
                        "name": "FunctionCall",
                        "src": "4550:25:0"
                      }
                    ],
                    "id": 194,
                    "name": "EmitStatement",
                    "src": "4545:30:0"
                  }
                ],
                "id": 195,
                "name": "Block",
                "src": "4490:92:0"
              }
            ],
            "id": 196,
            "name": "FunctionDefinition",
            "src": "4408:174:0"
          },
          {
            "attributes": {
              "baseFunctions": [
                898
              ],
              "functionSelector": "92d2a6bc",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "isOracleFinished",
              "scope": 292,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "text": "Check if an oracle has finished.\n @param _oracleId The oracle ID.\n @return `true` if it has finished."
                },
                "id": 197,
                "name": "StructuredDocumentation",
                "src": "4588:119:0"
              },
              {
                "attributes": {
                  "overrides": [
                    null
                  ]
                },
                "id": 201,
                "name": "OverrideSpecifier",
                "src": "4768:8:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_oracleId",
                      "scope": 210,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint64",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint64",
                          "type": "uint64"
                        },
                        "id": 198,
                        "name": "ElementaryTypeName",
                        "src": "4738:6:0"
                      }
                    ],
                    "id": 199,
                    "name": "VariableDeclaration",
                    "src": "4738:16:0"
                  }
                ],
                "id": 200,
                "name": "ParameterList",
                "src": "4737:18:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 210,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 202,
                        "name": "ElementaryTypeName",
                        "src": "4786:4:0"
                      }
                    ],
                    "id": 203,
                    "name": "VariableDeclaration",
                    "src": "4786:4:0"
                  }
                ],
                "id": 204,
                "name": "ParameterList",
                "src": "4785:6:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 204
                    },
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 40,
                              "type": "mapping(uint64 => bool)",
                              "value": "oracleFinishedMap"
                            },
                            "id": 205,
                            "name": "Identifier",
                            "src": "4809:17:0"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 199,
                              "type": "uint64",
                              "value": "_oracleId"
                            },
                            "id": 206,
                            "name": "Identifier",
                            "src": "4827:9:0"
                          }
                        ],
                        "id": 207,
                        "name": "IndexAccess",
                        "src": "4809:28:0"
                      }
                    ],
                    "id": 208,
                    "name": "Return",
                    "src": "4802:35:0"
                  }
                ],
                "id": 209,
                "name": "Block",
                "src": "4792:52:0"
              }
            ],
            "id": 210,
            "name": "FunctionDefinition",
            "src": "4712:132:0"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "_updateNumerator",
              "scope": 292,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "private"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_oracleId",
                      "scope": 246,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint64",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint64",
                          "type": "uint64"
                        },
                        "id": 211,
                        "name": "ElementaryTypeName",
                        "src": "4876:6:0"
                      }
                    ],
                    "id": 212,
                    "name": "VariableDeclaration",
                    "src": "4876:16:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_numerator",
                      "scope": 246,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 213,
                        "name": "ElementaryTypeName",
                        "src": "4894:7:0"
                      }
                    ],
                    "id": 214,
                    "name": "VariableDeclaration",
                    "src": "4894:18:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_condition",
                      "scope": 246,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 215,
                        "name": "ElementaryTypeName",
                        "src": "4914:7:0"
                      }
                    ],
                    "id": 216,
                    "name": "VariableDeclaration",
                    "src": "4914:18:0"
                  }
                ],
                "id": 217,
                "name": "ParameterList",
                "src": "4875:58:0"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 218,
                "name": "ParameterList",
                "src": "4942:0:0"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 50,
                                  "type": "mapping(uint256 => uint256)",
                                  "value": "payoutDenominatorsMap"
                                },
                                "id": 219,
                                "name": "Identifier",
                                "src": "4952:21:0"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 212,
                                  "type": "uint64",
                                  "value": "_oracleId"
                                },
                                "id": 220,
                                "name": "Identifier",
                                "src": "4974:9:0"
                              }
                            ],
                            "id": 221,
                            "name": "IndexAccess",
                            "src": "4952:32:0"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint256",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "sub",
                                  "referencedDeclaration": 4303,
                                  "type": "function (uint256,uint256) pure returns (uint256)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "uint256",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "add",
                                          "referencedDeclaration": 4286,
                                          "type": "function (uint256,uint256) pure returns (uint256)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "type": "uint256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 50,
                                                  "type": "mapping(uint256 => uint256)",
                                                  "value": "payoutDenominatorsMap"
                                                },
                                                "id": 222,
                                                "name": "Identifier",
                                                "src": "4987:21:0"
                                              },
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 212,
                                                  "type": "uint64",
                                                  "value": "_oracleId"
                                                },
                                                "id": 223,
                                                "name": "Identifier",
                                                "src": "5009:9:0"
                                              }
                                            ],
                                            "id": 224,
                                            "name": "IndexAccess",
                                            "src": "4987:32:0"
                                          }
                                        ],
                                        "id": 225,
                                        "name": "MemberAccess",
                                        "src": "4987:36:0"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 214,
                                          "type": "uint256",
                                          "value": "_numerator"
                                        },
                                        "id": 226,
                                        "name": "Identifier",
                                        "src": "5024:10:0"
                                      }
                                    ],
                                    "id": 227,
                                    "name": "FunctionCall",
                                    "src": "4987:48:0"
                                  }
                                ],
                                "id": 228,
                                "name": "MemberAccess",
                                "src": "4987:52:0"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "mapping(uint256 => uint256)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 46,
                                          "type": "mapping(uint64 => mapping(uint256 => uint256))",
                                          "value": "payoutNumeratorsMap"
                                        },
                                        "id": 229,
                                        "name": "Identifier",
                                        "src": "5040:19:0"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 212,
                                          "type": "uint64",
                                          "value": "_oracleId"
                                        },
                                        "id": 230,
                                        "name": "Identifier",
                                        "src": "5060:9:0"
                                      }
                                    ],
                                    "id": 231,
                                    "name": "IndexAccess",
                                    "src": "5040:30:0"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 216,
                                      "type": "uint256",
                                      "value": "_condition"
                                    },
                                    "id": 232,
                                    "name": "Identifier",
                                    "src": "5071:10:0"
                                  }
                                ],
                                "id": 233,
                                "name": "IndexAccess",
                                "src": "5040:42:0"
                              }
                            ],
                            "id": 234,
                            "name": "FunctionCall",
                            "src": "4987:96:0"
                          }
                        ],
                        "id": 235,
                        "name": "Assignment",
                        "src": "4952:131:0"
                      }
                    ],
                    "id": 236,
                    "name": "ExpressionStatement",
                    "src": "4952:131:0"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "mapping(uint256 => uint256)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 46,
                                      "type": "mapping(uint64 => mapping(uint256 => uint256))",
                                      "value": "payoutNumeratorsMap"
                                    },
                                    "id": 237,
                                    "name": "Identifier",
                                    "src": "5093:19:0"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 212,
                                      "type": "uint64",
                                      "value": "_oracleId"
                                    },
                                    "id": 238,
                                    "name": "Identifier",
                                    "src": "5113:9:0"
                                  }
                                ],
                                "id": 240,
                                "name": "IndexAccess",
                                "src": "5093:30:0"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 216,
                                  "type": "uint256",
                                  "value": "_condition"
                                },
                                "id": 239,
                                "name": "Identifier",
                                "src": "5124:10:0"
                              }
                            ],
                            "id": 241,
                            "name": "IndexAccess",
                            "src": "5093:42:0"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 214,
                              "type": "uint256",
                              "value": "_numerator"
                            },
                            "id": 242,
                            "name": "Identifier",
                            "src": "5138:10:0"
                          }
                        ],
                        "id": 243,
                        "name": "Assignment",
                        "src": "5093:55:0"
                      }
                    ],
                    "id": 244,
                    "name": "ExpressionStatement",
                    "src": "5093:55:0"
                  }
                ],
                "id": 245,
                "name": "Block",
                "src": "4942:213:0"
              }
            ],
            "id": 246,
            "name": "FunctionDefinition",
            "src": "4850:305:0"
          },
          {
            "attributes": {
              "baseFunctions": [
                980
              ],
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "_calcRewardShare",
              "scope": 292,
              "stateMutability": "view",
              "virtual": true,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "overrides": [
                    null
                  ]
                },
                "id": 252,
                "name": "OverrideSpecifier",
                "src": "5262:8:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_oracleId",
                      "scope": 277,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint64",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint64",
                          "type": "uint64"
                        },
                        "id": 247,
                        "name": "ElementaryTypeName",
                        "src": "5207:6:0"
                      }
                    ],
                    "id": 248,
                    "name": "VariableDeclaration",
                    "src": "5207:16:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_condition",
                      "scope": 277,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 249,
                        "name": "ElementaryTypeName",
                        "src": "5225:7:0"
                      }
                    ],
                    "id": 250,
                    "name": "VariableDeclaration",
                    "src": "5225:18:0"
                  }
                ],
                "id": 251,
                "name": "ParameterList",
                "src": "5206:38:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 277,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "int128",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "int128",
                          "type": "int128"
                        },
                        "id": 253,
                        "name": "ElementaryTypeName",
                        "src": "5285:6:0"
                      }
                    ],
                    "id": 254,
                    "name": "VariableDeclaration",
                    "src": "5285:6:0"
                  }
                ],
                "id": 255,
                "name": "ParameterList",
                "src": "5284:8:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        257
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "_numerator",
                          "scope": 276,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 256,
                            "name": "ElementaryTypeName",
                            "src": "5303:7:0"
                          }
                        ],
                        "id": 257,
                        "name": "VariableDeclaration",
                        "src": "5303:18:0"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "mapping(uint256 => uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 46,
                                  "type": "mapping(uint64 => mapping(uint256 => uint256))",
                                  "value": "payoutNumeratorsMap"
                                },
                                "id": 258,
                                "name": "Identifier",
                                "src": "5324:19:0"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 248,
                                  "type": "uint64",
                                  "value": "_oracleId"
                                },
                                "id": 259,
                                "name": "Identifier",
                                "src": "5344:9:0"
                              }
                            ],
                            "id": 260,
                            "name": "IndexAccess",
                            "src": "5324:30:0"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 250,
                              "type": "uint256",
                              "value": "_condition"
                            },
                            "id": 261,
                            "name": "Identifier",
                            "src": "5355:10:0"
                          }
                        ],
                        "id": 262,
                        "name": "IndexAccess",
                        "src": "5324:42:0"
                      }
                    ],
                    "id": 263,
                    "name": "VariableDeclarationStatement",
                    "src": "5303:63:0"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        265
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "_denominator",
                          "scope": 276,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 264,
                            "name": "ElementaryTypeName",
                            "src": "5376:7:0"
                          }
                        ],
                        "id": 265,
                        "name": "VariableDeclaration",
                        "src": "5376:20:0"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 50,
                              "type": "mapping(uint256 => uint256)",
                              "value": "payoutDenominatorsMap"
                            },
                            "id": 266,
                            "name": "Identifier",
                            "src": "5399:21:0"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 248,
                              "type": "uint64",
                              "value": "_oracleId"
                            },
                            "id": 267,
                            "name": "Identifier",
                            "src": "5421:9:0"
                          }
                        ],
                        "id": 268,
                        "name": "IndexAccess",
                        "src": "5399:32:0"
                      }
                    ],
                    "id": 269,
                    "name": "VariableDeclarationStatement",
                    "src": "5376:55:0"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 255
                    },
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "int128",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "divu",
                              "referencedDeclaration": 7723,
                              "type": "function (uint256,uint256) pure returns (int128)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 9904,
                                  "type": "type(library ABDKMath64x64)",
                                  "value": "ABDKMath64x64"
                                },
                                "id": 270,
                                "name": "Identifier",
                                "src": "5448:13:0"
                              }
                            ],
                            "id": 271,
                            "name": "MemberAccess",
                            "src": "5448:18:0"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 257,
                              "type": "uint256",
                              "value": "_numerator"
                            },
                            "id": 272,
                            "name": "Identifier",
                            "src": "5467:10:0"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 265,
                              "type": "uint256",
                              "value": "_denominator"
                            },
                            "id": 273,
                            "name": "Identifier",
                            "src": "5479:12:0"
                          }
                        ],
                        "id": 274,
                        "name": "FunctionCall",
                        "src": "5448:44:0"
                      }
                    ],
                    "id": 275,
                    "name": "Return",
                    "src": "5441:51:0"
                  }
                ],
                "id": 276,
                "name": "Block",
                "src": "5293:206:0"
              }
            ],
            "id": 277,
            "name": "FunctionDefinition",
            "src": "5181:318:0"
          },
          {
            "attributes": {
              "name": "_oracleNotFinished",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_oracleId",
                      "scope": 291,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint64",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint64",
                          "type": "uint64"
                        },
                        "id": 278,
                        "name": "ElementaryTypeName",
                        "src": "5554:6:0"
                      }
                    ],
                    "id": 279,
                    "name": "VariableDeclaration",
                    "src": "5554:16:0"
                  }
                ],
                "id": 280,
                "name": "ParameterList",
                "src": "5553:18:0"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_07752f182bc07d784242893cf9e0df609e1c9fa69b6d0199490e4253b472b5ee",
                                  "typeString": "literal_string \"Oracle is finished.\""
                                }
                              ],
                              "overloadedDeclarations": [
                                4294967278,
                                4294967278
                              ],
                              "referencedDeclaration": 4294967278,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 281,
                            "name": "Identifier",
                            "src": "5582:7:0"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "!",
                              "prefix": true,
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "bool",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint64",
                                          "typeString": "uint64"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        210
                                      ],
                                      "referencedDeclaration": 210,
                                      "type": "function (uint64) view returns (bool)",
                                      "value": "isOracleFinished"
                                    },
                                    "id": 282,
                                    "name": "Identifier",
                                    "src": "5591:16:0"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 279,
                                      "type": "uint64",
                                      "value": "_oracleId"
                                    },
                                    "id": 283,
                                    "name": "Identifier",
                                    "src": "5608:9:0"
                                  }
                                ],
                                "id": 284,
                                "name": "FunctionCall",
                                "src": "5591:27:0"
                              }
                            ],
                            "id": 285,
                            "name": "UnaryOperation",
                            "src": "5590:28:0"
                          },
                          {
                            "attributes": {
                              "hexvalue": "4f7261636c652069732066696e69736865642e",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "string",
                              "type": "literal_string \"Oracle is finished.\"",
                              "value": "Oracle is finished."
                            },
                            "id": 286,
                            "name": "Literal",
                            "src": "5620:21:0"
                          }
                        ],
                        "id": 287,
                        "name": "FunctionCall",
                        "src": "5582:60:0"
                      }
                    ],
                    "id": 288,
                    "name": "ExpressionStatement",
                    "src": "5582:60:0"
                  },
                  {
                    "id": 289,
                    "name": "PlaceholderStatement",
                    "src": "5652:1:0"
                  }
                ],
                "id": 290,
                "name": "Block",
                "src": "5572:88:0"
              }
            ],
            "id": 291,
            "name": "ModifierDefinition",
            "src": "5526:134:0"
          }
        ],
        "id": 292,
        "name": "ContractDefinition",
        "src": "459:5203:0"
      }
    ],
    "id": 293,
    "name": "SourceUnit",
    "src": "46:5617:0"
  },
  "compiler": {
    "name": "solc",
    "version": "0.7.6+commit.7338295f.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.4.1",
  "updatedAt": "2021-06-09T23:19:49.927Z",
  "devdoc": {
    "author": "Victor Porton This allows anyone claim conditional tokens in order for him to transfer money from the future. See `docs/future-money.rst`.",
    "events": {
      "ReportedNumerator(uint64,uint256,uint256)": {
        "params": {
          "condition": "The conditional (customer addresses).",
          "numerator": "The relative score provided by the oracle.",
          "oracleId": "The oracle ID."
        }
      },
      "ReportedNumeratorsBatch(uint64,uint64[],uint256[])": {
        "params": {
          "conditions": "The conditionals (customer addresses).",
          "numerators": "The relative scores provided by the oracle.",
          "oracleId": "The oracle ID."
        }
      }
    },
    "kind": "dev",
    "methods": {
      "balanceOf(address,uint256)": {
        "details": "See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address."
      },
      "balanceOfBatch(address[],uint256[])": {
        "details": "See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length."
      },
      "changeOracleOwner(address,uint64)": {
        "params": {
          "_newOracleOwner": "New owner.",
          "_oracleId": "The oracle whose owner to change."
        }
      },
      "collateralOwing(address,uint256,uint64,uint256,address)": {
        "params": {
          "_collateralContractAddress": "The ERC-1155 collateral token contract.",
          "_collateralTokenId": "The ERC-1155 collateral token ID.",
          "_condition": "The condition (the original receiver of a conditional token).",
          "_oracleId": "From which oracle's \"account\" to withdraw.",
          "_user": "The user to which we may owe."
        }
      },
      "constructor": {
        "params": {
          "_uri": "Our ERC-1155 tokens description URI."
        }
      },
      "donate(address,uint256,uint64,uint256,address,address,bytes)": {
        "params": {
          "_amount": "The amount to donate.",
          "_collateralContractAddress": "The collateral ERC-1155 contract address.",
          "_collateralTokenId": "The collateral ERC-1155 token ID.",
          "_data": "Additional transaction data.",
          "_from": "From whom to take the donation.",
          "_oracleId": "The oracle ID to whose ecosystem to donate to.",
          "_to": "On whose account the donation amount is assigned."
        }
      },
      "finishOracle(uint64)": {
        "params": {
          "_oracleId": "The oracle ID. You should set grace period end time before calling this method."
        }
      },
      "gatherDeFiProfit(address,uint256,uint64,bytes)": {
        "params": {
          "_collateralContractAddress": "The collateral ERC-1155 contract address.",
          "_collateralTokenId": "The collateral ERC-1155 token ID.",
          "_data": "Additional transaction data.",
          "_oracleId": "The oracle ID to whose ecosystem to donate to."
        }
      },
      "gracePeriodEnd(uint64)": {
        "params": {
          "_oracleId": "For which oracle."
        }
      },
      "isApprovedForAll(address,address)": {
        "details": "See {IERC1155-isApprovedForAll}."
      },
      "isConditionalLocked(address,uint256)": {
        "params": {
          "_condition": "The condition (the original receiver of a conditional token).",
          "_user": "Querying if locked for this user."
        }
      },
      "isOracleFinished(uint64)": {
        "params": {
          "_oracleId": "The oracle ID."
        },
        "returns": {
          "_0": "`true` if it has finished."
        }
      },
      "onERC721Received(address,address,uint256,bytes)": {
        "details": "See {IERC721Receiver-onERC721Received}. Always returns `IERC721Receiver.onERC721Received.selector`."
      },
      "oracleOwner(uint64)": {
        "params": {
          "_oracleId": "The oracle ID."
        }
      },
      "payoutDenominator(uint64)": {
        "params": {
          "_oracleId": "The oracle ID. The result can't change if the oracle has finished."
        }
      },
      "payoutNumerator(uint64,uint256)": {
        "params": {
          "_condition": "The condition (the original receiver of a conditional token). The result can't change if the oracle has finished.",
          "_oracleId": "The oracle ID."
        }
      },
      "reportNumerator(uint64,uint256,uint256)": {
        "params": {
          "_condition": "The condition.",
          "_numerator": "The relative score of the condition. Note: We could make oracles easily verificable by a hash of all the data, but       - It may need allowing to set a numerator only once.       - It may be not necessary because future technology will allow to aggregate blockchains.",
          "_oracleId": "The oracle ID."
        }
      },
      "reportNumeratorsBatch(uint64,uint64[],uint256[])": {
        "params": {
          "_conditions": "The conditions.",
          "_numerators": "The relative scores of the condition.",
          "_oracleId": "The oracle ID."
        }
      },
      "setApprovalForAll(address,bool)": {
        "details": "See {IERC1155-setApprovalForAll}."
      },
      "supportsInterface(bytes4)": {
        "details": "See {IERC165-supportsInterface}. Time complexity O(1), guaranteed to always use less than 30 000 gas."
      },
      "totalSupply(uint256)": {
        "params": {
          "id": "Token ID."
        },
        "returns": {
          "_0": "Total supply."
        }
      },
      "uri(uint256)": {
        "details": "See {IERC1155MetadataURI-uri}. This implementation returns the same URI for *all* token types. It relies on the token type ID substitution mechanism https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP]. Clients calling this function must replace the `\\{id\\}` substring with the actual token type ID."
      },
      "withdrawCollateral(address,uint256,uint64,uint256,bytes)": {
        "params": {
          "_collateralContractAddress": "The ERC-1155 collateral token contract.",
          "_collateralTokenId": "The ERC-1155 collateral token ID.",
          "_condition": "The condition.",
          "_data": "Additional data. Notes: - It is made impossible to withdraw somebody's other collateral, as otherwise we can't mark non-active   accounts in grace period. - We can't transfer to somebody other than `msg.sender` because anybody can transfer   (needed for multi-level transfers). - After this function is called, it becomes impossible to transfer the corresponding conditional token   of `msg.sender` (to prevent its repeated withdrawal).",
          "_oracleId": "From which oracle's \"account\" to withdraw."
        }
      }
    },
    "title": "Bidding on Ethereum addresses",
    "version": 1
  },
  "userdoc": {
    "events": {
      "CollateralWithdrawn(address,uint256,uint64,address,uint256)": {
        "notice": "Emitted when collateral is withdrawn."
      },
      "ConditionCreated(address,address,uint256,bytes)": {
        "notice": "Emitted when an oracle owner is set."
      },
      "DonateCollateral(address,uint256,address,uint256,address,bytes)": {
        "notice": "Emitted when a collateral is donated."
      },
      "OracleCreated(address,uint64)": {
        "notice": "Emitted when an oracle is created."
      },
      "OracleFinished(uint64)": {
        "notice": "Emitted when an oracle is marked as having finished its work."
      },
      "OracleOwnerChanged(address,uint64)": {
        "notice": "Emitted when an oracle owner is set."
      },
      "ReportedNumerator(uint64,uint256,uint256)": {
        "notice": "A condition score was stored in the chain by an oracle."
      },
      "ReportedNumeratorsBatch(uint64,uint64[],uint256[])": {
        "notice": "Some condition scores were stored in the chain by an oracle."
      }
    },
    "kind": "user",
    "methods": {
      "changeOracleOwner(address,uint64)": {
        "notice": "Modify the owner of an oracle."
      },
      "collateralOwing(address,uint256,uint64,uint256,address)": {
        "notice": "Calculate how much collateral is owed to a user."
      },
      "constructor": {
        "notice": "Constructor."
      },
      "donate(address,uint256,uint64,uint256,address,address,bytes)": {
        "notice": "Donate funds in an ERC-1155 token. First, the collateral token need to be approved to be spent by this contract from the address `_from`. It also mints a token (with a different ID), that counts donations in that token."
      },
      "finishOracle(uint64)": {
        "notice": "Need to be called after all numerators were reported."
      },
      "gatherDeFiProfit(address,uint256,uint64,bytes)": {
        "notice": "Gather a DeFi profit of a token previous donated to this contact."
      },
      "gracePeriodEnd(uint64)": {
        "notice": "Retrieve the end of the grace period."
      },
      "isConditionalLocked(address,uint256)": {
        "notice": "Are transfers of a conditinal token locked? This is used to prevent its repeated withdrawal."
      },
      "isOracleFinished(uint64)": {
        "notice": "Check if an oracle has finished."
      },
      "oracleOwner(uint64)": {
        "notice": "Get the oracle owner."
      },
      "payoutDenominator(uint64)": {
        "notice": "Retrieve the last stored payout denominator (the sum of all numerators of the oracle)."
      },
      "payoutNumerator(uint64,uint256)": {
        "notice": "Retrieve the last stored payout numerator (relative score of a condition)."
      },
      "reportNumerator(uint64,uint256,uint256)": {
        "notice": "Called by the oracle owner for reporting results of conditions."
      },
      "reportNumeratorsBatch(uint64,uint64[],uint256[])": {
        "notice": "Called by the oracle owner for reporting results of several conditions."
      },
      "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": {
        "notice": "An ERC-1155 function. We disallow transfers of conditional tokens after redeem `_to` prevent \"gathering\" them before redeeming each oracle."
      },
      "safeTransferFrom(address,address,uint256,uint256,bytes)": {
        "notice": "An ERC-1155 function. We disallow transfers of conditional tokens after redeem `_to` prevent \"gathering\" them before redeeming each oracle."
      },
      "totalSupply(uint256)": {
        "notice": "Total supply of a token (conforms to `IERC1155Views`)."
      },
      "updateGracePeriodEnds(uint64,uint256)": {
        "notice": "Set the end time of the grace period. The first withdrawal can be done *only* during the grace period. The second withdrawal can be done after the end of the grace period and only if the first withdrawal was done. The intention of the grace period is to check which of users are active (\"alive\")."
      },
      "usersWithdrewInFirstRound(uint64)": {
        "notice": "Mapping (oracleId => amount user withdrew in first round) (see `docs/Calculations.md`)."
      },
      "withdrawCollateral(address,uint256,uint64,uint256,bytes)": {
        "notice": "Transfer to `msg.sender` the collateral ERC-1155 token. The amount transferred is proportional to the score of `_condition` by the oracle."
      }
    },
    "version": 1
  }
}