{
  "contractName": "UniswapExchangeInterface",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "decimals",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "tokenAddress",
      "outputs": [
        {
          "name": "token",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "factoryAddress",
      "outputs": [
        {
          "name": "factory",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "min_liquidity",
          "type": "uint256"
        },
        {
          "name": "max_tokens",
          "type": "uint256"
        },
        {
          "name": "deadline",
          "type": "uint256"
        }
      ],
      "name": "addLiquidity",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": true,
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "amount",
          "type": "uint256"
        },
        {
          "name": "min_eth",
          "type": "uint256"
        },
        {
          "name": "min_tokens",
          "type": "uint256"
        },
        {
          "name": "deadline",
          "type": "uint256"
        }
      ],
      "name": "removeLiquidity",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        },
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "eth_sold",
          "type": "uint256"
        }
      ],
      "name": "getEthToTokenInputPrice",
      "outputs": [
        {
          "name": "tokens_bought",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "tokens_bought",
          "type": "uint256"
        }
      ],
      "name": "getEthToTokenOutputPrice",
      "outputs": [
        {
          "name": "eth_sold",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "tokens_sold",
          "type": "uint256"
        }
      ],
      "name": "getTokenToEthInputPrice",
      "outputs": [
        {
          "name": "eth_bought",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "eth_bought",
          "type": "uint256"
        }
      ],
      "name": "getTokenToEthOutputPrice",
      "outputs": [
        {
          "name": "tokens_sold",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "min_tokens",
          "type": "uint256"
        },
        {
          "name": "deadline",
          "type": "uint256"
        }
      ],
      "name": "ethToTokenSwapInput",
      "outputs": [
        {
          "name": "tokens_bought",
          "type": "uint256"
        }
      ],
      "payable": true,
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "min_tokens",
          "type": "uint256"
        },
        {
          "name": "deadline",
          "type": "uint256"
        },
        {
          "name": "recipient",
          "type": "address"
        }
      ],
      "name": "ethToTokenTransferInput",
      "outputs": [
        {
          "name": "tokens_bought",
          "type": "uint256"
        }
      ],
      "payable": true,
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "tokens_bought",
          "type": "uint256"
        },
        {
          "name": "deadline",
          "type": "uint256"
        }
      ],
      "name": "ethToTokenSwapOutput",
      "outputs": [
        {
          "name": "eth_sold",
          "type": "uint256"
        }
      ],
      "payable": true,
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "tokens_bought",
          "type": "uint256"
        },
        {
          "name": "deadline",
          "type": "uint256"
        },
        {
          "name": "recipient",
          "type": "address"
        }
      ],
      "name": "ethToTokenTransferOutput",
      "outputs": [
        {
          "name": "eth_sold",
          "type": "uint256"
        }
      ],
      "payable": true,
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "tokens_sold",
          "type": "uint256"
        },
        {
          "name": "min_eth",
          "type": "uint256"
        },
        {
          "name": "deadline",
          "type": "uint256"
        }
      ],
      "name": "tokenToEthSwapInput",
      "outputs": [
        {
          "name": "eth_bought",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "tokens_sold",
          "type": "uint256"
        },
        {
          "name": "min_eth",
          "type": "uint256"
        },
        {
          "name": "deadline",
          "type": "uint256"
        },
        {
          "name": "recipient",
          "type": "address"
        }
      ],
      "name": "tokenToEthTransferInput",
      "outputs": [
        {
          "name": "eth_bought",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "eth_bought",
          "type": "uint256"
        },
        {
          "name": "max_tokens",
          "type": "uint256"
        },
        {
          "name": "deadline",
          "type": "uint256"
        }
      ],
      "name": "tokenToEthSwapOutput",
      "outputs": [
        {
          "name": "tokens_sold",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "eth_bought",
          "type": "uint256"
        },
        {
          "name": "max_tokens",
          "type": "uint256"
        },
        {
          "name": "deadline",
          "type": "uint256"
        },
        {
          "name": "recipient",
          "type": "address"
        }
      ],
      "name": "tokenToEthTransferOutput",
      "outputs": [
        {
          "name": "tokens_sold",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "tokens_sold",
          "type": "uint256"
        },
        {
          "name": "min_tokens_bought",
          "type": "uint256"
        },
        {
          "name": "min_eth_bought",
          "type": "uint256"
        },
        {
          "name": "deadline",
          "type": "uint256"
        },
        {
          "name": "token_addr",
          "type": "address"
        }
      ],
      "name": "tokenToTokenSwapInput",
      "outputs": [
        {
          "name": "tokens_bought",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "tokens_sold",
          "type": "uint256"
        },
        {
          "name": "min_tokens_bought",
          "type": "uint256"
        },
        {
          "name": "min_eth_bought",
          "type": "uint256"
        },
        {
          "name": "deadline",
          "type": "uint256"
        },
        {
          "name": "recipient",
          "type": "address"
        },
        {
          "name": "token_addr",
          "type": "address"
        }
      ],
      "name": "tokenToTokenTransferInput",
      "outputs": [
        {
          "name": "tokens_bought",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "tokens_bought",
          "type": "uint256"
        },
        {
          "name": "max_tokens_sold",
          "type": "uint256"
        },
        {
          "name": "max_eth_sold",
          "type": "uint256"
        },
        {
          "name": "deadline",
          "type": "uint256"
        },
        {
          "name": "token_addr",
          "type": "address"
        }
      ],
      "name": "tokenToTokenSwapOutput",
      "outputs": [
        {
          "name": "tokens_sold",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "tokens_bought",
          "type": "uint256"
        },
        {
          "name": "max_tokens_sold",
          "type": "uint256"
        },
        {
          "name": "max_eth_sold",
          "type": "uint256"
        },
        {
          "name": "deadline",
          "type": "uint256"
        },
        {
          "name": "recipient",
          "type": "address"
        },
        {
          "name": "token_addr",
          "type": "address"
        }
      ],
      "name": "tokenToTokenTransferOutput",
      "outputs": [
        {
          "name": "tokens_sold",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "tokens_sold",
          "type": "uint256"
        },
        {
          "name": "min_tokens_bought",
          "type": "uint256"
        },
        {
          "name": "min_eth_bought",
          "type": "uint256"
        },
        {
          "name": "deadline",
          "type": "uint256"
        },
        {
          "name": "exchange_addr",
          "type": "address"
        }
      ],
      "name": "tokenToExchangeSwapInput",
      "outputs": [
        {
          "name": "tokens_bought",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "tokens_sold",
          "type": "uint256"
        },
        {
          "name": "min_tokens_bought",
          "type": "uint256"
        },
        {
          "name": "min_eth_bought",
          "type": "uint256"
        },
        {
          "name": "deadline",
          "type": "uint256"
        },
        {
          "name": "recipient",
          "type": "address"
        },
        {
          "name": "exchange_addr",
          "type": "address"
        }
      ],
      "name": "tokenToExchangeTransferInput",
      "outputs": [
        {
          "name": "tokens_bought",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "tokens_bought",
          "type": "uint256"
        },
        {
          "name": "max_tokens_sold",
          "type": "uint256"
        },
        {
          "name": "max_eth_sold",
          "type": "uint256"
        },
        {
          "name": "deadline",
          "type": "uint256"
        },
        {
          "name": "exchange_addr",
          "type": "address"
        }
      ],
      "name": "tokenToExchangeSwapOutput",
      "outputs": [
        {
          "name": "tokens_sold",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "tokens_bought",
          "type": "uint256"
        },
        {
          "name": "max_tokens_sold",
          "type": "uint256"
        },
        {
          "name": "max_eth_sold",
          "type": "uint256"
        },
        {
          "name": "deadline",
          "type": "uint256"
        },
        {
          "name": "recipient",
          "type": "address"
        },
        {
          "name": "exchange_addr",
          "type": "address"
        }
      ],
      "name": "tokenToExchangeTransferOutput",
      "outputs": [
        {
          "name": "tokens_sold",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_to",
          "type": "address"
        },
        {
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "transfer",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_from",
          "type": "address"
        },
        {
          "name": "_to",
          "type": "address"
        },
        {
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_spender",
          "type": "address"
        },
        {
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_owner",
          "type": "address"
        },
        {
          "name": "_spender",
          "type": "address"
        }
      ],
      "name": "allowance",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "token_addr",
          "type": "address"
        }
      ],
      "name": "setup",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x",
  "deployedBytecode": "0x",
  "sourceMap": "",
  "deployedSourceMap": "",
  "source": "pragma solidity >=0.4.24;\n\ncontract UniswapExchangeInterface {\n    // Address of ERC20 token sold on this exchange\n    function tokenAddress() external view returns (address token);\n    // Address of Uniswap Factory\n    function factoryAddress() external view returns (address factory);\n    // Provide Liquidity\n    function addLiquidity(uint256 min_liquidity, uint256 max_tokens, uint256 deadline) external payable returns (uint256);\n    function removeLiquidity(uint256 amount, uint256 min_eth, uint256 min_tokens, uint256 deadline) external returns (uint256, uint256);\n    // Get Prices\n    function getEthToTokenInputPrice(uint256 eth_sold) external view returns (uint256 tokens_bought);\n    function getEthToTokenOutputPrice(uint256 tokens_bought) external view returns (uint256 eth_sold);\n    function getTokenToEthInputPrice(uint256 tokens_sold) external view returns (uint256 eth_bought);\n    function getTokenToEthOutputPrice(uint256 eth_bought) external view returns (uint256 tokens_sold);\n    // Trade ETH to ERC20\n    function ethToTokenSwapInput(uint256 min_tokens, uint256 deadline) external payable returns (uint256  tokens_bought);\n    function ethToTokenTransferInput(uint256 min_tokens, uint256 deadline, address recipient) external payable returns (uint256  tokens_bought);\n    function ethToTokenSwapOutput(uint256 tokens_bought, uint256 deadline) external payable returns (uint256  eth_sold);\n    function ethToTokenTransferOutput(uint256 tokens_bought, uint256 deadline, address recipient) external payable returns (uint256  eth_sold);\n    // Trade ERC20 to ETH\n    function tokenToEthSwapInput(uint256 tokens_sold, uint256 min_eth, uint256 deadline) external returns (uint256  eth_bought);\n    function tokenToEthTransferInput(uint256 tokens_sold, uint256 min_eth, uint256 deadline, address recipient) external returns (uint256  eth_bought);\n    function tokenToEthSwapOutput(uint256 eth_bought, uint256 max_tokens, uint256 deadline) external returns (uint256  tokens_sold);\n    function tokenToEthTransferOutput(uint256 eth_bought, uint256 max_tokens, uint256 deadline, address recipient) external returns (uint256  tokens_sold);\n    // Trade ERC20 to ERC20\n    function tokenToTokenSwapInput(uint256 tokens_sold, uint256 min_tokens_bought, uint256 min_eth_bought, uint256 deadline, address token_addr) external returns (uint256  tokens_bought);\n    function tokenToTokenTransferInput(uint256 tokens_sold, uint256 min_tokens_bought, uint256 min_eth_bought, uint256 deadline, address recipient, address token_addr) external returns (uint256  tokens_bought);\n    function tokenToTokenSwapOutput(uint256 tokens_bought, uint256 max_tokens_sold, uint256 max_eth_sold, uint256 deadline, address token_addr) external returns (uint256  tokens_sold);\n    function tokenToTokenTransferOutput(uint256 tokens_bought, uint256 max_tokens_sold, uint256 max_eth_sold, uint256 deadline, address recipient, address token_addr) external returns (uint256  tokens_sold);\n    // Trade ERC20 to Custom Pool\n    function tokenToExchangeSwapInput(uint256 tokens_sold, uint256 min_tokens_bought, uint256 min_eth_bought, uint256 deadline, address exchange_addr) external returns (uint256  tokens_bought);\n    function tokenToExchangeTransferInput(uint256 tokens_sold, uint256 min_tokens_bought, uint256 min_eth_bought, uint256 deadline, address recipient, address exchange_addr) external returns (uint256  tokens_bought);\n    function tokenToExchangeSwapOutput(uint256 tokens_bought, uint256 max_tokens_sold, uint256 max_eth_sold, uint256 deadline, address exchange_addr) external returns (uint256  tokens_sold);\n    function tokenToExchangeTransferOutput(uint256 tokens_bought, uint256 max_tokens_sold, uint256 max_eth_sold, uint256 deadline, address recipient, address exchange_addr) external returns (uint256  tokens_sold);\n    // ERC20 comaptibility for liquidity tokens\n    bytes32 public name;\n    bytes32 public symbol;\n    uint256 public decimals;\n    function transfer(address _to, uint256 _value) external returns (bool);\n    function transferFrom(address _from, address _to, uint256 value) external returns (bool);\n    function approve(address _spender, uint256 _value) external returns (bool);\n    function allowance(address _owner, address _spender) external view returns (uint256);\n    function balanceOf(address _owner) external view returns (uint256);\n    function totalSupply() external view returns (uint256);\n    // Never use\n    function setup(address token_addr) external;\n}\n",
  "sourcePath": "/Users/mfcalvanese/dev/eth/token-price-oracles/contracts/ExchangeAdapters/Uniswap/UniswapExchangeInterface.sol",
  "ast": {
    "absolutePath": "/Users/mfcalvanese/dev/eth/token-price-oracles/contracts/ExchangeAdapters/Uniswap/UniswapExchangeInterface.sol",
    "exportedSymbols": {
      "UniswapExchangeInterface": [
        984
      ]
    },
    "id": 985,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 642,
        "literals": [
          "solidity",
          ">=",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:25:4"
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": false,
        "id": 984,
        "linearizedBaseContracts": [
          984
        ],
        "name": "UniswapExchangeInterface",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": null,
            "documentation": null,
            "id": 647,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "tokenAddress",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 643,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "140:2:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 646,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 645,
                  "name": "token",
                  "nodeType": "VariableDeclaration",
                  "scope": 647,
                  "src": "166:13:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 644,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "166:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "165:15:4"
            },
            "scope": 984,
            "src": "119:62:4",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 652,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "factoryAddress",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 648,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "243:2:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 651,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 650,
                  "name": "factory",
                  "nodeType": "VariableDeclaration",
                  "scope": 652,
                  "src": "269:15:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 649,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "269:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "268:17:4"
            },
            "scope": 984,
            "src": "220:66:4",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 663,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "addLiquidity",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 659,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 654,
                  "name": "min_liquidity",
                  "nodeType": "VariableDeclaration",
                  "scope": 663,
                  "src": "338:21:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 653,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "338:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 656,
                  "name": "max_tokens",
                  "nodeType": "VariableDeclaration",
                  "scope": 663,
                  "src": "361:18:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 655,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "361:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 658,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 663,
                  "src": "381:16:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 657,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "381:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "337:61:4"
            },
            "payable": true,
            "returnParameters": {
              "id": 662,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 661,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 663,
                  "src": "425:7:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 660,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "425:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "424:9:4"
            },
            "scope": 984,
            "src": "316:118:4",
            "stateMutability": "payable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 678,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "removeLiquidity",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 672,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 665,
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 678,
                  "src": "464:14:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 664,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "464:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 667,
                  "name": "min_eth",
                  "nodeType": "VariableDeclaration",
                  "scope": 678,
                  "src": "480:15:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 666,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "480:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 669,
                  "name": "min_tokens",
                  "nodeType": "VariableDeclaration",
                  "scope": 678,
                  "src": "497:18:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 668,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "497:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 671,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 678,
                  "src": "517:16:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 670,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "517:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "463:71:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 677,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 674,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 678,
                  "src": "553:7:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 673,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "553:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 676,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 678,
                  "src": "562:7:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 675,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "562:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "552:18:4"
            },
            "scope": 984,
            "src": "439:132:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 685,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getEthToTokenInputPrice",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 681,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 680,
                  "name": "eth_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 685,
                  "src": "627:16:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 679,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "627:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "626:18:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 684,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 683,
                  "name": "tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 685,
                  "src": "668:21:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 682,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "668:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "667:23:4"
            },
            "scope": 984,
            "src": "594:97:4",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 692,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getEthToTokenOutputPrice",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 688,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 687,
                  "name": "tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 692,
                  "src": "730:21:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 686,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "730:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "729:23:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 691,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 690,
                  "name": "eth_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 692,
                  "src": "776:16:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 689,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "776:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "775:18:4"
            },
            "scope": 984,
            "src": "696:98:4",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 699,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getTokenToEthInputPrice",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 695,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 694,
                  "name": "tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 699,
                  "src": "832:19:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 693,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "832:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "831:21:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 698,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 697,
                  "name": "eth_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 699,
                  "src": "876:18:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 696,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "876:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "875:20:4"
            },
            "scope": 984,
            "src": "799:97:4",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 706,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getTokenToEthOutputPrice",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 702,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 701,
                  "name": "eth_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 706,
                  "src": "935:18:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 700,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "935:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "934:20:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 705,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 704,
                  "name": "tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 706,
                  "src": "978:19:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 703,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "978:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "977:21:4"
            },
            "scope": 984,
            "src": "901:98:4",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 715,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "ethToTokenSwapInput",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 711,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 708,
                  "name": "min_tokens",
                  "nodeType": "VariableDeclaration",
                  "scope": 715,
                  "src": "1059:18:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 707,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1059:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 710,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 715,
                  "src": "1079:16:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 709,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1079:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1058:38:4"
            },
            "payable": true,
            "returnParameters": {
              "id": 714,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 713,
                  "name": "tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 715,
                  "src": "1123:22:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 712,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1123:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1122:24:4"
            },
            "scope": 984,
            "src": "1030:117:4",
            "stateMutability": "payable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 726,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "ethToTokenTransferInput",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 722,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 717,
                  "name": "min_tokens",
                  "nodeType": "VariableDeclaration",
                  "scope": 726,
                  "src": "1185:18:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 716,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1185:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 719,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 726,
                  "src": "1205:16:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 718,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1205:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 721,
                  "name": "recipient",
                  "nodeType": "VariableDeclaration",
                  "scope": 726,
                  "src": "1223:17:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 720,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1223:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1184:57:4"
            },
            "payable": true,
            "returnParameters": {
              "id": 725,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 724,
                  "name": "tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 726,
                  "src": "1268:22:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 723,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1268:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1267:24:4"
            },
            "scope": 984,
            "src": "1152:140:4",
            "stateMutability": "payable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 735,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "ethToTokenSwapOutput",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 731,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 728,
                  "name": "tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 735,
                  "src": "1327:21:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 727,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1327:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 730,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 735,
                  "src": "1350:16:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 729,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1350:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1326:41:4"
            },
            "payable": true,
            "returnParameters": {
              "id": 734,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 733,
                  "name": "eth_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 735,
                  "src": "1394:17:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 732,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1394:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1393:19:4"
            },
            "scope": 984,
            "src": "1297:116:4",
            "stateMutability": "payable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 746,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "ethToTokenTransferOutput",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 742,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 737,
                  "name": "tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 746,
                  "src": "1452:21:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 736,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1452:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 739,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 746,
                  "src": "1475:16:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 738,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1475:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 741,
                  "name": "recipient",
                  "nodeType": "VariableDeclaration",
                  "scope": 746,
                  "src": "1493:17:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 740,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1493:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1451:60:4"
            },
            "payable": true,
            "returnParameters": {
              "id": 745,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 744,
                  "name": "eth_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 746,
                  "src": "1538:17:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 743,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1538:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1537:19:4"
            },
            "scope": 984,
            "src": "1418:139:4",
            "stateMutability": "payable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 757,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "tokenToEthSwapInput",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 753,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 748,
                  "name": "tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 757,
                  "src": "1617:19:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 747,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1617:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 750,
                  "name": "min_eth",
                  "nodeType": "VariableDeclaration",
                  "scope": 757,
                  "src": "1638:15:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 749,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1638:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 752,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 757,
                  "src": "1655:16:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 751,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1655:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1616:56:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 756,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 755,
                  "name": "eth_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 757,
                  "src": "1691:19:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 754,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1691:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1690:21:4"
            },
            "scope": 984,
            "src": "1588:124:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 770,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "tokenToEthTransferInput",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 766,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 759,
                  "name": "tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 770,
                  "src": "1750:19:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 758,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1750:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 761,
                  "name": "min_eth",
                  "nodeType": "VariableDeclaration",
                  "scope": 770,
                  "src": "1771:15:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 760,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1771:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 763,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 770,
                  "src": "1788:16:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 762,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1788:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 765,
                  "name": "recipient",
                  "nodeType": "VariableDeclaration",
                  "scope": 770,
                  "src": "1806:17:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 764,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1806:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1749:75:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 769,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 768,
                  "name": "eth_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 770,
                  "src": "1843:19:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 767,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1843:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1842:21:4"
            },
            "scope": 984,
            "src": "1717:147:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 781,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "tokenToEthSwapOutput",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 777,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 772,
                  "name": "eth_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 781,
                  "src": "1899:18:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 771,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1899:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 774,
                  "name": "max_tokens",
                  "nodeType": "VariableDeclaration",
                  "scope": 781,
                  "src": "1919:18:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 773,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1919:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 776,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 781,
                  "src": "1939:16:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 775,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1939:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1898:58:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 780,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 779,
                  "name": "tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 781,
                  "src": "1975:20:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 778,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1975:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1974:22:4"
            },
            "scope": 984,
            "src": "1869:128:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 794,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "tokenToEthTransferOutput",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 790,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 783,
                  "name": "eth_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 794,
                  "src": "2036:18:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 782,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2036:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 785,
                  "name": "max_tokens",
                  "nodeType": "VariableDeclaration",
                  "scope": 794,
                  "src": "2056:18:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 784,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2056:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 787,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 794,
                  "src": "2076:16:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 786,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2076:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 789,
                  "name": "recipient",
                  "nodeType": "VariableDeclaration",
                  "scope": 794,
                  "src": "2094:17:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 788,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2094:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2035:77:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 793,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 792,
                  "name": "tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 794,
                  "src": "2131:20:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 791,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2131:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2130:22:4"
            },
            "scope": 984,
            "src": "2002:151:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 809,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "tokenToTokenSwapInput",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 805,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 796,
                  "name": "tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 809,
                  "src": "2217:19:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 795,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2217:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 798,
                  "name": "min_tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 809,
                  "src": "2238:25:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 797,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2238:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 800,
                  "name": "min_eth_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 809,
                  "src": "2265:22:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 799,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2265:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 802,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 809,
                  "src": "2289:16:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 801,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2289:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 804,
                  "name": "token_addr",
                  "nodeType": "VariableDeclaration",
                  "scope": 809,
                  "src": "2307:18:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 803,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2307:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2216:110:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 808,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 807,
                  "name": "tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 809,
                  "src": "2345:22:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 806,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2345:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2344:24:4"
            },
            "scope": 984,
            "src": "2186:183:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 826,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "tokenToTokenTransferInput",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 822,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 811,
                  "name": "tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 826,
                  "src": "2409:19:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 810,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2409:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 813,
                  "name": "min_tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 826,
                  "src": "2430:25:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 812,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2430:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 815,
                  "name": "min_eth_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 826,
                  "src": "2457:22:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 814,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2457:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 817,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 826,
                  "src": "2481:16:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 816,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2481:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 819,
                  "name": "recipient",
                  "nodeType": "VariableDeclaration",
                  "scope": 826,
                  "src": "2499:17:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 818,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2499:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 821,
                  "name": "token_addr",
                  "nodeType": "VariableDeclaration",
                  "scope": 826,
                  "src": "2518:18:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 820,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2518:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2408:129:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 825,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 824,
                  "name": "tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 826,
                  "src": "2556:22:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 823,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2556:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2555:24:4"
            },
            "scope": 984,
            "src": "2374:206:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 841,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "tokenToTokenSwapOutput",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 837,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 828,
                  "name": "tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 841,
                  "src": "2617:21:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 827,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2617:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 830,
                  "name": "max_tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 841,
                  "src": "2640:23:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 829,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2640:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 832,
                  "name": "max_eth_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 841,
                  "src": "2665:20:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 831,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2665:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 834,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 841,
                  "src": "2687:16:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 833,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2687:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 836,
                  "name": "token_addr",
                  "nodeType": "VariableDeclaration",
                  "scope": 841,
                  "src": "2705:18:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 835,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2705:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2616:108:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 840,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 839,
                  "name": "tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 841,
                  "src": "2743:20:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 838,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2743:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2742:22:4"
            },
            "scope": 984,
            "src": "2585:180:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 858,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "tokenToTokenTransferOutput",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 854,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 843,
                  "name": "tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 858,
                  "src": "2806:21:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 842,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2806:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 845,
                  "name": "max_tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 858,
                  "src": "2829:23:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 844,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2829:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 847,
                  "name": "max_eth_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 858,
                  "src": "2854:20:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 846,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2854:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 849,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 858,
                  "src": "2876:16:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 848,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2876:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 851,
                  "name": "recipient",
                  "nodeType": "VariableDeclaration",
                  "scope": 858,
                  "src": "2894:17:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 850,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2894:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 853,
                  "name": "token_addr",
                  "nodeType": "VariableDeclaration",
                  "scope": 858,
                  "src": "2913:18:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 852,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2913:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2805:127:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 857,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 856,
                  "name": "tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 858,
                  "src": "2951:20:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 855,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2951:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2950:22:4"
            },
            "scope": 984,
            "src": "2770:203:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 873,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "tokenToExchangeSwapInput",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 869,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 860,
                  "name": "tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 873,
                  "src": "3046:19:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 859,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3046:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 862,
                  "name": "min_tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 873,
                  "src": "3067:25:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 861,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3067:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 864,
                  "name": "min_eth_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 873,
                  "src": "3094:22:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 863,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3094:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 866,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 873,
                  "src": "3118:16:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 865,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3118:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 868,
                  "name": "exchange_addr",
                  "nodeType": "VariableDeclaration",
                  "scope": 873,
                  "src": "3136:21:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 867,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3136:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3045:113:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 872,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 871,
                  "name": "tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 873,
                  "src": "3177:22:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 870,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3177:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3176:24:4"
            },
            "scope": 984,
            "src": "3012:189:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 890,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "tokenToExchangeTransferInput",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 886,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 875,
                  "name": "tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 890,
                  "src": "3244:19:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 874,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3244:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 877,
                  "name": "min_tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 890,
                  "src": "3265:25:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 876,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3265:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 879,
                  "name": "min_eth_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 890,
                  "src": "3292:22:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 878,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3292:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 881,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 890,
                  "src": "3316:16:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 880,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3316:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 883,
                  "name": "recipient",
                  "nodeType": "VariableDeclaration",
                  "scope": 890,
                  "src": "3334:17:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 882,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3334:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 885,
                  "name": "exchange_addr",
                  "nodeType": "VariableDeclaration",
                  "scope": 890,
                  "src": "3353:21:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 884,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3353:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3243:132:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 889,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 888,
                  "name": "tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 890,
                  "src": "3394:22:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 887,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3394:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3393:24:4"
            },
            "scope": 984,
            "src": "3206:212:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 905,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "tokenToExchangeSwapOutput",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 901,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 892,
                  "name": "tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 905,
                  "src": "3458:21:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 891,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3458:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 894,
                  "name": "max_tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 905,
                  "src": "3481:23:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 893,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3481:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 896,
                  "name": "max_eth_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 905,
                  "src": "3506:20:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 895,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3506:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 898,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 905,
                  "src": "3528:16:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 897,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3528:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 900,
                  "name": "exchange_addr",
                  "nodeType": "VariableDeclaration",
                  "scope": 905,
                  "src": "3546:21:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 899,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3546:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3457:111:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 904,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 903,
                  "name": "tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 905,
                  "src": "3587:20:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 902,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3587:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3586:22:4"
            },
            "scope": 984,
            "src": "3423:186:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 922,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "tokenToExchangeTransferOutput",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 918,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 907,
                  "name": "tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 922,
                  "src": "3653:21:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 906,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3653:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 909,
                  "name": "max_tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 922,
                  "src": "3676:23:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 908,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3676:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 911,
                  "name": "max_eth_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 922,
                  "src": "3701:20:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 910,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3701:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 913,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 922,
                  "src": "3723:16:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 912,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3723:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 915,
                  "name": "recipient",
                  "nodeType": "VariableDeclaration",
                  "scope": 922,
                  "src": "3741:17:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 914,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3741:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 917,
                  "name": "exchange_addr",
                  "nodeType": "VariableDeclaration",
                  "scope": 922,
                  "src": "3760:21:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 916,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3760:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3652:130:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 921,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 920,
                  "name": "tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 922,
                  "src": "3801:20:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 919,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3801:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3800:22:4"
            },
            "scope": 984,
            "src": "3614:209:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "constant": false,
            "id": 924,
            "name": "name",
            "nodeType": "VariableDeclaration",
            "scope": 984,
            "src": "3876:19:4",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 923,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "3876:7:4",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 926,
            "name": "symbol",
            "nodeType": "VariableDeclaration",
            "scope": 984,
            "src": "3901:21:4",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 925,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "3901:7:4",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 928,
            "name": "decimals",
            "nodeType": "VariableDeclaration",
            "scope": 984,
            "src": "3928:23:4",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 927,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "3928:7:4",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": null,
            "documentation": null,
            "id": 937,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "transfer",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 933,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 930,
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 937,
                  "src": "3975:11:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 929,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3975:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 932,
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 937,
                  "src": "3988:14:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 931,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3988:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3974:29:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 936,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 935,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 937,
                  "src": "4022:4:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 934,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4022:4:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4021:6:4"
            },
            "scope": 984,
            "src": "3957:71:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 948,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "transferFrom",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 944,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 939,
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 948,
                  "src": "4055:13:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 938,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4055:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 941,
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 948,
                  "src": "4070:11:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 940,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4070:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 943,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 948,
                  "src": "4083:13:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 942,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4083:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4054:43:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 947,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 946,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 948,
                  "src": "4116:4:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 945,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4116:4:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4115:6:4"
            },
            "scope": 984,
            "src": "4033:89:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 957,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "approve",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 953,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 950,
                  "name": "_spender",
                  "nodeType": "VariableDeclaration",
                  "scope": 957,
                  "src": "4144:16:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 949,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4144:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 952,
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 957,
                  "src": "4162:14:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 951,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4162:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4143:34:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 956,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 955,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 957,
                  "src": "4196:4:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 954,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4196:4:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4195:6:4"
            },
            "scope": 984,
            "src": "4127:75:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 966,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "allowance",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 962,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 959,
                  "name": "_owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 966,
                  "src": "4226:14:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 958,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4226:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 961,
                  "name": "_spender",
                  "nodeType": "VariableDeclaration",
                  "scope": 966,
                  "src": "4242:16:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 960,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4242:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4225:34:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 965,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 964,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 966,
                  "src": "4283:7:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 963,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4283:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4282:9:4"
            },
            "scope": 984,
            "src": "4207:85:4",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 973,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "balanceOf",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 969,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 968,
                  "name": "_owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 973,
                  "src": "4316:14:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 967,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4316:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4315:16:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 972,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 971,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 973,
                  "src": "4355:7:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 970,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4355:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4354:9:4"
            },
            "scope": 984,
            "src": "4297:67:4",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 978,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "totalSupply",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 974,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4389:2:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 977,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 976,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 978,
                  "src": "4415:7:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 975,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4415:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4414:9:4"
            },
            "scope": 984,
            "src": "4369:55:4",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 983,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "setup",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 981,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 980,
                  "name": "token_addr",
                  "nodeType": "VariableDeclaration",
                  "scope": 983,
                  "src": "4461:18:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 979,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4461:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4460:20:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 982,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4489:0:4"
            },
            "scope": 984,
            "src": "4446:44:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          }
        ],
        "scope": 985,
        "src": "27:4465:4"
      }
    ],
    "src": "0:4493:4"
  },
  "legacyAST": {
    "absolutePath": "/Users/mfcalvanese/dev/eth/token-price-oracles/contracts/ExchangeAdapters/Uniswap/UniswapExchangeInterface.sol",
    "exportedSymbols": {
      "UniswapExchangeInterface": [
        984
      ]
    },
    "id": 985,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 642,
        "literals": [
          "solidity",
          ">=",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:25:4"
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": false,
        "id": 984,
        "linearizedBaseContracts": [
          984
        ],
        "name": "UniswapExchangeInterface",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": null,
            "documentation": null,
            "id": 647,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "tokenAddress",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 643,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "140:2:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 646,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 645,
                  "name": "token",
                  "nodeType": "VariableDeclaration",
                  "scope": 647,
                  "src": "166:13:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 644,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "166:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "165:15:4"
            },
            "scope": 984,
            "src": "119:62:4",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 652,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "factoryAddress",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 648,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "243:2:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 651,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 650,
                  "name": "factory",
                  "nodeType": "VariableDeclaration",
                  "scope": 652,
                  "src": "269:15:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 649,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "269:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "268:17:4"
            },
            "scope": 984,
            "src": "220:66:4",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 663,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "addLiquidity",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 659,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 654,
                  "name": "min_liquidity",
                  "nodeType": "VariableDeclaration",
                  "scope": 663,
                  "src": "338:21:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 653,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "338:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 656,
                  "name": "max_tokens",
                  "nodeType": "VariableDeclaration",
                  "scope": 663,
                  "src": "361:18:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 655,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "361:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 658,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 663,
                  "src": "381:16:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 657,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "381:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "337:61:4"
            },
            "payable": true,
            "returnParameters": {
              "id": 662,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 661,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 663,
                  "src": "425:7:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 660,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "425:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "424:9:4"
            },
            "scope": 984,
            "src": "316:118:4",
            "stateMutability": "payable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 678,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "removeLiquidity",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 672,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 665,
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 678,
                  "src": "464:14:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 664,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "464:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 667,
                  "name": "min_eth",
                  "nodeType": "VariableDeclaration",
                  "scope": 678,
                  "src": "480:15:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 666,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "480:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 669,
                  "name": "min_tokens",
                  "nodeType": "VariableDeclaration",
                  "scope": 678,
                  "src": "497:18:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 668,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "497:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 671,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 678,
                  "src": "517:16:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 670,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "517:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "463:71:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 677,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 674,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 678,
                  "src": "553:7:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 673,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "553:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 676,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 678,
                  "src": "562:7:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 675,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "562:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "552:18:4"
            },
            "scope": 984,
            "src": "439:132:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 685,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getEthToTokenInputPrice",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 681,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 680,
                  "name": "eth_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 685,
                  "src": "627:16:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 679,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "627:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "626:18:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 684,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 683,
                  "name": "tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 685,
                  "src": "668:21:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 682,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "668:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "667:23:4"
            },
            "scope": 984,
            "src": "594:97:4",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 692,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getEthToTokenOutputPrice",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 688,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 687,
                  "name": "tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 692,
                  "src": "730:21:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 686,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "730:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "729:23:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 691,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 690,
                  "name": "eth_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 692,
                  "src": "776:16:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 689,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "776:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "775:18:4"
            },
            "scope": 984,
            "src": "696:98:4",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 699,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getTokenToEthInputPrice",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 695,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 694,
                  "name": "tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 699,
                  "src": "832:19:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 693,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "832:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "831:21:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 698,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 697,
                  "name": "eth_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 699,
                  "src": "876:18:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 696,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "876:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "875:20:4"
            },
            "scope": 984,
            "src": "799:97:4",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 706,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getTokenToEthOutputPrice",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 702,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 701,
                  "name": "eth_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 706,
                  "src": "935:18:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 700,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "935:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "934:20:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 705,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 704,
                  "name": "tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 706,
                  "src": "978:19:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 703,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "978:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "977:21:4"
            },
            "scope": 984,
            "src": "901:98:4",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 715,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "ethToTokenSwapInput",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 711,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 708,
                  "name": "min_tokens",
                  "nodeType": "VariableDeclaration",
                  "scope": 715,
                  "src": "1059:18:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 707,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1059:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 710,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 715,
                  "src": "1079:16:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 709,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1079:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1058:38:4"
            },
            "payable": true,
            "returnParameters": {
              "id": 714,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 713,
                  "name": "tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 715,
                  "src": "1123:22:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 712,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1123:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1122:24:4"
            },
            "scope": 984,
            "src": "1030:117:4",
            "stateMutability": "payable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 726,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "ethToTokenTransferInput",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 722,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 717,
                  "name": "min_tokens",
                  "nodeType": "VariableDeclaration",
                  "scope": 726,
                  "src": "1185:18:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 716,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1185:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 719,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 726,
                  "src": "1205:16:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 718,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1205:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 721,
                  "name": "recipient",
                  "nodeType": "VariableDeclaration",
                  "scope": 726,
                  "src": "1223:17:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 720,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1223:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1184:57:4"
            },
            "payable": true,
            "returnParameters": {
              "id": 725,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 724,
                  "name": "tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 726,
                  "src": "1268:22:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 723,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1268:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1267:24:4"
            },
            "scope": 984,
            "src": "1152:140:4",
            "stateMutability": "payable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 735,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "ethToTokenSwapOutput",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 731,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 728,
                  "name": "tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 735,
                  "src": "1327:21:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 727,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1327:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 730,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 735,
                  "src": "1350:16:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 729,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1350:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1326:41:4"
            },
            "payable": true,
            "returnParameters": {
              "id": 734,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 733,
                  "name": "eth_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 735,
                  "src": "1394:17:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 732,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1394:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1393:19:4"
            },
            "scope": 984,
            "src": "1297:116:4",
            "stateMutability": "payable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 746,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "ethToTokenTransferOutput",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 742,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 737,
                  "name": "tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 746,
                  "src": "1452:21:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 736,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1452:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 739,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 746,
                  "src": "1475:16:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 738,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1475:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 741,
                  "name": "recipient",
                  "nodeType": "VariableDeclaration",
                  "scope": 746,
                  "src": "1493:17:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 740,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1493:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1451:60:4"
            },
            "payable": true,
            "returnParameters": {
              "id": 745,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 744,
                  "name": "eth_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 746,
                  "src": "1538:17:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 743,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1538:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1537:19:4"
            },
            "scope": 984,
            "src": "1418:139:4",
            "stateMutability": "payable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 757,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "tokenToEthSwapInput",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 753,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 748,
                  "name": "tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 757,
                  "src": "1617:19:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 747,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1617:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 750,
                  "name": "min_eth",
                  "nodeType": "VariableDeclaration",
                  "scope": 757,
                  "src": "1638:15:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 749,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1638:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 752,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 757,
                  "src": "1655:16:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 751,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1655:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1616:56:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 756,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 755,
                  "name": "eth_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 757,
                  "src": "1691:19:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 754,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1691:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1690:21:4"
            },
            "scope": 984,
            "src": "1588:124:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 770,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "tokenToEthTransferInput",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 766,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 759,
                  "name": "tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 770,
                  "src": "1750:19:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 758,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1750:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 761,
                  "name": "min_eth",
                  "nodeType": "VariableDeclaration",
                  "scope": 770,
                  "src": "1771:15:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 760,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1771:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 763,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 770,
                  "src": "1788:16:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 762,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1788:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 765,
                  "name": "recipient",
                  "nodeType": "VariableDeclaration",
                  "scope": 770,
                  "src": "1806:17:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 764,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1806:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1749:75:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 769,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 768,
                  "name": "eth_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 770,
                  "src": "1843:19:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 767,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1843:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1842:21:4"
            },
            "scope": 984,
            "src": "1717:147:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 781,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "tokenToEthSwapOutput",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 777,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 772,
                  "name": "eth_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 781,
                  "src": "1899:18:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 771,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1899:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 774,
                  "name": "max_tokens",
                  "nodeType": "VariableDeclaration",
                  "scope": 781,
                  "src": "1919:18:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 773,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1919:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 776,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 781,
                  "src": "1939:16:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 775,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1939:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1898:58:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 780,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 779,
                  "name": "tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 781,
                  "src": "1975:20:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 778,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1975:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1974:22:4"
            },
            "scope": 984,
            "src": "1869:128:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 794,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "tokenToEthTransferOutput",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 790,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 783,
                  "name": "eth_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 794,
                  "src": "2036:18:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 782,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2036:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 785,
                  "name": "max_tokens",
                  "nodeType": "VariableDeclaration",
                  "scope": 794,
                  "src": "2056:18:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 784,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2056:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 787,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 794,
                  "src": "2076:16:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 786,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2076:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 789,
                  "name": "recipient",
                  "nodeType": "VariableDeclaration",
                  "scope": 794,
                  "src": "2094:17:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 788,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2094:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2035:77:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 793,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 792,
                  "name": "tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 794,
                  "src": "2131:20:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 791,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2131:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2130:22:4"
            },
            "scope": 984,
            "src": "2002:151:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 809,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "tokenToTokenSwapInput",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 805,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 796,
                  "name": "tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 809,
                  "src": "2217:19:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 795,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2217:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 798,
                  "name": "min_tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 809,
                  "src": "2238:25:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 797,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2238:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 800,
                  "name": "min_eth_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 809,
                  "src": "2265:22:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 799,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2265:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 802,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 809,
                  "src": "2289:16:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 801,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2289:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 804,
                  "name": "token_addr",
                  "nodeType": "VariableDeclaration",
                  "scope": 809,
                  "src": "2307:18:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 803,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2307:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2216:110:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 808,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 807,
                  "name": "tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 809,
                  "src": "2345:22:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 806,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2345:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2344:24:4"
            },
            "scope": 984,
            "src": "2186:183:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 826,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "tokenToTokenTransferInput",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 822,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 811,
                  "name": "tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 826,
                  "src": "2409:19:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 810,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2409:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 813,
                  "name": "min_tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 826,
                  "src": "2430:25:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 812,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2430:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 815,
                  "name": "min_eth_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 826,
                  "src": "2457:22:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 814,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2457:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 817,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 826,
                  "src": "2481:16:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 816,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2481:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 819,
                  "name": "recipient",
                  "nodeType": "VariableDeclaration",
                  "scope": 826,
                  "src": "2499:17:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 818,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2499:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 821,
                  "name": "token_addr",
                  "nodeType": "VariableDeclaration",
                  "scope": 826,
                  "src": "2518:18:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 820,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2518:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2408:129:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 825,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 824,
                  "name": "tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 826,
                  "src": "2556:22:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 823,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2556:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2555:24:4"
            },
            "scope": 984,
            "src": "2374:206:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 841,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "tokenToTokenSwapOutput",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 837,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 828,
                  "name": "tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 841,
                  "src": "2617:21:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 827,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2617:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 830,
                  "name": "max_tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 841,
                  "src": "2640:23:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 829,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2640:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 832,
                  "name": "max_eth_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 841,
                  "src": "2665:20:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 831,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2665:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 834,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 841,
                  "src": "2687:16:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 833,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2687:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 836,
                  "name": "token_addr",
                  "nodeType": "VariableDeclaration",
                  "scope": 841,
                  "src": "2705:18:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 835,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2705:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2616:108:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 840,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 839,
                  "name": "tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 841,
                  "src": "2743:20:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 838,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2743:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2742:22:4"
            },
            "scope": 984,
            "src": "2585:180:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 858,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "tokenToTokenTransferOutput",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 854,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 843,
                  "name": "tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 858,
                  "src": "2806:21:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 842,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2806:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 845,
                  "name": "max_tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 858,
                  "src": "2829:23:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 844,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2829:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 847,
                  "name": "max_eth_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 858,
                  "src": "2854:20:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 846,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2854:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 849,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 858,
                  "src": "2876:16:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 848,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2876:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 851,
                  "name": "recipient",
                  "nodeType": "VariableDeclaration",
                  "scope": 858,
                  "src": "2894:17:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 850,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2894:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 853,
                  "name": "token_addr",
                  "nodeType": "VariableDeclaration",
                  "scope": 858,
                  "src": "2913:18:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 852,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2913:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2805:127:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 857,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 856,
                  "name": "tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 858,
                  "src": "2951:20:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 855,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2951:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2950:22:4"
            },
            "scope": 984,
            "src": "2770:203:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 873,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "tokenToExchangeSwapInput",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 869,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 860,
                  "name": "tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 873,
                  "src": "3046:19:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 859,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3046:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 862,
                  "name": "min_tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 873,
                  "src": "3067:25:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 861,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3067:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 864,
                  "name": "min_eth_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 873,
                  "src": "3094:22:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 863,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3094:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 866,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 873,
                  "src": "3118:16:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 865,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3118:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 868,
                  "name": "exchange_addr",
                  "nodeType": "VariableDeclaration",
                  "scope": 873,
                  "src": "3136:21:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 867,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3136:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3045:113:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 872,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 871,
                  "name": "tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 873,
                  "src": "3177:22:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 870,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3177:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3176:24:4"
            },
            "scope": 984,
            "src": "3012:189:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 890,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "tokenToExchangeTransferInput",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 886,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 875,
                  "name": "tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 890,
                  "src": "3244:19:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 874,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3244:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 877,
                  "name": "min_tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 890,
                  "src": "3265:25:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 876,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3265:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 879,
                  "name": "min_eth_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 890,
                  "src": "3292:22:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 878,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3292:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 881,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 890,
                  "src": "3316:16:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 880,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3316:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 883,
                  "name": "recipient",
                  "nodeType": "VariableDeclaration",
                  "scope": 890,
                  "src": "3334:17:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 882,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3334:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 885,
                  "name": "exchange_addr",
                  "nodeType": "VariableDeclaration",
                  "scope": 890,
                  "src": "3353:21:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 884,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3353:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3243:132:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 889,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 888,
                  "name": "tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 890,
                  "src": "3394:22:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 887,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3394:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3393:24:4"
            },
            "scope": 984,
            "src": "3206:212:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 905,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "tokenToExchangeSwapOutput",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 901,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 892,
                  "name": "tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 905,
                  "src": "3458:21:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 891,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3458:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 894,
                  "name": "max_tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 905,
                  "src": "3481:23:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 893,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3481:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 896,
                  "name": "max_eth_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 905,
                  "src": "3506:20:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 895,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3506:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 898,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 905,
                  "src": "3528:16:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 897,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3528:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 900,
                  "name": "exchange_addr",
                  "nodeType": "VariableDeclaration",
                  "scope": 905,
                  "src": "3546:21:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 899,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3546:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3457:111:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 904,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 903,
                  "name": "tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 905,
                  "src": "3587:20:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 902,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3587:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3586:22:4"
            },
            "scope": 984,
            "src": "3423:186:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 922,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "tokenToExchangeTransferOutput",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 918,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 907,
                  "name": "tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 922,
                  "src": "3653:21:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 906,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3653:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 909,
                  "name": "max_tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 922,
                  "src": "3676:23:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 908,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3676:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 911,
                  "name": "max_eth_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 922,
                  "src": "3701:20:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 910,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3701:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 913,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 922,
                  "src": "3723:16:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 912,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3723:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 915,
                  "name": "recipient",
                  "nodeType": "VariableDeclaration",
                  "scope": 922,
                  "src": "3741:17:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 914,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3741:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 917,
                  "name": "exchange_addr",
                  "nodeType": "VariableDeclaration",
                  "scope": 922,
                  "src": "3760:21:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 916,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3760:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3652:130:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 921,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 920,
                  "name": "tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 922,
                  "src": "3801:20:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 919,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3801:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3800:22:4"
            },
            "scope": 984,
            "src": "3614:209:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "constant": false,
            "id": 924,
            "name": "name",
            "nodeType": "VariableDeclaration",
            "scope": 984,
            "src": "3876:19:4",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 923,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "3876:7:4",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 926,
            "name": "symbol",
            "nodeType": "VariableDeclaration",
            "scope": 984,
            "src": "3901:21:4",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 925,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "3901:7:4",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 928,
            "name": "decimals",
            "nodeType": "VariableDeclaration",
            "scope": 984,
            "src": "3928:23:4",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 927,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "3928:7:4",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": null,
            "documentation": null,
            "id": 937,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "transfer",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 933,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 930,
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 937,
                  "src": "3975:11:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 929,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3975:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 932,
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 937,
                  "src": "3988:14:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 931,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3988:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3974:29:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 936,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 935,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 937,
                  "src": "4022:4:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 934,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4022:4:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4021:6:4"
            },
            "scope": 984,
            "src": "3957:71:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 948,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "transferFrom",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 944,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 939,
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 948,
                  "src": "4055:13:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 938,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4055:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 941,
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 948,
                  "src": "4070:11:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 940,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4070:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 943,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 948,
                  "src": "4083:13:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 942,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4083:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4054:43:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 947,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 946,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 948,
                  "src": "4116:4:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 945,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4116:4:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4115:6:4"
            },
            "scope": 984,
            "src": "4033:89:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 957,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "approve",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 953,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 950,
                  "name": "_spender",
                  "nodeType": "VariableDeclaration",
                  "scope": 957,
                  "src": "4144:16:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 949,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4144:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 952,
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 957,
                  "src": "4162:14:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 951,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4162:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4143:34:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 956,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 955,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 957,
                  "src": "4196:4:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 954,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4196:4:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4195:6:4"
            },
            "scope": 984,
            "src": "4127:75:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 966,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "allowance",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 962,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 959,
                  "name": "_owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 966,
                  "src": "4226:14:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 958,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4226:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 961,
                  "name": "_spender",
                  "nodeType": "VariableDeclaration",
                  "scope": 966,
                  "src": "4242:16:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 960,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4242:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4225:34:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 965,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 964,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 966,
                  "src": "4283:7:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 963,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4283:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4282:9:4"
            },
            "scope": 984,
            "src": "4207:85:4",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 973,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "balanceOf",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 969,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 968,
                  "name": "_owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 973,
                  "src": "4316:14:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 967,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4316:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4315:16:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 972,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 971,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 973,
                  "src": "4355:7:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 970,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4355:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4354:9:4"
            },
            "scope": 984,
            "src": "4297:67:4",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 978,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "totalSupply",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 974,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4389:2:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 977,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 976,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 978,
                  "src": "4415:7:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 975,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4415:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4414:9:4"
            },
            "scope": 984,
            "src": "4369:55:4",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 983,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "setup",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 981,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 980,
                  "name": "token_addr",
                  "nodeType": "VariableDeclaration",
                  "scope": 983,
                  "src": "4461:18:4",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 979,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4461:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4460:20:4"
            },
            "payable": false,
            "returnParameters": {
              "id": 982,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4489:0:4"
            },
            "scope": 984,
            "src": "4446:44:4",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          }
        ],
        "scope": 985,
        "src": "27:4465:4"
      }
    ],
    "src": "0:4493:4"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.25+commit.59dbf8f1.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "2.0.2",
  "updatedAt": "2020-02-17T22:26:47.994Z"
}