{
  "contractName": "StandardMarketWithPriceLogger",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "creator",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "startDate",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "marketMaker",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "withdrawFees",
      "outputs": [
        {
          "name": "fees",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "LONG",
      "outputs": [
        {
          "name": "",
          "type": "uint8"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "createdAtBlock",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "lastTradeDate",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "priceIntegral",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "netOutcomeTokensSold",
      "outputs": [
        {
          "name": "",
          "type": "int256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "masterCopy",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "outcomeTokenCost",
          "type": "uint256"
        }
      ],
      "name": "calcMarketFee",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "stage",
      "outputs": [
        {
          "name": "",
          "type": "uint8"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "endDate",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_funding",
          "type": "uint256"
        }
      ],
      "name": "fund",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "funding",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "fee",
      "outputs": [
        {
          "name": "",
          "type": "uint24"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "lastTradePrice",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "eventContract",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "FEE_RANGE",
      "outputs": [
        {
          "name": "",
          "type": "uint24"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "funding",
          "type": "uint256"
        }
      ],
      "name": "MarketFunding",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "MarketClosing",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "fees",
          "type": "uint256"
        }
      ],
      "name": "FeeWithdrawal",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "buyer",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "outcomeTokenIndex",
          "type": "uint8"
        },
        {
          "indexed": false,
          "name": "outcomeTokenCount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "name": "outcomeTokenCost",
          "type": "uint256"
        },
        {
          "indexed": false,
          "name": "marketFees",
          "type": "uint256"
        }
      ],
      "name": "OutcomeTokenPurchase",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "seller",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "outcomeTokenIndex",
          "type": "uint8"
        },
        {
          "indexed": false,
          "name": "outcomeTokenCount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "name": "outcomeTokenProfit",
          "type": "uint256"
        },
        {
          "indexed": false,
          "name": "marketFees",
          "type": "uint256"
        }
      ],
      "name": "OutcomeTokenSale",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "buyer",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "outcomeTokenIndex",
          "type": "uint8"
        },
        {
          "indexed": false,
          "name": "outcomeTokenCount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "name": "cost",
          "type": "uint256"
        }
      ],
      "name": "OutcomeTokenShortSale",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "transactor",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "outcomeTokenAmounts",
          "type": "int256[]"
        },
        {
          "indexed": false,
          "name": "outcomeTokenNetCost",
          "type": "int256"
        },
        {
          "indexed": false,
          "name": "marketFees",
          "type": "uint256"
        }
      ],
      "name": "OutcomeTokenTrade",
      "type": "event"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "outcomeTokenIndex",
          "type": "uint8"
        },
        {
          "name": "outcomeTokenCount",
          "type": "uint256"
        },
        {
          "name": "maxCost",
          "type": "uint256"
        }
      ],
      "name": "buy",
      "outputs": [
        {
          "name": "cost",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "outcomeTokenIndex",
          "type": "uint8"
        },
        {
          "name": "outcomeTokenCount",
          "type": "uint256"
        },
        {
          "name": "minProfit",
          "type": "uint256"
        }
      ],
      "name": "sell",
      "outputs": [
        {
          "name": "profit",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "outcomeTokenIndex",
          "type": "uint8"
        },
        {
          "name": "outcomeTokenCount",
          "type": "uint256"
        },
        {
          "name": "minProfit",
          "type": "uint256"
        }
      ],
      "name": "shortSell",
      "outputs": [
        {
          "name": "cost",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "outcomeTokenAmounts",
          "type": "int256[]"
        },
        {
          "name": "collateralLimit",
          "type": "int256"
        }
      ],
      "name": "trade",
      "outputs": [
        {
          "name": "netCost",
          "type": "int256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "close",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getAvgPrice",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.5.6+commit.b259423e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"creator\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"startDate\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"outcomeTokenAmounts\",\"type\":\"int256[]\"},{\"name\":\"collateralLimit\",\"type\":\"int256\"}],\"name\":\"trade\",\"outputs\":[{\"name\":\"netCost\",\"type\":\"int256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"marketMaker\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"outcomeTokenIndex\",\"type\":\"uint8\"},{\"name\":\"outcomeTokenCount\",\"type\":\"uint256\"},{\"name\":\"minProfit\",\"type\":\"uint256\"}],\"name\":\"shortSell\",\"outputs\":[{\"name\":\"cost\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"close\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"outcomeTokenIndex\",\"type\":\"uint8\"},{\"name\":\"outcomeTokenCount\",\"type\":\"uint256\"},{\"name\":\"minProfit\",\"type\":\"uint256\"}],\"name\":\"sell\",\"outputs\":[{\"name\":\"profit\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"withdrawFees\",\"outputs\":[{\"name\":\"fees\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"LONG\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"createdAtBlock\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"lastTradeDate\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"priceIntegral\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"netOutcomeTokensSold\",\"outputs\":[{\"name\":\"\",\"type\":\"int256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"masterCopy\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"outcomeTokenCost\",\"type\":\"uint256\"}],\"name\":\"calcMarketFee\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"stage\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"endDate\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_funding\",\"type\":\"uint256\"}],\"name\":\"fund\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"funding\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"fee\",\"outputs\":[{\"name\":\"\",\"type\":\"uint24\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"lastTradePrice\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"eventContract\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getAvgPrice\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"outcomeTokenIndex\",\"type\":\"uint8\"},{\"name\":\"outcomeTokenCount\",\"type\":\"uint256\"},{\"name\":\"maxCost\",\"type\":\"uint256\"}],\"name\":\"buy\",\"outputs\":[{\"name\":\"cost\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"FEE_RANGE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint24\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"funding\",\"type\":\"uint256\"}],\"name\":\"MarketFunding\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"MarketClosing\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"fees\",\"type\":\"uint256\"}],\"name\":\"FeeWithdrawal\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"outcomeTokenIndex\",\"type\":\"uint8\"},{\"indexed\":false,\"name\":\"outcomeTokenCount\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"outcomeTokenCost\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"marketFees\",\"type\":\"uint256\"}],\"name\":\"OutcomeTokenPurchase\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"outcomeTokenIndex\",\"type\":\"uint8\"},{\"indexed\":false,\"name\":\"outcomeTokenCount\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"outcomeTokenProfit\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"marketFees\",\"type\":\"uint256\"}],\"name\":\"OutcomeTokenSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"outcomeTokenIndex\",\"type\":\"uint8\"},{\"indexed\":false,\"name\":\"outcomeTokenCount\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"cost\",\"type\":\"uint256\"}],\"name\":\"OutcomeTokenShortSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"transactor\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"outcomeTokenAmounts\",\"type\":\"int256[]\"},{\"indexed\":false,\"name\":\"outcomeTokenNetCost\",\"type\":\"int256\"},{\"indexed\":false,\"name\":\"marketFees\",\"type\":\"uint256\"}],\"name\":\"OutcomeTokenTrade\",\"type\":\"event\"}],\"devdoc\":{\"methods\":{\"buy(uint8,uint256,uint256)\":{\"details\":\"Allows to buy outcome tokens from market maker\",\"params\":{\"maxCost\":\"The maximum cost in collateral tokens to pay for outcome tokens\",\"outcomeTokenCount\":\"Amount of outcome tokens to buy\",\"outcomeTokenIndex\":\"Index of the outcome token to buy\"},\"return\":\"Cost in collateral tokens\"},\"calcMarketFee(uint256)\":{\"details\":\"Calculates fee to be paid to market maker\",\"params\":{\"outcomeTokenCost\":\"Cost for buying outcome tokens\"},\"return\":\"Fee for trade\"},\"close()\":{\"details\":\"Allows market creator to close the markets by transferring all remaining outcome tokens to the creator\"},\"fund(uint256)\":{\"details\":\"Allows to fund the market with collateral tokens converting them into outcome tokens\",\"params\":{\"_funding\":\"Funding amount\"}},\"getAvgPrice()\":{\"details\":\"Calculates average price for long tokens based on price integral\",\"return\":\"Average price for long tokens over time\"},\"sell(uint8,uint256,uint256)\":{\"details\":\"Allows to sell outcome tokens to market maker\",\"params\":{\"minProfit\":\"The minimum profit in collateral tokens to earn for outcome tokens\",\"outcomeTokenCount\":\"Amount of outcome tokens to sell\",\"outcomeTokenIndex\":\"Index of the outcome token to sell\"},\"return\":\"Profit in collateral tokens\"},\"shortSell(uint8,uint256,uint256)\":{\"details\":\"Buys all outcomes, then sells all shares of selected outcome which were bought, keeping      shares of all other outcome tokens.\",\"params\":{\"minProfit\":\"The minimum profit in collateral tokens to earn for short sold outcome tokens\",\"outcomeTokenCount\":\"Amount of outcome tokens to short sell\",\"outcomeTokenIndex\":\"Index of the outcome token to short sell\"},\"return\":\"Cost to short sell outcome in collateral tokens\"},\"trade(int256[],int256)\":{\"details\":\"Allows to trade outcome tokens with market maker\",\"params\":{\"collateralLimit\":\"The maximum cost or minimum profit in collateral tokens\",\"outcomeTokenAmounts\":\"Amounts of outcome tokens to trade\"},\"return\":\"Cost/profit in collateral tokens\"},\"withdrawFees()\":{\"details\":\"Allows market creator to withdraw fees generated by trades\",\"return\":\"Fee amount\"}}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/alan/src/github.com/gnosis/pm-contracts/contracts/Markets/StandardMarketWithPriceLogger.sol\":\"StandardMarketWithPriceLogger\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/alan/src/github.com/gnosis/pm-contracts/contracts/Events/Event.sol\":{\"keccak256\":\"0xdcacfa25145426b5681ad7d8bafb3c117c92a37b7a0175d72a10b42f130fb8c1\",\"urls\":[\"bzzr://bd10fbdb82f0d50866442c9e95317b3176c8ee067def27d764529973fb36420a\"]},\"/home/alan/src/github.com/gnosis/pm-contracts/contracts/MarketMakers/MarketMaker.sol\":{\"keccak256\":\"0xa71f8ce92412033d0900d44c01f0702aefced87d860cf116c6a4d3efe86913cf\",\"urls\":[\"bzzr://63c5bf60b931bb032fcab23514a3db171b680b11d8c6c05ac8caa88752e3be41\"]},\"/home/alan/src/github.com/gnosis/pm-contracts/contracts/Markets/Market.sol\":{\"keccak256\":\"0x7bc1ebf0ea0f4cd9b6e9bfff6c6ac9088c253bcfca4e27f31e5845799f0278d8\",\"urls\":[\"bzzr://5e3f86d96ab269d284b34563501469d539cc436d62f070dd0abda2519d5e60c0\"]},\"/home/alan/src/github.com/gnosis/pm-contracts/contracts/Markets/StandardMarket.sol\":{\"keccak256\":\"0x527abf1b0997e2d38ce3c97f7ed647b9e913424828594287e2b068f2fb41ad4c\",\"urls\":[\"bzzr://16756e1b212fd40f21de50d99c8b7a5dde0acc2b0b047af8beead831a1274bd7\"]},\"/home/alan/src/github.com/gnosis/pm-contracts/contracts/Markets/StandardMarketWithPriceLogger.sol\":{\"keccak256\":\"0xac611de823e324e444a9749619091be1f81edfd67af6109581c2f8655251fb8e\",\"urls\":[\"bzzr://feb7902d610a1e499e0330780e0e9638d4372ad941e5d5896cb1730df791405a\"]},\"/home/alan/src/github.com/gnosis/pm-contracts/contracts/Oracles/Oracle.sol\":{\"keccak256\":\"0xf4d12f4a59c17e66dfa6791188f621a8914e2038a4e3f72d6fc9fb903ca8e18e\",\"urls\":[\"bzzr://a477ccd203e677cc904b1a4f8fcc85251c5b5e09c5c10eed27e01318584b16d1\"]},\"/home/alan/src/github.com/gnosis/pm-contracts/contracts/Tokens/OutcomeToken.sol\":{\"keccak256\":\"0x3d4c9ec14a60cf7577d366da5116e919a4331da8d6d993174f7d599f84ae74e0\",\"urls\":[\"bzzr://20f87450259a3af24ff1769faa9ab3b714d01921e9d8fa4efa75a0c277837a8a\"]},\"@gnosis.pm/util-contracts/contracts/Proxy.sol\":{\"keccak256\":\"0xeab0e83a9ec9e7f052c0455a11577061ec6d1994db08dae429abd6faaabf6555\",\"urls\":[\"bzzr://b2c1273d4ec30e2f9e768eea8c510f8493a7359b03e01923d93eea86b57ec145\"]},\"openzeppelin-solidity/contracts/drafts/SignedSafeMath.sol\":{\"keccak256\":\"0xb4b45cd5475c318722ac0f8d7e2b9e77fee6f4f36374c1110fe615d50fbc0650\",\"urls\":[\"bzzr://a90fb457269c8a03ec5b811c71acef08a2751a4d2019b0661328610f9357dae7\"]},\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x4ccf2d7b51873db1ccfd54ca2adae5eac3b184f9699911ed4490438419f1c690\",\"urls\":[\"bzzr://1604f5b6d6e916c154efd8c6720cda069e5ba32dfa0a9dedf2b42e5b02d07f89\"]},\"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x852793a3c2f86d336a683b30d688ec3dcfc57451af5a2bf5975cda3b7191a901\",\"urls\":[\"bzzr://07fb42206812a17c1f71e548cfa5cec6f9aa1ae0ca5df870718ca4aa9759d1a5\"]},\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x90e8c2521653bbb1768b05889c5760031e688d9cd361f167489b89215e201b95\",\"urls\":[\"bzzr://aa8b45b57edafc3d67bc5d916327ea16807fae33f753ca163ae0c4061b789766\"]}},\"version\":1}",
  "bytecode": "0x608060405234801561001057600080fd5b5061339b806100206000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c8063a157979c116100de578063cb4c86b711610097578063e274fd2411610071578063e274fd2414610602578063f01e66ec1461064c578063f6d956df1461066a578063fbde47f6146106c357610173565b8063cb4c86b71461059e578063ddca3f43146105bc578063df449cb8146105e457610173565b8063a157979c14610458578063a619486e1461049a578063b0011509146104e4578063c040e6b814610526578063c24a0f8b14610552578063ca1d209d1461057057610173565b806346280a801161013057806346280a8014610363578063476343ee146103bc578063561cce0a146103da57806359acb42c146103fe57806368b586d51461041c5780638b797a0c1461043a57610173565b806302d05d3f146101785780630b97bc86146101c257806315bd7611146101e05780631f21f9af146102b657806328c05d321461030057806343d726d614610359575b600080fd5b6101806106eb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101ca610711565b6040518082815260200191505060405180910390f35b6102a0600480360360408110156101f657600080fd5b810190808035906020019064010000000081111561021357600080fd5b82018360208201111561022557600080fd5b8035906020019184602083028401116401000000008311171561024757600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190929190505050610717565b6040518082815260200191505060405180910390f35b6102be61073b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103436004803603606081101561031657600080fd5b81019080803560ff1690602001909291908035906020019092919080359060200190929190505050610761565b6040518082815260200191505060405180910390f35b610361610787565b005b6103a66004803603606081101561037957600080fd5b81019080803560ff1690602001909291908035906020019092919080359060200190929190505050610798565b6040518082815260200191505060405180910390f35b6103c46107be565b6040518082815260200191505060405180910390f35b6103e2610b3f565b604051808260ff1660ff16815260200191505060405180910390f35b610406610b44565b6040518082815260200191505060405180910390f35b610424610b4a565b6040518082815260200191505060405180910390f35b610442610b50565b6040518082815260200191505060405180910390f35b6104846004803603602081101561046e57600080fd5b8101908080359060200190929190505050610b56565b6040518082815260200191505060405180910390f35b6104a2610b77565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610510600480360360208110156104fa57600080fd5b8101908080359060200190929190505050610b9c565b6040518082815260200191505060405180910390f35b61052e610bcf565b6040518082600281111561053e57fe5b60ff16815260200191505060405180910390f35b61055a610be2565b6040518082815260200191505060405180910390f35b61059c6004803603602081101561058657600080fd5b8101908080359060200190929190505050610be8565b005b6105a6611099565b6040518082815260200191505060405180910390f35b6105c461109f565b604051808262ffffff1662ffffff16815260200191505060405180910390f35b6105ec6110b4565b6040518082815260200191505060405180910390f35b61060a6110ba565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106546110e0565b6040518082815260200191505060405180910390f35b6106ad6004803603606081101561068057600080fd5b81019080803560ff1690602001909291908035906020019092919080359060200190929190505050611131565b6040518082815260200191505060405180910390f35b6106cb611157565b604051808262ffffff1662ffffff16815260200191505060405180910390f35b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b600061072161115e565b61072b8383611182565b9050610735611331565b92915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061076b61115e565b610776848484611429565b9050610780611331565b9392505050565b42600981905550610796611e33565b565b60006107a261115e565b6107ad8484846122e1565b90506107b7611331565b9392505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461081a57600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2016bd46040518163ffffffff1660e01b815260040160206040518083038186803b15801561088257600080fd5b505afa158015610896573d6000803e3d6000fd5b505050506040513d60208110156108ac57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561093957600080fd5b505afa15801561094d573d6000803e3d6000fd5b505050506040513d602081101561096357600080fd5b81019080805190602001909291905050509050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2016bd46040518163ffffffff1660e01b815260040160206040518083038186803b1580156109de57600080fd5b505afa1580156109f2573d6000803e3d6000fd5b505050506040513d6020811015610a0857600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610ac157600080fd5b505af1158015610ad5573d6000803e3d6000fd5b505050506040513d6020811015610aeb57600080fd5b8101908080519060200190929190505050610b0557600080fd5b7f706d7f48c702007c2fb0881cea5759732e64f52faee427d5ab030787cfb7d787816040518082815260200191505060405180910390a190565b600181565b60025481565b600a5481565b600c5481565b60068181548110610b6357fe5b906000526020600020016000915090505481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000620f424062ffffff16600460149054906101000a900462ffffff1662ffffff16830281610bc757fe5b049050919050565b600760009054906101000a900460ff1681565b60095481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c4257600080fd5b6000806002811115610c5057fe5b600760009054906101000a900460ff166002811115610c6b57fe5b14610c7557600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2016bd46040518163ffffffff1660e01b815260040160206040518083038186803b158015610cdd57600080fd5b505afa158015610cf1573d6000803e3d6000fd5b505050506040513d6020811015610d0757600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015610dd257600080fd5b505af1158015610de6573d6000803e3d6000fd5b505050506040513d6020811015610dfc57600080fd5b81019080805190602001909291905050508015610f9b5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2016bd46040518163ffffffff1660e01b815260040160206040518083038186803b158015610e7c57600080fd5b505afa158015610e90573d6000803e3d6000fd5b505050506040513d6020811015610ea657600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610f5f57600080fd5b505af1158015610f73573d6000803e3d6000fd5b505050506040513d6020811015610f8957600080fd5b81019080805190602001909291905050505b610fa457600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166328da850b836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561101957600080fd5b505af115801561102d573d6000803e3d6000fd5b50505050816005819055506001600760006101000a81548160ff0219169083600281111561105757fe5b02179055507f8a2fe22ce705a4ac9c189969cef327affbdc477afdae4ae274c2f8ad021f91636005546040518082815260200191505060405180910390a15050565b60055481565b600460149054906101000a900462ffffff1681565b600b5481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060095411156111115760085460095403600a5460095403600b5402600c54018161110957fe5b04905061112e565b6008544203600a544203600b5402600c54018161112a57fe5b0490505b90565b600061113b61115e565b61114684848461250b565b9050611150611331565b9392505050565b620f424081565b600854421061118057600a544203600b5402600c600082825401925050819055505b565b6000600180600281111561119257fe5b600760009054906101000a900460ff1660028111156111ad57fe5b146111b757600080fd5b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637dc8f0866040518163ffffffff1660e01b815260040160206040518083038186803b15801561122157600080fd5b505afa158015611235573d6000803e3d6000fd5b505050506040513d602081101561124b57600080fd5b810190808051906020019092919050505090508060ff1685511461126e57600080fd5b60008061127c838888612723565b8093508194508297505050503373ffffffffffffffffffffffffffffffffffffffff167fa66fcf59f5b6e4cb46e5745fd40c7dfac01b0a81b2b5e55038d9ec959adf7eaa8884846040518080602001848152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156113125780820151818401526020810190506112f7565b5050505090500194505050505060405180910390a25050505092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d812d3463060016040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018260ff1660ff1681526020019250505060206040518083038186803b1580156113df57600080fd5b505afa1580156113f3573d6000803e3d6000fd5b505050506040513d602081101561140957600080fd5b8101908080519060200190929190505050600b8190555042600a81905550565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2016bd46040518163ffffffff1660e01b815260040160206040518083038186803b15801561149357600080fd5b505afa1580156114a7573d6000803e3d6000fd5b505050506040513d60208110156114bd57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff166323b872dd3330866040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561158857600080fd5b505af115801561159c573d6000803e3d6000fd5b505050506040513d60208110156115b257600080fd5b810190808051906020019092919050505080156117515750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2016bd46040518163ffffffff1660e01b815260040160206040518083038186803b15801561163257600080fd5b505afa158015611646573d6000803e3d6000fd5b505050506040513d602081101561165c57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561171557600080fd5b505af1158015611729573d6000803e3d6000fd5b505050506040513d602081101561173f57600080fd5b81019080805190602001909291905050505b61175a57600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166328da850b846040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156117cf57600080fd5b505af11580156117e3573d6000803e3d6000fd5b50505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638abe59ea856040518263ffffffff1660e01b8152600401808260ff16815260200191505060206040518083038186803b15801561185d57600080fd5b505afa158015611871573d6000803e3d6000fd5b505050506040513d602081101561188757600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663095ea7b330856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561191e57600080fd5b505af1158015611932573d6000803e3d6000fd5b505050506040513d602081101561194857600080fd5b81019080805190602001909291905050505060003073ffffffffffffffffffffffffffffffffffffffff166346280a808686866040518463ffffffff1660e01b8152600401808460ff1660ff1681526020018381526020018281526020019350505050602060405180830381600087803b1580156119c557600080fd5b505af11580156119d9573d6000803e3d6000fd5b505050506040513d60208110156119ef57600080fd5b8101908080519060200190929190505050905080840391506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637dc8f0866040518163ffffffff1660e01b815260040160206040518083038186803b158015611a7157600080fd5b505afa158015611a85573d6000803e3d6000fd5b505050506040513d6020811015611a9b57600080fd5b8101908080519060200190929190505050905060008090505b8160ff168160ff161015611c58578660ff168160ff1614611c4b57600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638abe59ea826040518263ffffffff1660e01b8152600401808260ff16815260200191505060206040518083038186803b158015611b4557600080fd5b505afa158015611b59573d6000803e3d6000fd5b505050506040513d6020811015611b6f57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33886040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611c0657600080fd5b505af1158015611c1a573d6000803e3d6000fd5b505050506040513d6020811015611c3057600080fd5b8101908080519060200190929190505050611c4a57600080fd5b5b8080600101915050611ab4565b50600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2016bd46040518163ffffffff1660e01b815260040160206040518083038186803b158015611cc157600080fd5b505afa158015611cd5573d6000803e3d6000fd5b505050506040513d6020811015611ceb57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611d8257600080fd5b505af1158015611d96573d6000803e3d6000fd5b505050506040513d6020811015611dac57600080fd5b8101908080519060200190929190505050611dc657600080fd5b3373ffffffffffffffffffffffffffffffffffffffff167f1dbdc4ff4d51949738d56e120b2be4edecc55d8d2150f1616ec5802abaae3f88878786604051808460ff1660ff168152602001838152602001828152602001935050505060405180910390a250509392505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e8d57600080fd5b6001806002811115611e9b57fe5b600760009054906101000a900460ff166002811115611eb657fe5b14611ec057600080fd5b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637dc8f0866040518163ffffffff1660e01b815260040160206040518083038186803b158015611f2a57600080fd5b505afa158015611f3e573d6000803e3d6000fd5b505050506040513d6020811015611f5457600080fd5b8101908080519060200190929190505050905060008090505b8160ff168160ff16101561228c57600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638abe59ea826040518263ffffffff1660e01b8152600401808260ff16815260200191505060206040518083038186803b158015611ff157600080fd5b505afa158015612005573d6000803e3d6000fd5b505050506040513d602081101561201b57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638abe59ea856040518263ffffffff1660e01b8152600401808260ff16815260200191505060206040518083038186803b1580156120e057600080fd5b505afa1580156120f4573d6000803e3d6000fd5b505050506040513d602081101561210a57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561219757600080fd5b505afa1580156121ab573d6000803e3d6000fd5b505050506040513d60208110156121c157600080fd5b81019080805190602001909291905050506040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561223b57600080fd5b505af115801561224f573d6000803e3d6000fd5b505050506040513d602081101561226557600080fd5b810190808051906020019092919050505061227f57600080fd5b8080600101915050611f6d565b506002600760006101000a81548160ff021916908360028111156122ac57fe5b02179055507fe7d85885f81486e8f4c99e50e056745493861b8b5d4f973dcf0c3c0f74a25e0760405160405180910390a15050565b600060018060028111156122f157fe5b600760009054906101000a900460ff16600281111561230c57fe5b1461231657600080fd5b6000846000031315801561232d5750600083600003125b61233657600080fd5b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637dc8f0866040518163ffffffff1660e01b815260040160206040518083038186803b1580156123a057600080fd5b505afa1580156123b4573d6000803e3d6000fd5b505050506040513d60208110156123ca57600080fd5b8101908080519060200190929190505050905060008660ff16101580156123f657508060ff168660ff16105b6123ff57600080fd5b60608160ff166040519080825280602002602001820160405280156124335781602001602082028038833980820191505090505b50905085600003818860ff168151811061244957fe5b602002602001018181525050600080600061246885858a600003612723565b92509250925060008313158015612480575060008213155b61248957600080fd5b8260000396503373ffffffffffffffffffffffffffffffffffffffff167fab24ef3371efb2e0e3b02955e33b8ef03c14523e71f3bda87878a2386cc17b698b8b8560000385604051808560ff1660ff16815260200184815260200183815260200182815260200194505050505060405180910390a25050505050509392505050565b6000600180600281111561251b57fe5b600760009054906101000a900460ff16600281111561253657fe5b1461254057600080fd5b600084121580156125515750600083135b61255a57600080fd5b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637dc8f0866040518163ffffffff1660e01b815260040160206040518083038186803b1580156125c457600080fd5b505afa1580156125d8573d6000803e3d6000fd5b505050506040513d60208110156125ee57600080fd5b8101908080519060200190929190505050905060008660ff161015801561261a57508060ff168660ff16105b61262357600080fd5b60608160ff166040519080825280602002602001820160405280156126575781602001602082028038833980820191505090505b50905085818860ff168151811061266a57fe5b602002602001018181525050600080600061268685858a612723565b9250925092506000831215801561269e575060008212155b6126a757600080fd5b8296503373ffffffffffffffffffffffffffffffffffffffff167f7caea4a19892ce49b4daa2014d5599eed561dcd16ffabfac851a9737217ae4108b8b8585604051808560ff1660ff16815260200184815260200183815260200182815260200194505050505060405180910390a25050505050509392505050565b6000806000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166338bf045230876040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019060200280838360005b838110156127ec5780820151818401526020810190506127d1565b50505050905001935050505060206040518083038186803b15801561281057600080fd5b505afa158015612824573d6000803e3d6000fd5b505050506040513d602081101561283a57600080fd5b8101908080519060200190929190505050915060008212156128695761286282600003610b9c565b9050612875565b61287282610b9c565b90505b600081121561288357600080fd5b61289681836132c090919063ffffffff16565b9250600084141580156128a95750838313155b806128b45750600084145b6128bd57600080fd5b6000821315612c8357600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2016bd46040518163ffffffff1660e01b815260040160206040518083038186803b15801561292e57600080fd5b505afa158015612942573d6000803e3d6000fd5b505050506040513d602081101561295857600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff166323b872dd3330866040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015612a2357600080fd5b505af1158015612a37573d6000803e3d6000fd5b505050506040513d6020811015612a4d57600080fd5b81019080805190602001909291905050508015612bec5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2016bd46040518163ffffffff1660e01b815260040160206040518083038186803b158015612acd57600080fd5b505afa158015612ae1573d6000803e3d6000fd5b505050506040513d6020811015612af757600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015612bb057600080fd5b505af1158015612bc4573d6000803e3d6000fd5b505050506040513d6020811015612bda57600080fd5b81019080805190602001909291905050505b612bf557600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166328da850b836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015612c6a57600080fd5b505af1158015612c7e573d6000803e3d6000fd5b505050505b60008090505b8660ff168160ff1610156130a2576000868260ff1681518110612ca857fe5b602002602001015114613095576000868260ff1681518110612cc657fe5b60200260200101511215612ea157600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638abe59ea826040518263ffffffff1660e01b8152600401808260ff16815260200191505060206040518083038186803b158015612d4a57600080fd5b505afa158015612d5e573d6000803e3d6000fd5b505050506040513d6020811015612d7457600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff166323b872dd3330898560ff1681518110612db157fe5b60200260200101516000036040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015612e5857600080fd5b505af1158015612e6c573d6000803e3d6000fd5b505050506040513d6020811015612e8257600080fd5b8101908080519060200190929190505050612e9c57600080fd5b613033565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638abe59ea826040518263ffffffff1660e01b8152600401808260ff16815260200191505060206040518083038186803b158015612f1757600080fd5b505afa158015612f2b573d6000803e3d6000fd5b505050506040513d6020811015612f4157600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33888460ff1681518110612f7d57fe5b60200260200101516040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015612fee57600080fd5b505af1158015613002573d6000803e3d6000fd5b505050506040513d602081101561301857600080fd5b810190808051906020019092919050505061303257600080fd5b5b613076868260ff168151811061304557fe5b602002602001015160068360ff168154811061305d57fe5b90600052602060002001546132c090919063ffffffff16565b60068260ff168154811061308657fe5b90600052602060002001819055505b8080600101915050612c89565b5060008212156132b757600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636fb1edcd836000036040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561312457600080fd5b505af1158015613138573d6000803e3d6000fd5b5050505060008312156132b657600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2016bd46040518163ffffffff1660e01b815260040160206040518083038186803b1580156131ad57600080fd5b505afa1580156131c1573d6000803e3d6000fd5b505050506040513d60208110156131d757600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33856000036040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561327157600080fd5b505af1158015613285573d6000803e3d6000fd5b505050506040513d602081101561329b57600080fd5b81019080805190602001909291905050506132b557600080fd5b5b5b93509350939050565b6000808284019050600083121580156132d95750838112155b806132ef57506000831280156132ee57508381125b5b613344576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061334f6021913960400191505060405180910390fd5b809150509291505056fe5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f77a165627a7a72305820cc41c7aa7078498dec57dd5f4d1ac1adfbaa849e215338cf3abab94533333f520029",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101735760003560e01c8063a157979c116100de578063cb4c86b711610097578063e274fd2411610071578063e274fd2414610602578063f01e66ec1461064c578063f6d956df1461066a578063fbde47f6146106c357610173565b8063cb4c86b71461059e578063ddca3f43146105bc578063df449cb8146105e457610173565b8063a157979c14610458578063a619486e1461049a578063b0011509146104e4578063c040e6b814610526578063c24a0f8b14610552578063ca1d209d1461057057610173565b806346280a801161013057806346280a8014610363578063476343ee146103bc578063561cce0a146103da57806359acb42c146103fe57806368b586d51461041c5780638b797a0c1461043a57610173565b806302d05d3f146101785780630b97bc86146101c257806315bd7611146101e05780631f21f9af146102b657806328c05d321461030057806343d726d614610359575b600080fd5b6101806106eb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101ca610711565b6040518082815260200191505060405180910390f35b6102a0600480360360408110156101f657600080fd5b810190808035906020019064010000000081111561021357600080fd5b82018360208201111561022557600080fd5b8035906020019184602083028401116401000000008311171561024757600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190929190505050610717565b6040518082815260200191505060405180910390f35b6102be61073b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103436004803603606081101561031657600080fd5b81019080803560ff1690602001909291908035906020019092919080359060200190929190505050610761565b6040518082815260200191505060405180910390f35b610361610787565b005b6103a66004803603606081101561037957600080fd5b81019080803560ff1690602001909291908035906020019092919080359060200190929190505050610798565b6040518082815260200191505060405180910390f35b6103c46107be565b6040518082815260200191505060405180910390f35b6103e2610b3f565b604051808260ff1660ff16815260200191505060405180910390f35b610406610b44565b6040518082815260200191505060405180910390f35b610424610b4a565b6040518082815260200191505060405180910390f35b610442610b50565b6040518082815260200191505060405180910390f35b6104846004803603602081101561046e57600080fd5b8101908080359060200190929190505050610b56565b6040518082815260200191505060405180910390f35b6104a2610b77565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610510600480360360208110156104fa57600080fd5b8101908080359060200190929190505050610b9c565b6040518082815260200191505060405180910390f35b61052e610bcf565b6040518082600281111561053e57fe5b60ff16815260200191505060405180910390f35b61055a610be2565b6040518082815260200191505060405180910390f35b61059c6004803603602081101561058657600080fd5b8101908080359060200190929190505050610be8565b005b6105a6611099565b6040518082815260200191505060405180910390f35b6105c461109f565b604051808262ffffff1662ffffff16815260200191505060405180910390f35b6105ec6110b4565b6040518082815260200191505060405180910390f35b61060a6110ba565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106546110e0565b6040518082815260200191505060405180910390f35b6106ad6004803603606081101561068057600080fd5b81019080803560ff1690602001909291908035906020019092919080359060200190929190505050611131565b6040518082815260200191505060405180910390f35b6106cb611157565b604051808262ffffff1662ffffff16815260200191505060405180910390f35b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b600061072161115e565b61072b8383611182565b9050610735611331565b92915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061076b61115e565b610776848484611429565b9050610780611331565b9392505050565b42600981905550610796611e33565b565b60006107a261115e565b6107ad8484846122e1565b90506107b7611331565b9392505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461081a57600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2016bd46040518163ffffffff1660e01b815260040160206040518083038186803b15801561088257600080fd5b505afa158015610896573d6000803e3d6000fd5b505050506040513d60208110156108ac57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561093957600080fd5b505afa15801561094d573d6000803e3d6000fd5b505050506040513d602081101561096357600080fd5b81019080805190602001909291905050509050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2016bd46040518163ffffffff1660e01b815260040160206040518083038186803b1580156109de57600080fd5b505afa1580156109f2573d6000803e3d6000fd5b505050506040513d6020811015610a0857600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610ac157600080fd5b505af1158015610ad5573d6000803e3d6000fd5b505050506040513d6020811015610aeb57600080fd5b8101908080519060200190929190505050610b0557600080fd5b7f706d7f48c702007c2fb0881cea5759732e64f52faee427d5ab030787cfb7d787816040518082815260200191505060405180910390a190565b600181565b60025481565b600a5481565b600c5481565b60068181548110610b6357fe5b906000526020600020016000915090505481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000620f424062ffffff16600460149054906101000a900462ffffff1662ffffff16830281610bc757fe5b049050919050565b600760009054906101000a900460ff1681565b60095481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c4257600080fd5b6000806002811115610c5057fe5b600760009054906101000a900460ff166002811115610c6b57fe5b14610c7557600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2016bd46040518163ffffffff1660e01b815260040160206040518083038186803b158015610cdd57600080fd5b505afa158015610cf1573d6000803e3d6000fd5b505050506040513d6020811015610d0757600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015610dd257600080fd5b505af1158015610de6573d6000803e3d6000fd5b505050506040513d6020811015610dfc57600080fd5b81019080805190602001909291905050508015610f9b5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2016bd46040518163ffffffff1660e01b815260040160206040518083038186803b158015610e7c57600080fd5b505afa158015610e90573d6000803e3d6000fd5b505050506040513d6020811015610ea657600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610f5f57600080fd5b505af1158015610f73573d6000803e3d6000fd5b505050506040513d6020811015610f8957600080fd5b81019080805190602001909291905050505b610fa457600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166328da850b836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561101957600080fd5b505af115801561102d573d6000803e3d6000fd5b50505050816005819055506001600760006101000a81548160ff0219169083600281111561105757fe5b02179055507f8a2fe22ce705a4ac9c189969cef327affbdc477afdae4ae274c2f8ad021f91636005546040518082815260200191505060405180910390a15050565b60055481565b600460149054906101000a900462ffffff1681565b600b5481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060095411156111115760085460095403600a5460095403600b5402600c54018161110957fe5b04905061112e565b6008544203600a544203600b5402600c54018161112a57fe5b0490505b90565b600061113b61115e565b61114684848461250b565b9050611150611331565b9392505050565b620f424081565b600854421061118057600a544203600b5402600c600082825401925050819055505b565b6000600180600281111561119257fe5b600760009054906101000a900460ff1660028111156111ad57fe5b146111b757600080fd5b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637dc8f0866040518163ffffffff1660e01b815260040160206040518083038186803b15801561122157600080fd5b505afa158015611235573d6000803e3d6000fd5b505050506040513d602081101561124b57600080fd5b810190808051906020019092919050505090508060ff1685511461126e57600080fd5b60008061127c838888612723565b8093508194508297505050503373ffffffffffffffffffffffffffffffffffffffff167fa66fcf59f5b6e4cb46e5745fd40c7dfac01b0a81b2b5e55038d9ec959adf7eaa8884846040518080602001848152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156113125780820151818401526020810190506112f7565b5050505090500194505050505060405180910390a25050505092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d812d3463060016040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018260ff1660ff1681526020019250505060206040518083038186803b1580156113df57600080fd5b505afa1580156113f3573d6000803e3d6000fd5b505050506040513d602081101561140957600080fd5b8101908080519060200190929190505050600b8190555042600a81905550565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2016bd46040518163ffffffff1660e01b815260040160206040518083038186803b15801561149357600080fd5b505afa1580156114a7573d6000803e3d6000fd5b505050506040513d60208110156114bd57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff166323b872dd3330866040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561158857600080fd5b505af115801561159c573d6000803e3d6000fd5b505050506040513d60208110156115b257600080fd5b810190808051906020019092919050505080156117515750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2016bd46040518163ffffffff1660e01b815260040160206040518083038186803b15801561163257600080fd5b505afa158015611646573d6000803e3d6000fd5b505050506040513d602081101561165c57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561171557600080fd5b505af1158015611729573d6000803e3d6000fd5b505050506040513d602081101561173f57600080fd5b81019080805190602001909291905050505b61175a57600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166328da850b846040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156117cf57600080fd5b505af11580156117e3573d6000803e3d6000fd5b50505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638abe59ea856040518263ffffffff1660e01b8152600401808260ff16815260200191505060206040518083038186803b15801561185d57600080fd5b505afa158015611871573d6000803e3d6000fd5b505050506040513d602081101561188757600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663095ea7b330856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561191e57600080fd5b505af1158015611932573d6000803e3d6000fd5b505050506040513d602081101561194857600080fd5b81019080805190602001909291905050505060003073ffffffffffffffffffffffffffffffffffffffff166346280a808686866040518463ffffffff1660e01b8152600401808460ff1660ff1681526020018381526020018281526020019350505050602060405180830381600087803b1580156119c557600080fd5b505af11580156119d9573d6000803e3d6000fd5b505050506040513d60208110156119ef57600080fd5b8101908080519060200190929190505050905080840391506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637dc8f0866040518163ffffffff1660e01b815260040160206040518083038186803b158015611a7157600080fd5b505afa158015611a85573d6000803e3d6000fd5b505050506040513d6020811015611a9b57600080fd5b8101908080519060200190929190505050905060008090505b8160ff168160ff161015611c58578660ff168160ff1614611c4b57600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638abe59ea826040518263ffffffff1660e01b8152600401808260ff16815260200191505060206040518083038186803b158015611b4557600080fd5b505afa158015611b59573d6000803e3d6000fd5b505050506040513d6020811015611b6f57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33886040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611c0657600080fd5b505af1158015611c1a573d6000803e3d6000fd5b505050506040513d6020811015611c3057600080fd5b8101908080519060200190929190505050611c4a57600080fd5b5b8080600101915050611ab4565b50600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2016bd46040518163ffffffff1660e01b815260040160206040518083038186803b158015611cc157600080fd5b505afa158015611cd5573d6000803e3d6000fd5b505050506040513d6020811015611ceb57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611d8257600080fd5b505af1158015611d96573d6000803e3d6000fd5b505050506040513d6020811015611dac57600080fd5b8101908080519060200190929190505050611dc657600080fd5b3373ffffffffffffffffffffffffffffffffffffffff167f1dbdc4ff4d51949738d56e120b2be4edecc55d8d2150f1616ec5802abaae3f88878786604051808460ff1660ff168152602001838152602001828152602001935050505060405180910390a250509392505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e8d57600080fd5b6001806002811115611e9b57fe5b600760009054906101000a900460ff166002811115611eb657fe5b14611ec057600080fd5b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637dc8f0866040518163ffffffff1660e01b815260040160206040518083038186803b158015611f2a57600080fd5b505afa158015611f3e573d6000803e3d6000fd5b505050506040513d6020811015611f5457600080fd5b8101908080519060200190929190505050905060008090505b8160ff168160ff16101561228c57600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638abe59ea826040518263ffffffff1660e01b8152600401808260ff16815260200191505060206040518083038186803b158015611ff157600080fd5b505afa158015612005573d6000803e3d6000fd5b505050506040513d602081101561201b57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638abe59ea856040518263ffffffff1660e01b8152600401808260ff16815260200191505060206040518083038186803b1580156120e057600080fd5b505afa1580156120f4573d6000803e3d6000fd5b505050506040513d602081101561210a57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561219757600080fd5b505afa1580156121ab573d6000803e3d6000fd5b505050506040513d60208110156121c157600080fd5b81019080805190602001909291905050506040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561223b57600080fd5b505af115801561224f573d6000803e3d6000fd5b505050506040513d602081101561226557600080fd5b810190808051906020019092919050505061227f57600080fd5b8080600101915050611f6d565b506002600760006101000a81548160ff021916908360028111156122ac57fe5b02179055507fe7d85885f81486e8f4c99e50e056745493861b8b5d4f973dcf0c3c0f74a25e0760405160405180910390a15050565b600060018060028111156122f157fe5b600760009054906101000a900460ff16600281111561230c57fe5b1461231657600080fd5b6000846000031315801561232d5750600083600003125b61233657600080fd5b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637dc8f0866040518163ffffffff1660e01b815260040160206040518083038186803b1580156123a057600080fd5b505afa1580156123b4573d6000803e3d6000fd5b505050506040513d60208110156123ca57600080fd5b8101908080519060200190929190505050905060008660ff16101580156123f657508060ff168660ff16105b6123ff57600080fd5b60608160ff166040519080825280602002602001820160405280156124335781602001602082028038833980820191505090505b50905085600003818860ff168151811061244957fe5b602002602001018181525050600080600061246885858a600003612723565b92509250925060008313158015612480575060008213155b61248957600080fd5b8260000396503373ffffffffffffffffffffffffffffffffffffffff167fab24ef3371efb2e0e3b02955e33b8ef03c14523e71f3bda87878a2386cc17b698b8b8560000385604051808560ff1660ff16815260200184815260200183815260200182815260200194505050505060405180910390a25050505050509392505050565b6000600180600281111561251b57fe5b600760009054906101000a900460ff16600281111561253657fe5b1461254057600080fd5b600084121580156125515750600083135b61255a57600080fd5b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637dc8f0866040518163ffffffff1660e01b815260040160206040518083038186803b1580156125c457600080fd5b505afa1580156125d8573d6000803e3d6000fd5b505050506040513d60208110156125ee57600080fd5b8101908080519060200190929190505050905060008660ff161015801561261a57508060ff168660ff16105b61262357600080fd5b60608160ff166040519080825280602002602001820160405280156126575781602001602082028038833980820191505090505b50905085818860ff168151811061266a57fe5b602002602001018181525050600080600061268685858a612723565b9250925092506000831215801561269e575060008212155b6126a757600080fd5b8296503373ffffffffffffffffffffffffffffffffffffffff167f7caea4a19892ce49b4daa2014d5599eed561dcd16ffabfac851a9737217ae4108b8b8585604051808560ff1660ff16815260200184815260200183815260200182815260200194505050505060405180910390a25050505050509392505050565b6000806000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166338bf045230876040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019060200280838360005b838110156127ec5780820151818401526020810190506127d1565b50505050905001935050505060206040518083038186803b15801561281057600080fd5b505afa158015612824573d6000803e3d6000fd5b505050506040513d602081101561283a57600080fd5b8101908080519060200190929190505050915060008212156128695761286282600003610b9c565b9050612875565b61287282610b9c565b90505b600081121561288357600080fd5b61289681836132c090919063ffffffff16565b9250600084141580156128a95750838313155b806128b45750600084145b6128bd57600080fd5b6000821315612c8357600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2016bd46040518163ffffffff1660e01b815260040160206040518083038186803b15801561292e57600080fd5b505afa158015612942573d6000803e3d6000fd5b505050506040513d602081101561295857600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff166323b872dd3330866040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015612a2357600080fd5b505af1158015612a37573d6000803e3d6000fd5b505050506040513d6020811015612a4d57600080fd5b81019080805190602001909291905050508015612bec5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2016bd46040518163ffffffff1660e01b815260040160206040518083038186803b158015612acd57600080fd5b505afa158015612ae1573d6000803e3d6000fd5b505050506040513d6020811015612af757600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015612bb057600080fd5b505af1158015612bc4573d6000803e3d6000fd5b505050506040513d6020811015612bda57600080fd5b81019080805190602001909291905050505b612bf557600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166328da850b836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015612c6a57600080fd5b505af1158015612c7e573d6000803e3d6000fd5b505050505b60008090505b8660ff168160ff1610156130a2576000868260ff1681518110612ca857fe5b602002602001015114613095576000868260ff1681518110612cc657fe5b60200260200101511215612ea157600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638abe59ea826040518263ffffffff1660e01b8152600401808260ff16815260200191505060206040518083038186803b158015612d4a57600080fd5b505afa158015612d5e573d6000803e3d6000fd5b505050506040513d6020811015612d7457600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff166323b872dd3330898560ff1681518110612db157fe5b60200260200101516000036040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015612e5857600080fd5b505af1158015612e6c573d6000803e3d6000fd5b505050506040513d6020811015612e8257600080fd5b8101908080519060200190929190505050612e9c57600080fd5b613033565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638abe59ea826040518263ffffffff1660e01b8152600401808260ff16815260200191505060206040518083038186803b158015612f1757600080fd5b505afa158015612f2b573d6000803e3d6000fd5b505050506040513d6020811015612f4157600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33888460ff1681518110612f7d57fe5b60200260200101516040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015612fee57600080fd5b505af1158015613002573d6000803e3d6000fd5b505050506040513d602081101561301857600080fd5b810190808051906020019092919050505061303257600080fd5b5b613076868260ff168151811061304557fe5b602002602001015160068360ff168154811061305d57fe5b90600052602060002001546132c090919063ffffffff16565b60068260ff168154811061308657fe5b90600052602060002001819055505b8080600101915050612c89565b5060008212156132b757600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636fb1edcd836000036040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561312457600080fd5b505af1158015613138573d6000803e3d6000fd5b5050505060008312156132b657600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2016bd46040518163ffffffff1660e01b815260040160206040518083038186803b1580156131ad57600080fd5b505afa1580156131c1573d6000803e3d6000fd5b505050506040513d60208110156131d757600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33856000036040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561327157600080fd5b505af1158015613285573d6000803e3d6000fd5b505050506040513d602081101561329b57600080fd5b81019080805190602001909291905050506132b557600080fd5b5b5b93509350939050565b6000808284019050600083121580156132d95750838112155b806132ef57506000831280156132ee57508381125b5b613344576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061334f6021913960400191505060405180910390fd5b809150509291505056fe5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f77a165627a7a72305820cc41c7aa7078498dec57dd5f4d1ac1adfbaa849e215338cf3abab94533333f520029",
  "sourceMap": "1470:3952:11:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1470:3952:11;;;;;;;",
  "deployedSourceMap": "1470:3952:11:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1470:3952:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;873:22:8;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;261:21:11;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3795:246;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3795:246:11;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;3795:246:11;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3795:246:11;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;3795:246:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;3795:246:11;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;965:30:8;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3251:270:11;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3251:270:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4164:89;;;:::i;:::-;;2518:264;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2518:264:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2958:302:9;;;:::i;:::-;;;;;;;;;;;;;;;;;;;193:30:11;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;901:26:8;;;:::i;:::-;;;;;;;;;;;;;;;;;;;313:25:11;;;:::i;:::-;;;;;;;;;;;;;;;;;;;376;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1049:33:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1049:33:8;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;205:25:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;10867:159:9;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10867:159:9;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1088:19:8;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;288::11;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1771:556:9;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1771:556:9;;;;;;;;;;;;;;;;;:::i;:::-;;1024:19:8;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1001:17;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;344:26:11;;;:::i;:::-;;;;;;;;;;;;;;;;;;;933::8;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4393:307:11;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1929:254;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1929:254:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;329:42:9;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;873:22:8;;;;;;;;;;;;;:::o;261:21:11:-;;;;:::o;3795:246::-;3897:11;3924:16;:14;:16::i;:::-;3960:49;3972:19;3993:15;3960:11;:49::i;:::-;3950:59;;4019:15;:13;:15::i;:::-;3795:246;;;;:::o;965:30:8:-;;;;;;;;;;;;;:::o;3251:270:11:-;3367:9;3392:16;:14;:16::i;:::-;3425:64;3441:17;3460;3479:9;3425:15;:64::i;:::-;3418:71;;3499:15;:13;:15::i;:::-;3251:270;;;;;:::o;4164:89::-;4220:3;4210:7;:13;;;;4233;:11;:13::i;:::-;4164:89::o;2518:264::-;2629:11;2656:16;:14;:16::i;:::-;2691:59;2702:17;2721;2740:9;2691:10;:59::i;:::-;2682:68;;2760:15;:13;:15::i;:::-;2518:264;;;;;:::o;2958:302:9:-;3032:9;1427:7;;;;;;;;;;;1413:21;;:10;:21;;;1405:30;;;;;;3064:13;;;;;;;;;;;:29;;;:31;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3064:31:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3064:31:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3064:31:9;;;;;;;;;;;;;;;;:41;;;3114:4;3064:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3064:56:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3064:56:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3064:56:9;;;;;;;;;;;;;;;;3057:63;;3163:13;;;;;;;;;;;:29;;;:31;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3163:31:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3163:31:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3163:31:9;;;;;;;;;;;;;;;;:40;;;3204:7;;;;;;;;;;;3213:4;3163:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3163:55:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3163:55:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3163:55:9;;;;;;;;;;;;;;;;3155:64;;;;;;3234:19;3248:4;3234:19;;;;;;;;;;;;;;;;;;2958:302;:::o;193:30:11:-;222:1;193:30;:::o;901:26:8:-;;;;:::o;313:25:11:-;;;;:::o;376:::-;;;;:::o;1049:33:8:-;;;;;;;;;;;;;;;;;;;;;;;;;:::o;205:25:29:-;;;;;;;;;;;;;:::o;10867:159:9:-;10958:4;364:7;10985:34;;11004:3;;;;;;;;;;;10985:22;;:16;:22;:34;;;;;;10978:41;;10867:159;;;:::o;1088:19:8:-;;;;;;;;;;;;;:::o;288::11:-;;;;:::o;1771:556:9:-;1427:7;;;;;;;;;;;1413:21;;:10;:21;;;1405:30;;;;;;1849:20;1563:6;1554:15;;;;;;;;:5;;;;;;;;;;;:15;;;;;;;;;1546:24;;;;;;1995:13;;;;;;;;;;;:29;;;:31;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1995:31:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1995:31:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1995:31:9;;;;;;;;;;;;;;;;:44;;;2040:10;2060:4;2067:8;1995:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1995:81:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1995:81:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1995:81:9;;;;;;;;;;;;;;;;:174;;;;;2096:13;;;;;;;;;;;:29;;;:31;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2096:31:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2096:31:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2096:31:9;;;;;;;;;;;;;;;;:39;;;2144:13;;;;;;;;;;;2160:8;2096:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2096:73:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2096:73:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2096:73:9;;;;;;;;;;;;;;;;1995:174;1984:186;;;;;;2180:13;;;;;;;;;;;:28;;;2209:8;2180:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2180:38:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2180:38:9;;;;2238:8;2228:7;:18;;;;2264:19;2256:5;;:27;;;;;;;;;;;;;;;;;;;;;;;;2298:22;2312:7;;2298:22;;;;;;;;;;;;;;;;;;1445:1;1771:556;:::o;1024:19:8:-;;;;:::o;1001:17::-;;;;;;;;;;;;;:::o;344:26:11:-;;;;:::o;933::8:-;;;;;;;;;;;;;:::o;4393:307:11:-;4461:4;4494:1;4484:7;;:11;4481:119;;;4590:9;;4580:7;;:19;4561:13;;4551:7;;:23;4533:14;;:42;4517:13;;:58;4516:84;;;;;;4509:91;;;;4481:119;4683:9;;4677:3;:15;4658:13;;4652:3;:19;4634:14;;:38;4618:13;;:54;4617:76;;;;;;4610:83;;4393:307;;:::o;1929:254::-;2037:9;2062:16;:14;:16::i;:::-;2095:56;2105:17;2124;2143:7;2095:9;:56::i;:::-;2088:63;;2161:15;:13;:15::i;:::-;1929:254;;;;;:::o;329:42:9:-;364:7;329:42;:::o;4829:231:11:-;4896:9;;4889:3;:16;4885:169;;5029:13;;5023:3;:19;5005:14;;:38;4988:13;;:55;;;;;;;;;;;4885:169;4829:231::o;8061:542:9:-;8200:11;8162:19;1563:6;1554:15;;;;;;;;:5;;;;;;;;;;;:15;;;;;;;;;1546:24;;;;;;8227:18;8248:13;;;;;;;;;;;:29;;;:31;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8248:31:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8248:31:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8248:31:9;;;;;;;;;;;;;;;;8227:52;;8327:12;8297:42;;:19;:26;:42;8289:51;;;;;;8351:23;8384:9;8442:61;8452:12;8466:19;8487:15;8442:9;:61::i;:::-;8403:100;;;;;;;;;;;;8537:10;8519:77;;;8549:19;8570;8591:4;8519:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;8519:77:9;;;;;;;;;;;;;;;;;;;1580:1;;;8061:542;;;;;:::o;5118:302:11:-;5343:11;;;;;;;;;;;:29;;;5373:4;222:1;5343:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5343:41:11;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5343:41:11;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5343:41:11;;;;;;;;;;;;;;;;5326:14;:58;;;;5410:3;5394:13;:19;;;;5118:302::o;6084:1199:9:-;6200:9;6264:13;;;;;;;;;;;:29;;;:31;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6264:31:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6264:31:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6264:31:9;;;;;;;;;;;;;;;;:44;;;6309:10;6329:4;6336:17;6264:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6264:90:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6264:90:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6264:90:9;;;;;;;;;;;;;;;;:192;;;;;6374:13;;;;;;;;;;;:29;;;:31;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6374:31:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6374:31:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6374:31:9;;;;;;;;;;;;;;;;:39;;;6422:13;;;;;;;;;;;6438:17;6374:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6374:82:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6374:82:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6374:82:9;;;;;;;;;;;;;;;;6264:192;6253:204;;;;;;6467:13;;;;;;;;;;;:28;;;6496:17;6467:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6467:47:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6467:47:9;;;;6563:13;;;;;;;;;;;:27;;;6591:17;6563:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6563:46:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6563:46:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6563:46:9;;;;;;;;;;;;;;;;:54;;;6626:4;6633:17;6563:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6563:88:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6563:88:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6563:88:9;;;;;;;;;;;;;;;;;6661:11;6675:4;:9;;;6685:17;6704;6723:9;6675:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6675:58:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6675:58:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6675:58:9;;;;;;;;;;;;;;;;6661:72;;6770:6;6750:17;:26;6743:33;;6830:18;6851:13;;;;;;;;;;;:29;;;:31;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6851:31:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6851:31:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6851:31:9;;;;;;;;;;;;;;;;6830:52;;6897:7;6907:1;6897:11;;6892:176;6914:12;6910:16;;:1;:16;;;6892:176;;;6954:17;6949:22;;:1;:22;;;6945:123;;6997:13;;;;;;;;;;;:27;;;7025:1;6997:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6997:30:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6997:30:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6997:30:9;;;;;;;;;;;;;;;;:39;;;7037:10;7049:17;6997:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6997:70:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6997:70:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6997:70:9;;;;;;;;;;;;;;;;6989:79;;;;;;6945:123;6928:3;;;;;;;6892:176;;;;7123:13;;;;;;;;;;;:29;;;:31;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7123:31:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7123:31:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7123:31:9;;;;;;;;;;;;;;;;:40;;;7164:10;7176:6;7123:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7123:60:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7123:60:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7123:60:9;;;;;;;;;;;;;;;;7115:69;;;;;;7221:10;7199:77;;;7233:17;7252;7271:4;7199:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6084:1199;;;;;;;:::o;2449:404::-;1427:7;;;;;;;;;;;1413:21;;:10;:21;;;1405:30;;;;;;2515:19;1563:6;1554:15;;;;;;;;:5;;;;;;;;;;;:15;;;;;;;;;1546:24;;;;;;2550:18;2571:13;;;;;;;;;;;:29;;;:31;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2571:31:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2571:31:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2571:31:9;;;;;;;;;;;;;;;;2550:52;;2617:7;2627:1;2617:11;;2612:167;2634:12;2630:16;;:1;:16;;;2612:167;;;2673:13;;;;;;;;;;;:27;;;2701:1;2673:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2673:30:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2673:30:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2673:30:9;;;;;;;;;;;;;;;;:39;;;2713:7;;;;;;;;;;;2722:13;;;;;;;;;;;:27;;;2750:1;2722:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2722:30:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2722:30:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2722:30:9;;;;;;;;;;;;;;;;:40;;;2771:4;2722:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2722:55:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2722:55:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2722:55:9;;;;;;;;;;;;;;;;2673:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2673:105:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2673:105:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2673:105:9;;;;;;;;;;;;;;;;2665:114;;;;;;2648:3;;;;;;;2612:167;;;;2797:19;2789:5;;:27;;;;;;;;;;;;;;;;;;;;;;;;2831:15;;;;;;;;;;1580:1;1445;2449:404::o;4762:853::-;4910:11;4872:19;1563:6;1554:15;;;;;;;;:5;;;;;;;;;;;:15;;;;;;;;;1546:24;;;;;;4972:1;4950:17;4945:23;;:28;;:51;;;;;4995:1;4982:9;4977:15;;:19;4945:51;4937:60;;;;;;5007:18;5028:13;;;;;;;;;;;:29;;;:31;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5028:31:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5028:31:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5028:31:9;;;;;;;;;;;;;;;;5007:52;;5098:1;5077:17;:22;;;;:58;;;;;5123:12;5103:32;;:17;:32;;;5077:58;5069:67;;;;;;5146:32;5191:12;5181:23;;;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;5181:23:9;;;;5146:58;;5260:17;5255:23;;5214:19;5234:17;5214:38;;;;;;;;;;;;;;;:64;;;;;5289:11;5302:23;5327:9;5340:61;5350:12;5364:19;5390:9;5385:15;;5340:9;:61::i;:::-;5288:113;;;;;;5430:1;5419:7;:12;;:40;;;;;5458:1;5435:19;:24;;5419:40;5411:49;;;;;;5485:7;5484:8;;5470:23;;5525:10;5508:100;;;5537:17;5556;5581:19;5580:20;;5603:4;5508:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1580:1;;;;;4762:853;;;;;;:::o;3587:840::-;3732:9;3694:19;1563:6;1554:15;;;;;;;;:5;;;;;;;;;;;:15;;;;;;;;;1546:24;;;;;;3791:1;3769:17;3765:27;;:47;;;;;3811:1;3800:7;3796:16;3765:47;3757:56;;;;;;3823:18;3844:13;;;;;;;;;;;:29;;;:31;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3844:31:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3844:31:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3844:31:9;;;;;;;;;;;;;;;;3823:52;;3914:1;3893:17;:22;;;;:58;;;;;3939:12;3919:32;;:17;:32;;;3893:58;3885:67;;;;;;3962:32;4007:12;3997:23;;;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;3997:23:9;;;;3962:58;;4075:17;4030:19;4050:17;4030:38;;;;;;;;;;;;;;;:63;;;;;4104:11;4117:23;4142:9;4155:58;4165:12;4179:19;4204:7;4155:9;:58::i;:::-;4103:110;;;;;;4242:1;4231:7;:12;;:40;;;;;4270:1;4247:19;:24;;4231:40;4223:49;;;;;;4294:7;4282:20;;4338:10;4317:103;;;4350:17;4369;4393:19;4415:4;4317:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1580:1;;;;;3587:840;;;;;;:::o;8609:2104::-;8736:11;8749:23;8774:9;8871:11;;;;;;;;;;;:23;;;8895:4;8901:19;8871:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;8871:50:9;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8871:50:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8871:50:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8871:50:9;;;;;;;;;;;;;;;;8849:72;;8956:1;8934:19;:23;8931:162;;;8978:41;8998:19;8997:20;;8978:13;:41::i;:::-;8971:48;;8931:162;;;9053:40;9072:19;9053:13;:40::i;:::-;9046:47;;8931:162;9125:1;9116:4;9112:14;;9104:23;;;;;;9147:34;9175:4;9147:19;:23;;:34;;;;:::i;:::-;9137:44;;9233:1;9214:15;:20;;:50;;;;;9249:15;9238:7;:26;;9214:50;9213:88;;;;9300:1;9281:15;:20;9213:88;9192:119;;;;;;9347:1;9325:19;:23;9322:358;;;9389:13;;;;;;;;;;;:29;;;:31;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9389:31:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9389:31:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9389:31:9;;;;;;;;;;;;;;;;:44;;;9434:10;9454:4;9466:7;9389:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9389:86:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9389:86:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9389:86:9;;;;;;;;;;;;;;;;:196;;;;;9495:13;;;;;;;;;;;:29;;;:31;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9495:31:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9495:31:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9495:31:9;;;;;;;;;;;;;;;;:39;;;9543:13;;;;;;;;;;;9564:19;9495:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9495:90:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9495:90:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9495:90:9;;;;;;;;;;;;;;;;9389:196;9364:235;;;;;;9614:13;;;;;;;;;;;:28;;;9648:19;9614:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9614:55:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9614:55:9;;;;9322:358;9695:7;9705:1;9695:11;;9690:544;9712:12;9708:16;;:1;:16;;;9690:544;;;9774:1;9748:19;9768:1;9748:22;;;;;;;;;;;;;;;;:27;9745:479;;9823:1;9798:19;9818:1;9798:22;;;;;;;;;;;;;;;;:26;9795:319;;;9856:13;;;;;;;;;;;:27;;;9884:1;9856:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9856:30:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9856:30:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9856:30:9;;;;;;;;;;;;;;;;:43;;;9900:10;9920:4;9933:19;9953:1;9933:22;;;;;;;;;;;;;;;;9932:23;;9856:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9856:101:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9856:101:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9856:101:9;;;;;;;;;;;;;;;;9848:110;;;;;;9795:319;;;10013:13;;;;;;;;;;;:27;;;10041:1;10013:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10013:30:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10013:30:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10013:30:9;;;;;;;;;;;;;;;;:39;;;10053:10;10070:19;10090:1;10070:22;;;;;;;;;;;;;;;;10013:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10013:81:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10013:81:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10013:81:9;;;;;;;;;;;;;;;;10005:90;;;;;;9795:319;10158:51;10186:19;10206:1;10186:22;;;;;;;;;;;;;;;;10158:20;10179:1;10158:23;;;;;;;;;;;;;;;;;;:27;;:51;;;;:::i;:::-;10132:20;10153:1;10132:23;;;;;;;;;;;;;;;;;:77;;;;9745:479;9726:3;;;;;;;9690:544;;;;10269:1;10247:19;:23;10244:463;;;10500:13;;;;;;;;;;;:29;;;10536:19;10535:20;;10500:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10500:57:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10500:57:9;;;;10584:1;10574:7;:11;10571:126;;;10613:13;;;;;;;;;;;:29;;;:31;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10613:31:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10613:31:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10613:31:9;;;;;;;;;;;;;;;;:40;;;10654:10;10672:7;10671:8;;10613:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10613:68:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10613:68:9;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10613:68:9;;;;;;;;;;;;;;;;10605:77;;;;;;10571:126;10244:463;8609:2104;;;;;;;:::o;1614:210:31:-;1670:6;1688:8;1703:1;1699;:5;1688:16;;1728:1;1723;:6;;:16;;;;;1738:1;1733;:6;;1723:16;1722:38;;;;1749:1;1745;:5;:14;;;;;1758:1;1754;:5;1745:14;1722:38;1714:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1816:1;1809:8;;;1614:210;;;;:::o",
  "source": "pragma solidity ^0.5.0;\nimport \"../Markets/StandardMarket.sol\";\n\ncontract StandardMarketWithPriceLoggerData {\n\n    /*\n     *  Constants\n     */\n    uint constant ONE = 0x10000000000000000;\n    uint8 public constant LONG = 1;\n\n    /*\n     *  Storage\n     */\n    uint public startDate;\n    uint public endDate;\n    uint public lastTradeDate;\n    uint public lastTradePrice;\n    uint public priceIntegral;\n}\n\ncontract StandardMarketWithPriceLoggerProxy is StandardMarketProxy, StandardMarketWithPriceLoggerData {\n\n    /// @dev Constructor validates and sets market properties\n    /// @param _creator Market creator\n    /// @param _eventContract Event contract\n    /// @param _marketMaker Market maker contract\n    /// @param _fee Market fee\n    /// @param _startDate Start date for price logging\n    constructor(address proxied, address _creator, Event _eventContract, MarketMaker _marketMaker, uint24 _fee, uint _startDate)\n        public\n        StandardMarketProxy(proxied, _creator, _eventContract, _marketMaker, _fee)\n    {\n        require(eventContract.getOutcomeCount() == 2);\n\n        if (_startDate == 0)\n            startDate = now;\n        else {\n            // The earliest start date is the market creation date\n            require(_startDate >= now);\n            startDate = _startDate;\n        }\n\n        lastTradeDate = startDate;\n        // initialize lastTradePrice to assuming uniform probabilities of outcomes\n        lastTradePrice = ONE / 2;\n    }\n}\n\ncontract StandardMarketWithPriceLogger is StandardMarket, StandardMarketWithPriceLoggerData {\n    /*\n     *  Public functions\n     */\n    /// @dev Allows to buy outcome tokens from market maker\n    /// @param outcomeTokenIndex Index of the outcome token to buy\n    /// @param outcomeTokenCount Amount of outcome tokens to buy\n    /// @param maxCost The maximum cost in collateral tokens to pay for outcome tokens\n    /// @return Cost in collateral tokens\n    function buy(uint8 outcomeTokenIndex, uint outcomeTokenCount, uint maxCost)\n        public\n        returns (uint cost)\n    {\n        logPriceBefore();\n        cost = super.buy(outcomeTokenIndex, outcomeTokenCount, maxCost);\n        logPriceAfter();\n    }\n\n    /// @dev Allows to sell outcome tokens to market maker\n    /// @param outcomeTokenIndex Index of the outcome token to sell\n    /// @param outcomeTokenCount Amount of outcome tokens to sell\n    /// @param minProfit The minimum profit in collateral tokens to earn for outcome tokens\n    /// @return Profit in collateral tokens\n    function sell(uint8 outcomeTokenIndex, uint outcomeTokenCount, uint minProfit)\n        public\n        returns (uint profit)\n    {\n        logPriceBefore();\n        profit = super.sell(outcomeTokenIndex, outcomeTokenCount, minProfit);\n        logPriceAfter();\n    }\n\n    /// @dev Buys all outcomes, then sells all shares of selected outcome which were bought, keeping\n    ///      shares of all other outcome tokens.\n    /// @param outcomeTokenIndex Index of the outcome token to short sell\n    /// @param outcomeTokenCount Amount of outcome tokens to short sell\n    /// @param minProfit The minimum profit in collateral tokens to earn for short sold outcome tokens\n    /// @return Cost to short sell outcome in collateral tokens\n    function shortSell(uint8 outcomeTokenIndex, uint outcomeTokenCount, uint minProfit)\n        public\n        returns (uint cost)\n    {\n        logPriceBefore();\n        cost = super.shortSell(outcomeTokenIndex, outcomeTokenCount, minProfit);\n        logPriceAfter();\n    }\n\n    /// @dev Allows to trade outcome tokens with market maker\n    /// @param outcomeTokenAmounts Amounts of outcome tokens to trade\n    /// @param collateralLimit The maximum cost or minimum profit in collateral tokens\n    /// @return Cost/profit in collateral tokens\n    function trade(int[] memory outcomeTokenAmounts, int collateralLimit)\n        public\n        returns (int netCost)\n    {\n        logPriceBefore();\n        netCost = super.trade(outcomeTokenAmounts, collateralLimit);\n        logPriceAfter();\n    }\n\n\n    /// @dev Allows market creator to close the markets by transferring all remaining outcome tokens to the creator\n    function close()\n        public\n    {\n        endDate = now;\n        super.close();\n    }\n\n    /// @dev Calculates average price for long tokens based on price integral\n    /// @return Average price for long tokens over time\n    function getAvgPrice()\n        public\n        view\n        returns (uint)\n    {\n        if(endDate > 0)\n            return (priceIntegral + lastTradePrice * (endDate - lastTradeDate)) / (endDate - startDate);\n        return (priceIntegral + lastTradePrice * (now - lastTradeDate)) / (now - startDate);\n    }\n\n    /*\n     *  Private functions\n     */\n    /// @dev Adds price integral since the last trade to the total price integral\n    function logPriceBefore()\n        private\n    {\n        if (now >= startDate) {\n            // Accumulate price integral only if logging has begun\n            priceIntegral += lastTradePrice * (now - lastTradeDate);\n        }\n    }\n\n    /// @dev Updates last trade timestamp and price\n    function logPriceAfter()\n        private\n    {\n        // Refresh lastTradePrice after every transactions as we don't know if\n        // this will be the last transaction before logging period starts\n        lastTradePrice = marketMaker.calcMarginalPrice(this, LONG);\n        lastTradeDate = now;\n    }\n}\n",
  "sourcePath": "/home/alan/src/github.com/gnosis/pm-contracts/contracts/Markets/StandardMarketWithPriceLogger.sol",
  "ast": {
    "absolutePath": "/home/alan/src/github.com/gnosis/pm-contracts/contracts/Markets/StandardMarketWithPriceLogger.sol",
    "exportedSymbols": {
      "StandardMarketWithPriceLogger": [
        3549
      ],
      "StandardMarketWithPriceLoggerData": [
        3286
      ],
      "StandardMarketWithPriceLoggerProxy": [
        3351
      ]
    },
    "id": 3550,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 3268,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:11"
      },
      {
        "absolutePath": "/home/alan/src/github.com/gnosis/pm-contracts/contracts/Markets/StandardMarket.sol",
        "file": "../Markets/StandardMarket.sol",
        "id": 3269,
        "nodeType": "ImportDirective",
        "scope": 3550,
        "sourceUnit": 3200,
        "src": "24:39:11",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 3286,
        "linearizedBaseContracts": [
          3286
        ],
        "name": "StandardMarketWithPriceLoggerData",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 3272,
            "name": "ONE",
            "nodeType": "VariableDeclaration",
            "scope": 3286,
            "src": "148:39:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 3270,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "148:4:11",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30783130303030303030303030303030303030",
              "id": 3271,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "168:19:11",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_18446744073709551616_by_1",
                "typeString": "int_const 18446744073709551616"
              },
              "value": "0x10000000000000000"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 3275,
            "name": "LONG",
            "nodeType": "VariableDeclaration",
            "scope": 3286,
            "src": "193:30:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint8",
              "typeString": "uint8"
            },
            "typeName": {
              "id": 3273,
              "name": "uint8",
              "nodeType": "ElementaryTypeName",
              "src": "193:5:11",
              "typeDescriptions": {
                "typeIdentifier": "t_uint8",
                "typeString": "uint8"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "31",
              "id": 3274,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "222:1:11",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_1_by_1",
                "typeString": "int_const 1"
              },
              "value": "1"
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 3277,
            "name": "startDate",
            "nodeType": "VariableDeclaration",
            "scope": 3286,
            "src": "261:21:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 3276,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "261:4:11",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 3279,
            "name": "endDate",
            "nodeType": "VariableDeclaration",
            "scope": 3286,
            "src": "288:19:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 3278,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "288:4:11",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 3281,
            "name": "lastTradeDate",
            "nodeType": "VariableDeclaration",
            "scope": 3286,
            "src": "313:25:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 3280,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "313:4:11",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 3283,
            "name": "lastTradePrice",
            "nodeType": "VariableDeclaration",
            "scope": 3286,
            "src": "344:26:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 3282,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "344:4:11",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 3285,
            "name": "priceIntegral",
            "nodeType": "VariableDeclaration",
            "scope": 3286,
            "src": "376:25:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 3284,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "376:4:11",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          }
        ],
        "scope": 3550,
        "src": "65:339:11"
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 3287,
              "name": "StandardMarketProxy",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2389,
              "src": "453:19:11",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_StandardMarketProxy_$2389",
                "typeString": "contract StandardMarketProxy"
              }
            },
            "id": 3288,
            "nodeType": "InheritanceSpecifier",
            "src": "453:19:11"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 3289,
              "name": "StandardMarketWithPriceLoggerData",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3286,
              "src": "474:33:11",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_StandardMarketWithPriceLoggerData_$3286",
                "typeString": "contract StandardMarketWithPriceLoggerData"
              }
            },
            "id": 3290,
            "nodeType": "InheritanceSpecifier",
            "src": "474:33:11"
          }
        ],
        "contractDependencies": [
          2230,
          2307,
          2389,
          3286,
          6798,
          6828
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 3351,
        "linearizedBaseContracts": [
          3351,
          3286,
          2389,
          2307,
          2230,
          6828,
          6798
        ],
        "name": "StandardMarketWithPriceLoggerProxy",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 3349,
              "nodeType": "Block",
              "src": "1024:442:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "id": 3317,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 3313,
                              "name": "eventContract",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2214,
                              "src": "1042:13:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Event_$392",
                                "typeString": "contract Event"
                              }
                            },
                            "id": 3314,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getOutcomeCount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 331,
                            "src": "1042:29:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$",
                              "typeString": "function () view external returns (uint8)"
                            }
                          },
                          "id": 3315,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1042:31:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "32",
                          "id": 3316,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1077:1:11",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_2_by_1",
                            "typeString": "int_const 2"
                          },
                          "value": "2"
                        },
                        "src": "1042:36:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 3312,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7923,
                        7924
                      ],
                      "referencedDeclaration": 7923,
                      "src": "1034:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 3318,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1034:45:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3319,
                  "nodeType": "ExpressionStatement",
                  "src": "1034:45:11"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3322,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3320,
                      "name": "_startDate",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3302,
                      "src": "1094:10:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3321,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1108:1:11",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "1094:15:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 3337,
                    "nodeType": "Block",
                    "src": "1153:154:11",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3330,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 3328,
                                "name": "_startDate",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3302,
                                "src": "1242:10:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 3329,
                                "name": "now",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7922,
                                "src": "1256:3:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1242:17:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 3327,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              7923,
                              7924
                            ],
                            "referencedDeclaration": 7923,
                            "src": "1234:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 3331,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1234:26:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3332,
                        "nodeType": "ExpressionStatement",
                        "src": "1234:26:11"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3335,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3333,
                            "name": "startDate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3277,
                            "src": "1274:9:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 3334,
                            "name": "_startDate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3302,
                            "src": "1286:10:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1274:22:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3336,
                        "nodeType": "ExpressionStatement",
                        "src": "1274:22:11"
                      }
                    ]
                  },
                  "id": 3338,
                  "nodeType": "IfStatement",
                  "src": "1090:217:11",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 3325,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 3323,
                        "name": "startDate",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3277,
                        "src": "1123:9:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "id": 3324,
                        "name": "now",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7922,
                        "src": "1135:3:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "1123:15:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3326,
                    "nodeType": "ExpressionStatement",
                    "src": "1123:15:11"
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3341,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3339,
                      "name": "lastTradeDate",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3281,
                      "src": "1317:13:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3340,
                      "name": "startDate",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3277,
                      "src": "1333:9:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1317:25:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3342,
                  "nodeType": "ExpressionStatement",
                  "src": "1317:25:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3347,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3343,
                      "name": "lastTradePrice",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3283,
                      "src": "1435:14:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 3346,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 3344,
                        "name": "ONE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3272,
                        "src": "1452:3:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "/",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "32",
                        "id": 3345,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1458:1:11",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        },
                        "value": "2"
                      },
                      "src": "1452:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1435:24:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3348,
                  "nodeType": "ExpressionStatement",
                  "src": "1435:24:11"
                }
              ]
            },
            "documentation": "@dev Constructor validates and sets market properties\n @param _creator Market creator\n @param _eventContract Event contract\n @param _marketMaker Market maker contract\n @param _fee Market fee\n @param _startDate Start date for price logging",
            "id": 3350,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 3305,
                    "name": "proxied",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3292,
                    "src": "965:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 3306,
                    "name": "_creator",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3294,
                    "src": "974:8:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 3307,
                    "name": "_eventContract",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3296,
                    "src": "984:14:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Event_$392",
                      "typeString": "contract Event"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 3308,
                    "name": "_marketMaker",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3298,
                    "src": "1000:12:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MarketMaker_$1606",
                      "typeString": "contract MarketMaker"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 3309,
                    "name": "_fee",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3300,
                    "src": "1014:4:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint24",
                      "typeString": "uint24"
                    }
                  }
                ],
                "id": 3310,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3304,
                  "name": "StandardMarketProxy",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2389,
                  "src": "945:19:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_StandardMarketProxy_$2389_$",
                    "typeString": "type(contract StandardMarketProxy)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "945:74:11"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3303,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3292,
                  "name": "proxied",
                  "nodeType": "VariableDeclaration",
                  "scope": 3350,
                  "src": "809:15:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3291,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "809:7:11",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3294,
                  "name": "_creator",
                  "nodeType": "VariableDeclaration",
                  "scope": 3350,
                  "src": "826:16:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3293,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "826:7:11",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3296,
                  "name": "_eventContract",
                  "nodeType": "VariableDeclaration",
                  "scope": 3350,
                  "src": "844:20:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Event_$392",
                    "typeString": "contract Event"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3295,
                    "name": "Event",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 392,
                    "src": "844:5:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Event_$392",
                      "typeString": "contract Event"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3298,
                  "name": "_marketMaker",
                  "nodeType": "VariableDeclaration",
                  "scope": 3350,
                  "src": "866:24:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_MarketMaker_$1606",
                    "typeString": "contract MarketMaker"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3297,
                    "name": "MarketMaker",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1606,
                    "src": "866:11:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MarketMaker_$1606",
                      "typeString": "contract MarketMaker"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3300,
                  "name": "_fee",
                  "nodeType": "VariableDeclaration",
                  "scope": 3350,
                  "src": "892:11:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint24",
                    "typeString": "uint24"
                  },
                  "typeName": {
                    "id": 3299,
                    "name": "uint24",
                    "nodeType": "ElementaryTypeName",
                    "src": "892:6:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint24",
                      "typeString": "uint24"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3302,
                  "name": "_startDate",
                  "nodeType": "VariableDeclaration",
                  "scope": 3350,
                  "src": "905:15:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3301,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "905:4:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "808:113:11"
            },
            "returnParameters": {
              "id": 3311,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1024:0:11"
            },
            "scope": 3351,
            "src": "797:669:11",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 3550,
        "src": "406:1062:11"
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 3352,
              "name": "StandardMarket",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3199,
              "src": "1512:14:11",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_StandardMarket_$3199",
                "typeString": "contract StandardMarket"
              }
            },
            "id": 3353,
            "nodeType": "InheritanceSpecifier",
            "src": "1512:14:11"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 3354,
              "name": "StandardMarketWithPriceLoggerData",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3286,
              "src": "1528:33:11",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_StandardMarketWithPriceLoggerData_$3286",
                "typeString": "contract StandardMarketWithPriceLoggerData"
              }
            },
            "id": 3355,
            "nodeType": "InheritanceSpecifier",
            "src": "1528:33:11"
          }
        ],
        "contractDependencies": [
          2230,
          2296,
          2307,
          3199,
          3286,
          6798
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 3549,
        "linearizedBaseContracts": [
          3549,
          3286,
          3199,
          2307,
          2296,
          2230,
          6798
        ],
        "name": "StandardMarketWithPriceLogger",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 3381,
              "nodeType": "Block",
              "src": "2052:131:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 3366,
                      "name": "logPriceBefore",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3532,
                      "src": "2062:14:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 3367,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2062:16:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3368,
                  "nodeType": "ExpressionStatement",
                  "src": "2062:16:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3376,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3369,
                      "name": "cost",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3364,
                      "src": "2088:4:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3372,
                          "name": "outcomeTokenIndex",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3357,
                          "src": "2105:17:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 3373,
                          "name": "outcomeTokenCount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3359,
                          "src": "2124:17:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 3374,
                          "name": "maxCost",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3361,
                          "src": "2143:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 3370,
                          "name": "super",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7999,
                          "src": "2095:5:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_super$_StandardMarketWithPriceLogger_$3549",
                            "typeString": "contract super StandardMarketWithPriceLogger"
                          }
                        },
                        "id": 3371,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "buy",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2671,
                        "src": "2095:9:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                          "typeString": "function (uint8,uint256,uint256) returns (uint256)"
                        }
                      },
                      "id": 3375,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2095:56:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2088:63:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3377,
                  "nodeType": "ExpressionStatement",
                  "src": "2088:63:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 3378,
                      "name": "logPriceAfter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3548,
                      "src": "2161:13:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 3379,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2161:15:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3380,
                  "nodeType": "ExpressionStatement",
                  "src": "2161:15:11"
                }
              ]
            },
            "documentation": "@dev Allows to buy outcome tokens from market maker\n @param outcomeTokenIndex Index of the outcome token to buy\n @param outcomeTokenCount Amount of outcome tokens to buy\n @param maxCost The maximum cost in collateral tokens to pay for outcome tokens\n @return Cost in collateral tokens",
            "id": 3382,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "buy",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3362,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3357,
                  "name": "outcomeTokenIndex",
                  "nodeType": "VariableDeclaration",
                  "scope": 3382,
                  "src": "1942:23:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 3356,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "1942:5:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3359,
                  "name": "outcomeTokenCount",
                  "nodeType": "VariableDeclaration",
                  "scope": 3382,
                  "src": "1967:22:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3358,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1967:4:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3361,
                  "name": "maxCost",
                  "nodeType": "VariableDeclaration",
                  "scope": 3382,
                  "src": "1991:12:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3360,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1991:4:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1941:63:11"
            },
            "returnParameters": {
              "id": 3365,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3364,
                  "name": "cost",
                  "nodeType": "VariableDeclaration",
                  "scope": 3382,
                  "src": "2037:9:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3363,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2037:4:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2036:11:11"
            },
            "scope": 3549,
            "src": "1929:254:11",
            "stateMutability": "nonpayable",
            "superFunction": 2671,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3408,
              "nodeType": "Block",
              "src": "2646:136:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 3393,
                      "name": "logPriceBefore",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3532,
                      "src": "2656:14:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 3394,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2656:16:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3395,
                  "nodeType": "ExpressionStatement",
                  "src": "2656:16:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3403,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3396,
                      "name": "profit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3391,
                      "src": "2682:6:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3399,
                          "name": "outcomeTokenIndex",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3384,
                          "src": "2702:17:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 3400,
                          "name": "outcomeTokenCount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3386,
                          "src": "2721:17:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 3401,
                          "name": "minProfit",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3388,
                          "src": "2740:9:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 3397,
                          "name": "super",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7999,
                          "src": "2691:5:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_super$_StandardMarketWithPriceLogger_$3549",
                            "typeString": "contract super StandardMarketWithPriceLogger"
                          }
                        },
                        "id": 3398,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sell",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2782,
                        "src": "2691:10:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                          "typeString": "function (uint8,uint256,uint256) returns (uint256)"
                        }
                      },
                      "id": 3402,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2691:59:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2682:68:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3404,
                  "nodeType": "ExpressionStatement",
                  "src": "2682:68:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 3405,
                      "name": "logPriceAfter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3548,
                      "src": "2760:13:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 3406,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2760:15:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3407,
                  "nodeType": "ExpressionStatement",
                  "src": "2760:15:11"
                }
              ]
            },
            "documentation": "@dev Allows to sell outcome tokens to market maker\n @param outcomeTokenIndex Index of the outcome token to sell\n @param outcomeTokenCount Amount of outcome tokens to sell\n @param minProfit The minimum profit in collateral tokens to earn for outcome tokens\n @return Profit in collateral tokens",
            "id": 3409,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "sell",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3389,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3384,
                  "name": "outcomeTokenIndex",
                  "nodeType": "VariableDeclaration",
                  "scope": 3409,
                  "src": "2532:23:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 3383,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "2532:5:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3386,
                  "name": "outcomeTokenCount",
                  "nodeType": "VariableDeclaration",
                  "scope": 3409,
                  "src": "2557:22:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3385,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2557:4:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3388,
                  "name": "minProfit",
                  "nodeType": "VariableDeclaration",
                  "scope": 3409,
                  "src": "2581:14:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3387,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2581:4:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2531:65:11"
            },
            "returnParameters": {
              "id": 3392,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3391,
                  "name": "profit",
                  "nodeType": "VariableDeclaration",
                  "scope": 3409,
                  "src": "2629:11:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3390,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2629:4:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2628:13:11"
            },
            "scope": 3549,
            "src": "2518:264:11",
            "stateMutability": "nonpayable",
            "superFunction": 2782,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3435,
              "nodeType": "Block",
              "src": "3382:139:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 3420,
                      "name": "logPriceBefore",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3532,
                      "src": "3392:14:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 3421,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3392:16:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3422,
                  "nodeType": "ExpressionStatement",
                  "src": "3392:16:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3430,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3423,
                      "name": "cost",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3418,
                      "src": "3418:4:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3426,
                          "name": "outcomeTokenIndex",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3411,
                          "src": "3441:17:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 3427,
                          "name": "outcomeTokenCount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3413,
                          "src": "3460:17:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 3428,
                          "name": "minProfit",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3415,
                          "src": "3479:9:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 3424,
                          "name": "super",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7999,
                          "src": "3425:5:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_super$_StandardMarketWithPriceLogger_$3549",
                            "typeString": "contract super StandardMarketWithPriceLogger"
                          }
                        },
                        "id": 3425,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "shortSell",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2903,
                        "src": "3425:15:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                          "typeString": "function (uint8,uint256,uint256) returns (uint256)"
                        }
                      },
                      "id": 3429,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3425:64:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3418:71:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3431,
                  "nodeType": "ExpressionStatement",
                  "src": "3418:71:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 3432,
                      "name": "logPriceAfter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3548,
                      "src": "3499:13:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 3433,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3499:15:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3434,
                  "nodeType": "ExpressionStatement",
                  "src": "3499:15:11"
                }
              ]
            },
            "documentation": "@dev Buys all outcomes, then sells all shares of selected outcome which were bought, keeping\n      shares of all other outcome tokens.\n @param outcomeTokenIndex Index of the outcome token to short sell\n @param outcomeTokenCount Amount of outcome tokens to short sell\n @param minProfit The minimum profit in collateral tokens to earn for short sold outcome tokens\n @return Cost to short sell outcome in collateral tokens",
            "id": 3436,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "shortSell",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3416,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3411,
                  "name": "outcomeTokenIndex",
                  "nodeType": "VariableDeclaration",
                  "scope": 3436,
                  "src": "3270:23:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 3410,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "3270:5:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3413,
                  "name": "outcomeTokenCount",
                  "nodeType": "VariableDeclaration",
                  "scope": 3436,
                  "src": "3295:22:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3412,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3295:4:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3415,
                  "name": "minProfit",
                  "nodeType": "VariableDeclaration",
                  "scope": 3436,
                  "src": "3319:14:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3414,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3319:4:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3269:65:11"
            },
            "returnParameters": {
              "id": 3419,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3418,
                  "name": "cost",
                  "nodeType": "VariableDeclaration",
                  "scope": 3436,
                  "src": "3367:9:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3417,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3367:4:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3366:11:11"
            },
            "scope": 3549,
            "src": "3251:270:11",
            "stateMutability": "nonpayable",
            "superFunction": 2903,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3460,
              "nodeType": "Block",
              "src": "3914:127:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 3446,
                      "name": "logPriceBefore",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3532,
                      "src": "3924:14:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 3447,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3924:16:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3448,
                  "nodeType": "ExpressionStatement",
                  "src": "3924:16:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3455,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3449,
                      "name": "netCost",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3444,
                      "src": "3950:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3452,
                          "name": "outcomeTokenAmounts",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3439,
                          "src": "3972:19:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_int256_$dyn_memory_ptr",
                            "typeString": "int256[] memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 3453,
                          "name": "collateralLimit",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3441,
                          "src": "3993:15:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_array$_t_int256_$dyn_memory_ptr",
                            "typeString": "int256[] memory"
                          },
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 3450,
                          "name": "super",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7999,
                          "src": "3960:5:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_super$_StandardMarketWithPriceLogger_$3549",
                            "typeString": "contract super StandardMarketWithPriceLogger"
                          }
                        },
                        "id": 3451,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "trade",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2956,
                        "src": "3960:11:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_int256_$dyn_memory_ptr_$_t_int256_$returns$_t_int256_$",
                          "typeString": "function (int256[] memory,int256) returns (int256)"
                        }
                      },
                      "id": 3454,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3960:49:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "3950:59:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 3456,
                  "nodeType": "ExpressionStatement",
                  "src": "3950:59:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 3457,
                      "name": "logPriceAfter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3548,
                      "src": "4019:13:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 3458,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4019:15:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3459,
                  "nodeType": "ExpressionStatement",
                  "src": "4019:15:11"
                }
              ]
            },
            "documentation": "@dev Allows to trade outcome tokens with market maker\n @param outcomeTokenAmounts Amounts of outcome tokens to trade\n @param collateralLimit The maximum cost or minimum profit in collateral tokens\n @return Cost/profit in collateral tokens",
            "id": 3461,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "trade",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3442,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3439,
                  "name": "outcomeTokenAmounts",
                  "nodeType": "VariableDeclaration",
                  "scope": 3461,
                  "src": "3810:32:11",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_int256_$dyn_memory_ptr",
                    "typeString": "int256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3437,
                      "name": "int",
                      "nodeType": "ElementaryTypeName",
                      "src": "3810:3:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "id": 3438,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "3810:5:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_int256_$dyn_storage_ptr",
                      "typeString": "int256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3441,
                  "name": "collateralLimit",
                  "nodeType": "VariableDeclaration",
                  "scope": 3461,
                  "src": "3844:19:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 3440,
                    "name": "int",
                    "nodeType": "ElementaryTypeName",
                    "src": "3844:3:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3809:55:11"
            },
            "returnParameters": {
              "id": 3445,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3444,
                  "name": "netCost",
                  "nodeType": "VariableDeclaration",
                  "scope": 3461,
                  "src": "3897:11:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 3443,
                    "name": "int",
                    "nodeType": "ElementaryTypeName",
                    "src": "3897:3:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3896:13:11"
            },
            "scope": 3549,
            "src": "3795:246:11",
            "stateMutability": "nonpayable",
            "superFunction": 2956,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3473,
              "nodeType": "Block",
              "src": "4200:53:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3466,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3464,
                      "name": "endDate",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3279,
                      "src": "4210:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3465,
                      "name": "now",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7922,
                      "src": "4220:3:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4210:13:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3467,
                  "nodeType": "ExpressionStatement",
                  "src": "4210:13:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3468,
                        "name": "super",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7999,
                        "src": "4233:5:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_super$_StandardMarketWithPriceLogger_$3549",
                          "typeString": "contract super StandardMarketWithPriceLogger"
                        }
                      },
                      "id": 3470,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "close",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2533,
                      "src": "4233:11:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 3471,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4233:13:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3472,
                  "nodeType": "ExpressionStatement",
                  "src": "4233:13:11"
                }
              ]
            },
            "documentation": "@dev Allows market creator to close the markets by transferring all remaining outcome tokens to the creator",
            "id": 3474,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "close",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3462,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4178:2:11"
            },
            "returnParameters": {
              "id": 3463,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4200:0:11"
            },
            "scope": 3549,
            "src": "4164:89:11",
            "stateMutability": "nonpayable",
            "superFunction": 2533,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3513,
              "nodeType": "Block",
              "src": "4471:229:11",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3481,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3479,
                      "name": "endDate",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3279,
                      "src": "4484:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3480,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4494:1:11",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "4484:11:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3497,
                  "nodeType": "IfStatement",
                  "src": "4481:119:11",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 3495,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3489,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 3482,
                              "name": "priceIntegral",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3285,
                              "src": "4517:13:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3488,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 3483,
                                "name": "lastTradePrice",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3283,
                                "src": "4533:14:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 3486,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 3484,
                                      "name": "endDate",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3279,
                                      "src": "4551:7:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 3485,
                                      "name": "lastTradeDate",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3281,
                                      "src": "4561:13:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "4551:23:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 3487,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "4550:25:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4533:42:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "4517:58:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "id": 3490,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "4516:60:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "/",
                      "rightExpression": {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3493,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 3491,
                              "name": "endDate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3279,
                              "src": "4580:7:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 3492,
                              "name": "startDate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3277,
                              "src": "4590:9:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "4580:19:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "id": 3494,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "4579:21:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "4516:84:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "functionReturnParameters": 3478,
                    "id": 3496,
                    "nodeType": "Return",
                    "src": "4509:91:11"
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3511,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3505,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3498,
                            "name": "priceIntegral",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3285,
                            "src": "4618:13:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3504,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 3499,
                              "name": "lastTradePrice",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3283,
                              "src": "4634:14:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 3502,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 3500,
                                    "name": "now",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7922,
                                    "src": "4652:3:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 3501,
                                    "name": "lastTradeDate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3281,
                                    "src": "4658:13:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "4652:19:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 3503,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "4651:21:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "4634:38:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4618:54:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 3506,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "4617:56:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "/",
                    "rightExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3509,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3507,
                            "name": "now",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7922,
                            "src": "4677:3:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 3508,
                            "name": "startDate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3277,
                            "src": "4683:9:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4677:15:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 3510,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "4676:17:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4617:76:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 3478,
                  "id": 3512,
                  "nodeType": "Return",
                  "src": "4610:83:11"
                }
              ]
            },
            "documentation": "@dev Calculates average price for long tokens based on price integral\n @return Average price for long tokens over time",
            "id": 3514,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getAvgPrice",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3475,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4413:2:11"
            },
            "returnParameters": {
              "id": 3478,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3477,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3514,
                  "src": "4461:4:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3476,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "4461:4:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4460:6:11"
            },
            "scope": 3549,
            "src": "4393:307:11",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3531,
              "nodeType": "Block",
              "src": "4875:185:11",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3519,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3517,
                      "name": "now",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7922,
                      "src": "4889:3:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 3518,
                      "name": "startDate",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3277,
                      "src": "4896:9:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4889:16:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3530,
                  "nodeType": "IfStatement",
                  "src": "4885:169:11",
                  "trueBody": {
                    "id": 3529,
                    "nodeType": "Block",
                    "src": "4907:147:11",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3527,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3520,
                            "name": "priceIntegral",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3285,
                            "src": "4988:13:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3526,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 3521,
                              "name": "lastTradePrice",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3283,
                              "src": "5005:14:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 3524,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 3522,
                                    "name": "now",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7922,
                                    "src": "5023:3:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 3523,
                                    "name": "lastTradeDate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3281,
                                    "src": "5029:13:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "5023:19:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 3525,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "5022:21:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "5005:38:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4988:55:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3528,
                        "nodeType": "ExpressionStatement",
                        "src": "4988:55:11"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@dev Adds price integral since the last trade to the total price integral",
            "id": 3532,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logPriceBefore",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3515,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4852:2:11"
            },
            "returnParameters": {
              "id": 3516,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4875:0:11"
            },
            "scope": 3549,
            "src": "4829:231:11",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 3547,
              "nodeType": "Block",
              "src": "5163:257:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3541,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3535,
                      "name": "lastTradePrice",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3283,
                      "src": "5326:14:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3538,
                          "name": "this",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7998,
                          "src": "5373:4:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_StandardMarketWithPriceLogger_$3549",
                            "typeString": "contract StandardMarketWithPriceLogger"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 3539,
                          "name": "LONG",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3275,
                          "src": "5379:4:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_StandardMarketWithPriceLogger_$3549",
                            "typeString": "contract StandardMarketWithPriceLogger"
                          },
                          {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 3536,
                          "name": "marketMaker",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2216,
                          "src": "5343:11:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_MarketMaker_$1606",
                            "typeString": "contract MarketMaker"
                          }
                        },
                        "id": 3537,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "calcMarginalPrice",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1605,
                        "src": "5343:29:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_contract$_Market_$2296_$_t_uint8_$returns$_t_uint256_$",
                          "typeString": "function (contract Market,uint8) view external returns (uint256)"
                        }
                      },
                      "id": 3540,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5343:41:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5326:58:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3542,
                  "nodeType": "ExpressionStatement",
                  "src": "5326:58:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3545,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3543,
                      "name": "lastTradeDate",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3281,
                      "src": "5394:13:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3544,
                      "name": "now",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7922,
                      "src": "5410:3:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5394:19:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3546,
                  "nodeType": "ExpressionStatement",
                  "src": "5394:19:11"
                }
              ]
            },
            "documentation": "@dev Updates last trade timestamp and price",
            "id": 3548,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logPriceAfter",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3533,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5140:2:11"
            },
            "returnParameters": {
              "id": 3534,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5163:0:11"
            },
            "scope": 3549,
            "src": "5118:302:11",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "private"
          }
        ],
        "scope": 3550,
        "src": "1470:3952:11"
      }
    ],
    "src": "0:5423:11"
  },
  "legacyAST": {
    "absolutePath": "/home/alan/src/github.com/gnosis/pm-contracts/contracts/Markets/StandardMarketWithPriceLogger.sol",
    "exportedSymbols": {
      "StandardMarketWithPriceLogger": [
        3549
      ],
      "StandardMarketWithPriceLoggerData": [
        3286
      ],
      "StandardMarketWithPriceLoggerProxy": [
        3351
      ]
    },
    "id": 3550,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 3268,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:11"
      },
      {
        "absolutePath": "/home/alan/src/github.com/gnosis/pm-contracts/contracts/Markets/StandardMarket.sol",
        "file": "../Markets/StandardMarket.sol",
        "id": 3269,
        "nodeType": "ImportDirective",
        "scope": 3550,
        "sourceUnit": 3200,
        "src": "24:39:11",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 3286,
        "linearizedBaseContracts": [
          3286
        ],
        "name": "StandardMarketWithPriceLoggerData",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 3272,
            "name": "ONE",
            "nodeType": "VariableDeclaration",
            "scope": 3286,
            "src": "148:39:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 3270,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "148:4:11",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30783130303030303030303030303030303030",
              "id": 3271,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "168:19:11",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_18446744073709551616_by_1",
                "typeString": "int_const 18446744073709551616"
              },
              "value": "0x10000000000000000"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 3275,
            "name": "LONG",
            "nodeType": "VariableDeclaration",
            "scope": 3286,
            "src": "193:30:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint8",
              "typeString": "uint8"
            },
            "typeName": {
              "id": 3273,
              "name": "uint8",
              "nodeType": "ElementaryTypeName",
              "src": "193:5:11",
              "typeDescriptions": {
                "typeIdentifier": "t_uint8",
                "typeString": "uint8"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "31",
              "id": 3274,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "222:1:11",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_1_by_1",
                "typeString": "int_const 1"
              },
              "value": "1"
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 3277,
            "name": "startDate",
            "nodeType": "VariableDeclaration",
            "scope": 3286,
            "src": "261:21:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 3276,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "261:4:11",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 3279,
            "name": "endDate",
            "nodeType": "VariableDeclaration",
            "scope": 3286,
            "src": "288:19:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 3278,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "288:4:11",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 3281,
            "name": "lastTradeDate",
            "nodeType": "VariableDeclaration",
            "scope": 3286,
            "src": "313:25:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 3280,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "313:4:11",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 3283,
            "name": "lastTradePrice",
            "nodeType": "VariableDeclaration",
            "scope": 3286,
            "src": "344:26:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 3282,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "344:4:11",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 3285,
            "name": "priceIntegral",
            "nodeType": "VariableDeclaration",
            "scope": 3286,
            "src": "376:25:11",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 3284,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "376:4:11",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          }
        ],
        "scope": 3550,
        "src": "65:339:11"
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 3287,
              "name": "StandardMarketProxy",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2389,
              "src": "453:19:11",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_StandardMarketProxy_$2389",
                "typeString": "contract StandardMarketProxy"
              }
            },
            "id": 3288,
            "nodeType": "InheritanceSpecifier",
            "src": "453:19:11"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 3289,
              "name": "StandardMarketWithPriceLoggerData",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3286,
              "src": "474:33:11",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_StandardMarketWithPriceLoggerData_$3286",
                "typeString": "contract StandardMarketWithPriceLoggerData"
              }
            },
            "id": 3290,
            "nodeType": "InheritanceSpecifier",
            "src": "474:33:11"
          }
        ],
        "contractDependencies": [
          2230,
          2307,
          2389,
          3286,
          6798,
          6828
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 3351,
        "linearizedBaseContracts": [
          3351,
          3286,
          2389,
          2307,
          2230,
          6828,
          6798
        ],
        "name": "StandardMarketWithPriceLoggerProxy",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 3349,
              "nodeType": "Block",
              "src": "1024:442:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "id": 3317,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 3313,
                              "name": "eventContract",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2214,
                              "src": "1042:13:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Event_$392",
                                "typeString": "contract Event"
                              }
                            },
                            "id": 3314,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getOutcomeCount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 331,
                            "src": "1042:29:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$",
                              "typeString": "function () view external returns (uint8)"
                            }
                          },
                          "id": 3315,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1042:31:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "32",
                          "id": 3316,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1077:1:11",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_2_by_1",
                            "typeString": "int_const 2"
                          },
                          "value": "2"
                        },
                        "src": "1042:36:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 3312,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7923,
                        7924
                      ],
                      "referencedDeclaration": 7923,
                      "src": "1034:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 3318,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1034:45:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3319,
                  "nodeType": "ExpressionStatement",
                  "src": "1034:45:11"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3322,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3320,
                      "name": "_startDate",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3302,
                      "src": "1094:10:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3321,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1108:1:11",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "1094:15:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 3337,
                    "nodeType": "Block",
                    "src": "1153:154:11",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3330,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 3328,
                                "name": "_startDate",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3302,
                                "src": "1242:10:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 3329,
                                "name": "now",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7922,
                                "src": "1256:3:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1242:17:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 3327,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              7923,
                              7924
                            ],
                            "referencedDeclaration": 7923,
                            "src": "1234:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 3331,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1234:26:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3332,
                        "nodeType": "ExpressionStatement",
                        "src": "1234:26:11"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3335,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3333,
                            "name": "startDate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3277,
                            "src": "1274:9:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 3334,
                            "name": "_startDate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3302,
                            "src": "1286:10:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1274:22:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3336,
                        "nodeType": "ExpressionStatement",
                        "src": "1274:22:11"
                      }
                    ]
                  },
                  "id": 3338,
                  "nodeType": "IfStatement",
                  "src": "1090:217:11",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 3325,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 3323,
                        "name": "startDate",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3277,
                        "src": "1123:9:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "id": 3324,
                        "name": "now",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7922,
                        "src": "1135:3:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "1123:15:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3326,
                    "nodeType": "ExpressionStatement",
                    "src": "1123:15:11"
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3341,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3339,
                      "name": "lastTradeDate",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3281,
                      "src": "1317:13:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3340,
                      "name": "startDate",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3277,
                      "src": "1333:9:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1317:25:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3342,
                  "nodeType": "ExpressionStatement",
                  "src": "1317:25:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3347,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3343,
                      "name": "lastTradePrice",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3283,
                      "src": "1435:14:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 3346,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 3344,
                        "name": "ONE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3272,
                        "src": "1452:3:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "/",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "32",
                        "id": 3345,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1458:1:11",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        },
                        "value": "2"
                      },
                      "src": "1452:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1435:24:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3348,
                  "nodeType": "ExpressionStatement",
                  "src": "1435:24:11"
                }
              ]
            },
            "documentation": "@dev Constructor validates and sets market properties\n @param _creator Market creator\n @param _eventContract Event contract\n @param _marketMaker Market maker contract\n @param _fee Market fee\n @param _startDate Start date for price logging",
            "id": 3350,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 3305,
                    "name": "proxied",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3292,
                    "src": "965:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 3306,
                    "name": "_creator",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3294,
                    "src": "974:8:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 3307,
                    "name": "_eventContract",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3296,
                    "src": "984:14:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Event_$392",
                      "typeString": "contract Event"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 3308,
                    "name": "_marketMaker",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3298,
                    "src": "1000:12:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MarketMaker_$1606",
                      "typeString": "contract MarketMaker"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 3309,
                    "name": "_fee",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3300,
                    "src": "1014:4:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint24",
                      "typeString": "uint24"
                    }
                  }
                ],
                "id": 3310,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 3304,
                  "name": "StandardMarketProxy",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2389,
                  "src": "945:19:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_StandardMarketProxy_$2389_$",
                    "typeString": "type(contract StandardMarketProxy)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "945:74:11"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3303,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3292,
                  "name": "proxied",
                  "nodeType": "VariableDeclaration",
                  "scope": 3350,
                  "src": "809:15:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3291,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "809:7:11",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3294,
                  "name": "_creator",
                  "nodeType": "VariableDeclaration",
                  "scope": 3350,
                  "src": "826:16:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3293,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "826:7:11",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3296,
                  "name": "_eventContract",
                  "nodeType": "VariableDeclaration",
                  "scope": 3350,
                  "src": "844:20:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Event_$392",
                    "typeString": "contract Event"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3295,
                    "name": "Event",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 392,
                    "src": "844:5:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Event_$392",
                      "typeString": "contract Event"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3298,
                  "name": "_marketMaker",
                  "nodeType": "VariableDeclaration",
                  "scope": 3350,
                  "src": "866:24:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_MarketMaker_$1606",
                    "typeString": "contract MarketMaker"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3297,
                    "name": "MarketMaker",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1606,
                    "src": "866:11:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MarketMaker_$1606",
                      "typeString": "contract MarketMaker"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3300,
                  "name": "_fee",
                  "nodeType": "VariableDeclaration",
                  "scope": 3350,
                  "src": "892:11:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint24",
                    "typeString": "uint24"
                  },
                  "typeName": {
                    "id": 3299,
                    "name": "uint24",
                    "nodeType": "ElementaryTypeName",
                    "src": "892:6:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint24",
                      "typeString": "uint24"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3302,
                  "name": "_startDate",
                  "nodeType": "VariableDeclaration",
                  "scope": 3350,
                  "src": "905:15:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3301,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "905:4:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "808:113:11"
            },
            "returnParameters": {
              "id": 3311,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1024:0:11"
            },
            "scope": 3351,
            "src": "797:669:11",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 3550,
        "src": "406:1062:11"
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 3352,
              "name": "StandardMarket",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3199,
              "src": "1512:14:11",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_StandardMarket_$3199",
                "typeString": "contract StandardMarket"
              }
            },
            "id": 3353,
            "nodeType": "InheritanceSpecifier",
            "src": "1512:14:11"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 3354,
              "name": "StandardMarketWithPriceLoggerData",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3286,
              "src": "1528:33:11",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_StandardMarketWithPriceLoggerData_$3286",
                "typeString": "contract StandardMarketWithPriceLoggerData"
              }
            },
            "id": 3355,
            "nodeType": "InheritanceSpecifier",
            "src": "1528:33:11"
          }
        ],
        "contractDependencies": [
          2230,
          2296,
          2307,
          3199,
          3286,
          6798
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 3549,
        "linearizedBaseContracts": [
          3549,
          3286,
          3199,
          2307,
          2296,
          2230,
          6798
        ],
        "name": "StandardMarketWithPriceLogger",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 3381,
              "nodeType": "Block",
              "src": "2052:131:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 3366,
                      "name": "logPriceBefore",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3532,
                      "src": "2062:14:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 3367,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2062:16:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3368,
                  "nodeType": "ExpressionStatement",
                  "src": "2062:16:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3376,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3369,
                      "name": "cost",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3364,
                      "src": "2088:4:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3372,
                          "name": "outcomeTokenIndex",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3357,
                          "src": "2105:17:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 3373,
                          "name": "outcomeTokenCount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3359,
                          "src": "2124:17:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 3374,
                          "name": "maxCost",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3361,
                          "src": "2143:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 3370,
                          "name": "super",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7999,
                          "src": "2095:5:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_super$_StandardMarketWithPriceLogger_$3549",
                            "typeString": "contract super StandardMarketWithPriceLogger"
                          }
                        },
                        "id": 3371,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "buy",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2671,
                        "src": "2095:9:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                          "typeString": "function (uint8,uint256,uint256) returns (uint256)"
                        }
                      },
                      "id": 3375,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2095:56:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2088:63:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3377,
                  "nodeType": "ExpressionStatement",
                  "src": "2088:63:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 3378,
                      "name": "logPriceAfter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3548,
                      "src": "2161:13:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 3379,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2161:15:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3380,
                  "nodeType": "ExpressionStatement",
                  "src": "2161:15:11"
                }
              ]
            },
            "documentation": "@dev Allows to buy outcome tokens from market maker\n @param outcomeTokenIndex Index of the outcome token to buy\n @param outcomeTokenCount Amount of outcome tokens to buy\n @param maxCost The maximum cost in collateral tokens to pay for outcome tokens\n @return Cost in collateral tokens",
            "id": 3382,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "buy",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3362,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3357,
                  "name": "outcomeTokenIndex",
                  "nodeType": "VariableDeclaration",
                  "scope": 3382,
                  "src": "1942:23:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 3356,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "1942:5:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3359,
                  "name": "outcomeTokenCount",
                  "nodeType": "VariableDeclaration",
                  "scope": 3382,
                  "src": "1967:22:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3358,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1967:4:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3361,
                  "name": "maxCost",
                  "nodeType": "VariableDeclaration",
                  "scope": 3382,
                  "src": "1991:12:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3360,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1991:4:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1941:63:11"
            },
            "returnParameters": {
              "id": 3365,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3364,
                  "name": "cost",
                  "nodeType": "VariableDeclaration",
                  "scope": 3382,
                  "src": "2037:9:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3363,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2037:4:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2036:11:11"
            },
            "scope": 3549,
            "src": "1929:254:11",
            "stateMutability": "nonpayable",
            "superFunction": 2671,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3408,
              "nodeType": "Block",
              "src": "2646:136:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 3393,
                      "name": "logPriceBefore",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3532,
                      "src": "2656:14:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 3394,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2656:16:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3395,
                  "nodeType": "ExpressionStatement",
                  "src": "2656:16:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3403,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3396,
                      "name": "profit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3391,
                      "src": "2682:6:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3399,
                          "name": "outcomeTokenIndex",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3384,
                          "src": "2702:17:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 3400,
                          "name": "outcomeTokenCount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3386,
                          "src": "2721:17:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 3401,
                          "name": "minProfit",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3388,
                          "src": "2740:9:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 3397,
                          "name": "super",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7999,
                          "src": "2691:5:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_super$_StandardMarketWithPriceLogger_$3549",
                            "typeString": "contract super StandardMarketWithPriceLogger"
                          }
                        },
                        "id": 3398,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sell",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2782,
                        "src": "2691:10:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                          "typeString": "function (uint8,uint256,uint256) returns (uint256)"
                        }
                      },
                      "id": 3402,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2691:59:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2682:68:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3404,
                  "nodeType": "ExpressionStatement",
                  "src": "2682:68:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 3405,
                      "name": "logPriceAfter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3548,
                      "src": "2760:13:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 3406,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2760:15:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3407,
                  "nodeType": "ExpressionStatement",
                  "src": "2760:15:11"
                }
              ]
            },
            "documentation": "@dev Allows to sell outcome tokens to market maker\n @param outcomeTokenIndex Index of the outcome token to sell\n @param outcomeTokenCount Amount of outcome tokens to sell\n @param minProfit The minimum profit in collateral tokens to earn for outcome tokens\n @return Profit in collateral tokens",
            "id": 3409,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "sell",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3389,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3384,
                  "name": "outcomeTokenIndex",
                  "nodeType": "VariableDeclaration",
                  "scope": 3409,
                  "src": "2532:23:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 3383,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "2532:5:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3386,
                  "name": "outcomeTokenCount",
                  "nodeType": "VariableDeclaration",
                  "scope": 3409,
                  "src": "2557:22:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3385,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2557:4:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3388,
                  "name": "minProfit",
                  "nodeType": "VariableDeclaration",
                  "scope": 3409,
                  "src": "2581:14:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3387,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2581:4:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2531:65:11"
            },
            "returnParameters": {
              "id": 3392,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3391,
                  "name": "profit",
                  "nodeType": "VariableDeclaration",
                  "scope": 3409,
                  "src": "2629:11:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3390,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2629:4:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2628:13:11"
            },
            "scope": 3549,
            "src": "2518:264:11",
            "stateMutability": "nonpayable",
            "superFunction": 2782,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3435,
              "nodeType": "Block",
              "src": "3382:139:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 3420,
                      "name": "logPriceBefore",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3532,
                      "src": "3392:14:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 3421,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3392:16:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3422,
                  "nodeType": "ExpressionStatement",
                  "src": "3392:16:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3430,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3423,
                      "name": "cost",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3418,
                      "src": "3418:4:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3426,
                          "name": "outcomeTokenIndex",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3411,
                          "src": "3441:17:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 3427,
                          "name": "outcomeTokenCount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3413,
                          "src": "3460:17:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 3428,
                          "name": "minProfit",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3415,
                          "src": "3479:9:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 3424,
                          "name": "super",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7999,
                          "src": "3425:5:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_super$_StandardMarketWithPriceLogger_$3549",
                            "typeString": "contract super StandardMarketWithPriceLogger"
                          }
                        },
                        "id": 3425,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "shortSell",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2903,
                        "src": "3425:15:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                          "typeString": "function (uint8,uint256,uint256) returns (uint256)"
                        }
                      },
                      "id": 3429,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3425:64:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3418:71:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3431,
                  "nodeType": "ExpressionStatement",
                  "src": "3418:71:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 3432,
                      "name": "logPriceAfter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3548,
                      "src": "3499:13:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 3433,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3499:15:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3434,
                  "nodeType": "ExpressionStatement",
                  "src": "3499:15:11"
                }
              ]
            },
            "documentation": "@dev Buys all outcomes, then sells all shares of selected outcome which were bought, keeping\n      shares of all other outcome tokens.\n @param outcomeTokenIndex Index of the outcome token to short sell\n @param outcomeTokenCount Amount of outcome tokens to short sell\n @param minProfit The minimum profit in collateral tokens to earn for short sold outcome tokens\n @return Cost to short sell outcome in collateral tokens",
            "id": 3436,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "shortSell",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3416,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3411,
                  "name": "outcomeTokenIndex",
                  "nodeType": "VariableDeclaration",
                  "scope": 3436,
                  "src": "3270:23:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 3410,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "3270:5:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3413,
                  "name": "outcomeTokenCount",
                  "nodeType": "VariableDeclaration",
                  "scope": 3436,
                  "src": "3295:22:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3412,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3295:4:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3415,
                  "name": "minProfit",
                  "nodeType": "VariableDeclaration",
                  "scope": 3436,
                  "src": "3319:14:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3414,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3319:4:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3269:65:11"
            },
            "returnParameters": {
              "id": 3419,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3418,
                  "name": "cost",
                  "nodeType": "VariableDeclaration",
                  "scope": 3436,
                  "src": "3367:9:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3417,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3367:4:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3366:11:11"
            },
            "scope": 3549,
            "src": "3251:270:11",
            "stateMutability": "nonpayable",
            "superFunction": 2903,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3460,
              "nodeType": "Block",
              "src": "3914:127:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 3446,
                      "name": "logPriceBefore",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3532,
                      "src": "3924:14:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 3447,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3924:16:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3448,
                  "nodeType": "ExpressionStatement",
                  "src": "3924:16:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3455,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3449,
                      "name": "netCost",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3444,
                      "src": "3950:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3452,
                          "name": "outcomeTokenAmounts",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3439,
                          "src": "3972:19:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_int256_$dyn_memory_ptr",
                            "typeString": "int256[] memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 3453,
                          "name": "collateralLimit",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3441,
                          "src": "3993:15:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_array$_t_int256_$dyn_memory_ptr",
                            "typeString": "int256[] memory"
                          },
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 3450,
                          "name": "super",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7999,
                          "src": "3960:5:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_super$_StandardMarketWithPriceLogger_$3549",
                            "typeString": "contract super StandardMarketWithPriceLogger"
                          }
                        },
                        "id": 3451,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "trade",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2956,
                        "src": "3960:11:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_int256_$dyn_memory_ptr_$_t_int256_$returns$_t_int256_$",
                          "typeString": "function (int256[] memory,int256) returns (int256)"
                        }
                      },
                      "id": 3454,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3960:49:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "3950:59:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 3456,
                  "nodeType": "ExpressionStatement",
                  "src": "3950:59:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 3457,
                      "name": "logPriceAfter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3548,
                      "src": "4019:13:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 3458,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4019:15:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3459,
                  "nodeType": "ExpressionStatement",
                  "src": "4019:15:11"
                }
              ]
            },
            "documentation": "@dev Allows to trade outcome tokens with market maker\n @param outcomeTokenAmounts Amounts of outcome tokens to trade\n @param collateralLimit The maximum cost or minimum profit in collateral tokens\n @return Cost/profit in collateral tokens",
            "id": 3461,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "trade",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3442,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3439,
                  "name": "outcomeTokenAmounts",
                  "nodeType": "VariableDeclaration",
                  "scope": 3461,
                  "src": "3810:32:11",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_int256_$dyn_memory_ptr",
                    "typeString": "int256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3437,
                      "name": "int",
                      "nodeType": "ElementaryTypeName",
                      "src": "3810:3:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "id": 3438,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "3810:5:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_int256_$dyn_storage_ptr",
                      "typeString": "int256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3441,
                  "name": "collateralLimit",
                  "nodeType": "VariableDeclaration",
                  "scope": 3461,
                  "src": "3844:19:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 3440,
                    "name": "int",
                    "nodeType": "ElementaryTypeName",
                    "src": "3844:3:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3809:55:11"
            },
            "returnParameters": {
              "id": 3445,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3444,
                  "name": "netCost",
                  "nodeType": "VariableDeclaration",
                  "scope": 3461,
                  "src": "3897:11:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 3443,
                    "name": "int",
                    "nodeType": "ElementaryTypeName",
                    "src": "3897:3:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3896:13:11"
            },
            "scope": 3549,
            "src": "3795:246:11",
            "stateMutability": "nonpayable",
            "superFunction": 2956,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3473,
              "nodeType": "Block",
              "src": "4200:53:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3466,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3464,
                      "name": "endDate",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3279,
                      "src": "4210:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3465,
                      "name": "now",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7922,
                      "src": "4220:3:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4210:13:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3467,
                  "nodeType": "ExpressionStatement",
                  "src": "4210:13:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 3468,
                        "name": "super",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7999,
                        "src": "4233:5:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_super$_StandardMarketWithPriceLogger_$3549",
                          "typeString": "contract super StandardMarketWithPriceLogger"
                        }
                      },
                      "id": 3470,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "close",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2533,
                      "src": "4233:11:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 3471,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4233:13:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3472,
                  "nodeType": "ExpressionStatement",
                  "src": "4233:13:11"
                }
              ]
            },
            "documentation": "@dev Allows market creator to close the markets by transferring all remaining outcome tokens to the creator",
            "id": 3474,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "close",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3462,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4178:2:11"
            },
            "returnParameters": {
              "id": 3463,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4200:0:11"
            },
            "scope": 3549,
            "src": "4164:89:11",
            "stateMutability": "nonpayable",
            "superFunction": 2533,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3513,
              "nodeType": "Block",
              "src": "4471:229:11",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3481,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3479,
                      "name": "endDate",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3279,
                      "src": "4484:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 3480,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4494:1:11",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "4484:11:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3497,
                  "nodeType": "IfStatement",
                  "src": "4481:119:11",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 3495,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3489,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 3482,
                              "name": "priceIntegral",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3285,
                              "src": "4517:13:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3488,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 3483,
                                "name": "lastTradePrice",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3283,
                                "src": "4533:14:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 3486,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 3484,
                                      "name": "endDate",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3279,
                                      "src": "4551:7:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 3485,
                                      "name": "lastTradeDate",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3281,
                                      "src": "4561:13:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "4551:23:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 3487,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "4550:25:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4533:42:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "4517:58:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "id": 3490,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "4516:60:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "/",
                      "rightExpression": {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3493,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 3491,
                              "name": "endDate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3279,
                              "src": "4580:7:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 3492,
                              "name": "startDate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3277,
                              "src": "4590:9:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "4580:19:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "id": 3494,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "4579:21:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "4516:84:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "functionReturnParameters": 3478,
                    "id": 3496,
                    "nodeType": "Return",
                    "src": "4509:91:11"
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3511,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3505,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3498,
                            "name": "priceIntegral",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3285,
                            "src": "4618:13:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3504,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 3499,
                              "name": "lastTradePrice",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3283,
                              "src": "4634:14:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 3502,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 3500,
                                    "name": "now",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7922,
                                    "src": "4652:3:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 3501,
                                    "name": "lastTradeDate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3281,
                                    "src": "4658:13:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "4652:19:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 3503,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "4651:21:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "4634:38:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4618:54:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 3506,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "4617:56:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "/",
                    "rightExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3509,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3507,
                            "name": "now",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7922,
                            "src": "4677:3:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 3508,
                            "name": "startDate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3277,
                            "src": "4683:9:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4677:15:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 3510,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "4676:17:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4617:76:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 3478,
                  "id": 3512,
                  "nodeType": "Return",
                  "src": "4610:83:11"
                }
              ]
            },
            "documentation": "@dev Calculates average price for long tokens based on price integral\n @return Average price for long tokens over time",
            "id": 3514,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getAvgPrice",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3475,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4413:2:11"
            },
            "returnParameters": {
              "id": 3478,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3477,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3514,
                  "src": "4461:4:11",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3476,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "4461:4:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4460:6:11"
            },
            "scope": 3549,
            "src": "4393:307:11",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3531,
              "nodeType": "Block",
              "src": "4875:185:11",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3519,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 3517,
                      "name": "now",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7922,
                      "src": "4889:3:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 3518,
                      "name": "startDate",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3277,
                      "src": "4896:9:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4889:16:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 3530,
                  "nodeType": "IfStatement",
                  "src": "4885:169:11",
                  "trueBody": {
                    "id": 3529,
                    "nodeType": "Block",
                    "src": "4907:147:11",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3527,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3520,
                            "name": "priceIntegral",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3285,
                            "src": "4988:13:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3526,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 3521,
                              "name": "lastTradePrice",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3283,
                              "src": "5005:14:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 3524,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 3522,
                                    "name": "now",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7922,
                                    "src": "5023:3:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 3523,
                                    "name": "lastTradeDate",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3281,
                                    "src": "5029:13:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "5023:19:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 3525,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "5022:21:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "5005:38:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4988:55:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3528,
                        "nodeType": "ExpressionStatement",
                        "src": "4988:55:11"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@dev Adds price integral since the last trade to the total price integral",
            "id": 3532,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logPriceBefore",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3515,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4852:2:11"
            },
            "returnParameters": {
              "id": 3516,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4875:0:11"
            },
            "scope": 3549,
            "src": "4829:231:11",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 3547,
              "nodeType": "Block",
              "src": "5163:257:11",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3541,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3535,
                      "name": "lastTradePrice",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3283,
                      "src": "5326:14:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 3538,
                          "name": "this",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7998,
                          "src": "5373:4:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_StandardMarketWithPriceLogger_$3549",
                            "typeString": "contract StandardMarketWithPriceLogger"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 3539,
                          "name": "LONG",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3275,
                          "src": "5379:4:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_StandardMarketWithPriceLogger_$3549",
                            "typeString": "contract StandardMarketWithPriceLogger"
                          },
                          {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 3536,
                          "name": "marketMaker",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2216,
                          "src": "5343:11:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_MarketMaker_$1606",
                            "typeString": "contract MarketMaker"
                          }
                        },
                        "id": 3537,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "calcMarginalPrice",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1605,
                        "src": "5343:29:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_contract$_Market_$2296_$_t_uint8_$returns$_t_uint256_$",
                          "typeString": "function (contract Market,uint8) view external returns (uint256)"
                        }
                      },
                      "id": 3540,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5343:41:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5326:58:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3542,
                  "nodeType": "ExpressionStatement",
                  "src": "5326:58:11"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3545,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 3543,
                      "name": "lastTradeDate",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3281,
                      "src": "5394:13:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 3544,
                      "name": "now",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7922,
                      "src": "5410:3:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5394:19:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3546,
                  "nodeType": "ExpressionStatement",
                  "src": "5394:19:11"
                }
              ]
            },
            "documentation": "@dev Updates last trade timestamp and price",
            "id": 3548,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logPriceAfter",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3533,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5140:2:11"
            },
            "returnParameters": {
              "id": 3534,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5163:0:11"
            },
            "scope": 3549,
            "src": "5118:302:11",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "private"
          }
        ],
        "scope": 3550,
        "src": "1470:3952:11"
      }
    ],
    "src": "0:5423:11"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.6+commit.b259423e.Emscripten.clang"
  },
  "networks": {
    "3": {
      "events": {},
      "links": {},
      "address": "0xbd3bb2927651b4bfb01190928bf98d43906a44a9",
      "transactionHash": "0x89519491f99cb3bb1d072c8e3e7d8df3427ce3594a04f030a1b8d3bb656179b6"
    },
    "4": {
      "events": {},
      "links": {},
      "address": "0xf31bc1efacd625234e7bd718ba082815e3d86e47",
      "transactionHash": "0xc9286faa389c137fe84dcf31c32ae84f89fe5f6b0f9cd8e0b56307fdbd461b48"
    },
    "42": {
      "events": {},
      "links": {},
      "address": "0x6737a27096b11ba15272a50225f026c8a39faba6",
      "transactionHash": "0xedc8558085a6936287618b7b4bfe95a8a03f4c45dc41d748b79b0d177439c7cd"
    },
    "437894314312": {
      "events": {},
      "links": {},
      "address": "0xa57b8a5584442b467b4689f1144d269d096a3daf",
      "transactionHash": "0x37d08ecef39b9649f55de8a35212d237e57222a7cbcd29b04bb34f50b3f7483b"
    }
  },
  "schemaVersion": "3.0.11",
  "updatedAt": "2019-09-20T17:46:52.178Z",
  "devdoc": {
    "methods": {
      "buy(uint8,uint256,uint256)": {
        "details": "Allows to buy outcome tokens from market maker",
        "params": {
          "maxCost": "The maximum cost in collateral tokens to pay for outcome tokens",
          "outcomeTokenCount": "Amount of outcome tokens to buy",
          "outcomeTokenIndex": "Index of the outcome token to buy"
        },
        "return": "Cost in collateral tokens"
      },
      "calcMarketFee(uint256)": {
        "details": "Calculates fee to be paid to market maker",
        "params": {
          "outcomeTokenCost": "Cost for buying outcome tokens"
        },
        "return": "Fee for trade"
      },
      "close()": {
        "details": "Allows market creator to close the markets by transferring all remaining outcome tokens to the creator"
      },
      "fund(uint256)": {
        "details": "Allows to fund the market with collateral tokens converting them into outcome tokens",
        "params": {
          "_funding": "Funding amount"
        }
      },
      "getAvgPrice()": {
        "details": "Calculates average price for long tokens based on price integral",
        "return": "Average price for long tokens over time"
      },
      "sell(uint8,uint256,uint256)": {
        "details": "Allows to sell outcome tokens to market maker",
        "params": {
          "minProfit": "The minimum profit in collateral tokens to earn for outcome tokens",
          "outcomeTokenCount": "Amount of outcome tokens to sell",
          "outcomeTokenIndex": "Index of the outcome token to sell"
        },
        "return": "Profit in collateral tokens"
      },
      "shortSell(uint8,uint256,uint256)": {
        "details": "Buys all outcomes, then sells all shares of selected outcome which were bought, keeping      shares of all other outcome tokens.",
        "params": {
          "minProfit": "The minimum profit in collateral tokens to earn for short sold outcome tokens",
          "outcomeTokenCount": "Amount of outcome tokens to short sell",
          "outcomeTokenIndex": "Index of the outcome token to short sell"
        },
        "return": "Cost to short sell outcome in collateral tokens"
      },
      "trade(int256[],int256)": {
        "details": "Allows to trade outcome tokens with market maker",
        "params": {
          "collateralLimit": "The maximum cost or minimum profit in collateral tokens",
          "outcomeTokenAmounts": "Amounts of outcome tokens to trade"
        },
        "return": "Cost/profit in collateral tokens"
      },
      "withdrawFees()": {
        "details": "Allows market creator to withdraw fees generated by trades",
        "return": "Fee amount"
      }
    }
  },
  "userdoc": {
    "methods": {}
  }
}