UNPKG

token-price-oracles

Version:

tools for creating token price data feeds and oracles that integrate with on-chain dex's

9,325 lines 320 kB
{
  "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": [
        838
      ]
    },
    "id": 839,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 496,
        "literals": [
          "solidity",
          ">=",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:25:3"
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": false,
        "id": 838,
        "linearizedBaseContracts": [
          838
        ],
        "name": "UniswapExchangeInterface",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": null,
            "documentation": null,
            "id": 501,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "tokenAddress",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 497,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "140:2:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 500,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 499,
                  "name": "token",
                  "nodeType": "VariableDeclaration",
                  "scope": 501,
                  "src": "166:13:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 498,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "166:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "165:15:3"
            },
            "scope": 838,
            "src": "119:62:3",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 506,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "factoryAddress",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 502,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "243:2:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 505,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 504,
                  "name": "factory",
                  "nodeType": "VariableDeclaration",
                  "scope": 506,
                  "src": "269:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 503,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "269:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "268:17:3"
            },
            "scope": 838,
            "src": "220:66:3",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 517,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "addLiquidity",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 513,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 508,
                  "name": "min_liquidity",
                  "nodeType": "VariableDeclaration",
                  "scope": 517,
                  "src": "338:21:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 507,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "338:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 510,
                  "name": "max_tokens",
                  "nodeType": "VariableDeclaration",
                  "scope": 517,
                  "src": "361:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 509,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "361:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 512,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 517,
                  "src": "381:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 511,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "381:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "337:61:3"
            },
            "payable": true,
            "returnParameters": {
              "id": 516,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 515,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 517,
                  "src": "425:7:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 514,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "425:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "424:9:3"
            },
            "scope": 838,
            "src": "316:118:3",
            "stateMutability": "payable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 532,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "removeLiquidity",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 526,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 519,
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 532,
                  "src": "464:14:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 518,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "464:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 521,
                  "name": "min_eth",
                  "nodeType": "VariableDeclaration",
                  "scope": 532,
                  "src": "480:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 520,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "480:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 523,
                  "name": "min_tokens",
                  "nodeType": "VariableDeclaration",
                  "scope": 532,
                  "src": "497:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 522,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "497:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 525,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 532,
                  "src": "517:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 524,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "517:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "463:71:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 531,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 528,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 532,
                  "src": "553:7:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 527,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "553:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 530,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 532,
                  "src": "562:7:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 529,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "562:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "552:18:3"
            },
            "scope": 838,
            "src": "439:132:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 539,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getEthToTokenInputPrice",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 535,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 534,
                  "name": "eth_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 539,
                  "src": "627:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 533,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "627:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "626:18:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 538,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 537,
                  "name": "tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 539,
                  "src": "668:21:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 536,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "668:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "667:23:3"
            },
            "scope": 838,
            "src": "594:97:3",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 546,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getEthToTokenOutputPrice",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 542,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 541,
                  "name": "tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 546,
                  "src": "730:21:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 540,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "730:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "729:23:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 545,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 544,
                  "name": "eth_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 546,
                  "src": "776:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 543,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "776:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "775:18:3"
            },
            "scope": 838,
            "src": "696:98:3",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 553,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getTokenToEthInputPrice",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 549,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 548,
                  "name": "tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 553,
                  "src": "832:19:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 547,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "832:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "831:21:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 552,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 551,
                  "name": "eth_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 553,
                  "src": "876:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 550,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "876:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "875:20:3"
            },
            "scope": 838,
            "src": "799:97:3",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 560,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getTokenToEthOutputPrice",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 556,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 555,
                  "name": "eth_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 560,
                  "src": "935:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 554,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "935:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "934:20:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 559,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 558,
                  "name": "tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 560,
                  "src": "978:19:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 557,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "978:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "977:21:3"
            },
            "scope": 838,
            "src": "901:98:3",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 569,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "ethToTokenSwapInput",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 565,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 562,
                  "name": "min_tokens",
                  "nodeType": "VariableDeclaration",
                  "scope": 569,
                  "src": "1059:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 561,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1059:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 564,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 569,
                  "src": "1079:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 563,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1079:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1058:38:3"
            },
            "payable": true,
            "returnParameters": {
              "id": 568,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 567,
                  "name": "tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 569,
                  "src": "1123:22:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 566,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1123:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1122:24:3"
            },
            "scope": 838,
            "src": "1030:117:3",
            "stateMutability": "payable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 580,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "ethToTokenTransferInput",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 576,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 571,
                  "name": "min_tokens",
                  "nodeType": "VariableDeclaration",
                  "scope": 580,
                  "src": "1185:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 570,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1185:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 573,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 580,
                  "src": "1205:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 572,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1205:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 575,
                  "name": "recipient",
                  "nodeType": "VariableDeclaration",
                  "scope": 580,
                  "src": "1223:17:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 574,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1223:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1184:57:3"
            },
            "payable": true,
            "returnParameters": {
              "id": 579,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 578,
                  "name": "tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 580,
                  "src": "1268:22:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 577,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1268:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1267:24:3"
            },
            "scope": 838,
            "src": "1152:140:3",
            "stateMutability": "payable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 589,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "ethToTokenSwapOutput",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 585,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 582,
                  "name": "tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 589,
                  "src": "1327:21:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 581,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1327:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 584,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 589,
                  "src": "1350:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 583,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1350:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1326:41:3"
            },
            "payable": true,
            "returnParameters": {
              "id": 588,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 587,
                  "name": "eth_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 589,
                  "src": "1394:17:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 586,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1394:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1393:19:3"
            },
            "scope": 838,
            "src": "1297:116:3",
            "stateMutability": "payable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 600,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "ethToTokenTransferOutput",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 596,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 591,
                  "name": "tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 600,
                  "src": "1452:21:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 590,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1452:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 593,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 600,
                  "src": "1475:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 592,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1475:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 595,
                  "name": "recipient",
                  "nodeType": "VariableDeclaration",
                  "scope": 600,
                  "src": "1493:17:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 594,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1493:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1451:60:3"
            },
            "payable": true,
            "returnParameters": {
              "id": 599,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 598,
                  "name": "eth_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 600,
                  "src": "1538:17:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 597,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1538:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1537:19:3"
            },
            "scope": 838,
            "src": "1418:139:3",
            "stateMutability": "payable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 611,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "tokenToEthSwapInput",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 607,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 602,
                  "name": "tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 611,
                  "src": "1617:19:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 601,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1617:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 604,
                  "name": "min_eth",
                  "nodeType": "VariableDeclaration",
                  "scope": 611,
                  "src": "1638:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 603,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1638:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 606,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 611,
                  "src": "1655:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 605,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1655:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1616:56:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 610,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 609,
                  "name": "eth_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 611,
                  "src": "1691:19:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 608,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1691:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1690:21:3"
            },
            "scope": 838,
            "src": "1588:124:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 624,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "tokenToEthTransferInput",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 620,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 613,
                  "name": "tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 624,
                  "src": "1750:19:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 612,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1750:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 615,
                  "name": "min_eth",
                  "nodeType": "VariableDeclaration",
                  "scope": 624,
                  "src": "1771:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 614,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1771:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 617,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 624,
                  "src": "1788:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 616,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1788:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 619,
                  "name": "recipient",
                  "nodeType": "VariableDeclaration",
                  "scope": 624,
                  "src": "1806:17:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 618,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1806:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1749:75:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 623,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 622,
                  "name": "eth_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 624,
                  "src": "1843:19:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 621,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1843:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1842:21:3"
            },
            "scope": 838,
            "src": "1717:147:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 635,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "tokenToEthSwapOutput",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 631,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 626,
                  "name": "eth_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 635,
                  "src": "1899:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 625,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1899:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 628,
                  "name": "max_tokens",
                  "nodeType": "VariableDeclaration",
                  "scope": 635,
                  "src": "1919:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 627,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1919:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 630,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 635,
                  "src": "1939:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 629,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1939:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1898:58:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 634,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 633,
                  "name": "tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 635,
                  "src": "1975:20:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 632,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1975:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1974:22:3"
            },
            "scope": 838,
            "src": "1869:128:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 648,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "tokenToEthTransferOutput",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 644,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 637,
                  "name": "eth_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 648,
                  "src": "2036:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 636,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2036:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 639,
                  "name": "max_tokens",
                  "nodeType": "VariableDeclaration",
                  "scope": 648,
                  "src": "2056:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 638,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2056:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 641,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 648,
                  "src": "2076:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 640,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2076:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 643,
                  "name": "recipient",
                  "nodeType": "VariableDeclaration",
                  "scope": 648,
                  "src": "2094:17:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 642,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2094:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2035:77:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 647,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 646,
                  "name": "tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 648,
                  "src": "2131:20:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 645,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2131:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2130:22:3"
            },
            "scope": 838,
            "src": "2002:151:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 663,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "tokenToTokenSwapInput",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 659,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 650,
                  "name": "tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 663,
                  "src": "2217:19:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 649,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2217:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 652,
                  "name": "min_tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 663,
                  "src": "2238:25:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 651,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2238:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 654,
                  "name": "min_eth_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 663,
                  "src": "2265:22:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 653,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2265:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 656,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 663,
                  "src": "2289:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 655,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2289:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 658,
                  "name": "token_addr",
                  "nodeType": "VariableDeclaration",
                  "scope": 663,
                  "src": "2307:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 657,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2307:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2216:110:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 662,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 661,
                  "name": "tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 663,
                  "src": "2345:22:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 660,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2345:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2344:24:3"
            },
            "scope": 838,
            "src": "2186:183:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 680,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "tokenToTokenTransferInput",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 676,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 665,
                  "name": "tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 680,
                  "src": "2409:19:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 664,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2409:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 667,
                  "name": "min_tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 680,
                  "src": "2430:25:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 666,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2430:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 669,
                  "name": "min_eth_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 680,
                  "src": "2457:22:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 668,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2457:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 671,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 680,
                  "src": "2481:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 670,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2481:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 673,
                  "name": "recipient",
                  "nodeType": "VariableDeclaration",
                  "scope": 680,
                  "src": "2499:17:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 672,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2499:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 675,
                  "name": "token_addr",
                  "nodeType": "VariableDeclaration",
                  "scope": 680,
                  "src": "2518:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 674,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2518:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2408:129:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 679,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 678,
                  "name": "tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 680,
                  "src": "2556:22:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 677,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2556:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2555:24:3"
            },
            "scope": 838,
            "src": "2374:206:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 695,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "tokenToTokenSwapOutput",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 691,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 682,
                  "name": "tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 695,
                  "src": "2617:21:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 681,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2617:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 684,
                  "name": "max_tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 695,
                  "src": "2640:23:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 683,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2640:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 686,
                  "name": "max_eth_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 695,
                  "src": "2665:20:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 685,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2665:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 688,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 695,
                  "src": "2687:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 687,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2687:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 690,
                  "name": "token_addr",
                  "nodeType": "VariableDeclaration",
                  "scope": 695,
                  "src": "2705:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 689,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2705:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2616:108:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 694,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 693,
                  "name": "tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 695,
                  "src": "2743:20:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 692,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2743:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2742:22:3"
            },
            "scope": 838,
            "src": "2585:180:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 712,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "tokenToTokenTransferOutput",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 708,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 697,
                  "name": "tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 712,
                  "src": "2806:21:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 696,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2806:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 699,
                  "name": "max_tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 712,
                  "src": "2829:23:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 698,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2829:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 701,
                  "name": "max_eth_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 712,
                  "src": "2854:20:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 700,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2854:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 703,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 712,
                  "src": "2876:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 702,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2876:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 705,
                  "name": "recipient",
                  "nodeType": "VariableDeclaration",
                  "scope": 712,
                  "src": "2894:17:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 704,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2894:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 707,
                  "name": "token_addr",
                  "nodeType": "VariableDeclaration",
                  "scope": 712,
                  "src": "2913:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 706,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2913:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2805:127:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 711,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 710,
                  "name": "tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 712,
                  "src": "2951:20:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 709,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2951:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2950:22:3"
            },
            "scope": 838,
            "src": "2770:203:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 727,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "tokenToExchangeSwapInput",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 723,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 714,
                  "name": "tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 727,
                  "src": "3046:19:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 713,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3046:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 716,
                  "name": "min_tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 727,
                  "src": "3067:25:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 715,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3067:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 718,
                  "name": "min_eth_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 727,
                  "src": "3094:22:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 717,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3094:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 720,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 727,
                  "src": "3118:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 719,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3118:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 722,
                  "name": "exchange_addr",
                  "nodeType": "VariableDeclaration",
                  "scope": 727,
                  "src": "3136:21:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 721,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3136:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3045:113:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 726,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 725,
                  "name": "tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 727,
                  "src": "3177:22:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 724,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3177:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3176:24:3"
            },
            "scope": 838,
            "src": "3012:189:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 744,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "tokenToExchangeTransferInput",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 740,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 729,
                  "name": "tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 744,
                  "src": "3244:19:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 728,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3244:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 731,
                  "name": "min_tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 744,
                  "src": "3265:25:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 730,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3265:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 733,
                  "name": "min_eth_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 744,
                  "src": "3292:22:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 732,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3292:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 735,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 744,
                  "src": "3316:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 734,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3316:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 737,
                  "name": "recipient",
                  "nodeType": "VariableDeclaration",
                  "scope": 744,
                  "src": "3334:17:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 736,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3334:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 739,
                  "name": "exchange_addr",
                  "nodeType": "VariableDeclaration",
                  "scope": 744,
                  "src": "3353:21:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 738,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3353:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3243:132:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 743,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 742,
                  "name": "tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 744,
                  "src": "3394:22:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 741,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3394:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3393:24:3"
            },
            "scope": 838,
            "src": "3206:212:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 759,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "tokenToExchangeSwapOutput",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 755,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 746,
                  "name": "tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 759,
                  "src": "3458:21:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 745,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3458:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 748,
                  "name": "max_tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 759,
                  "src": "3481:23:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 747,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3481:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 750,
                  "name": "max_eth_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 759,
                  "src": "3506:20:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 749,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3506:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 752,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 759,
                  "src": "3528:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 751,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3528:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 754,
                  "name": "exchange_addr",
                  "nodeType": "VariableDeclaration",
                  "scope": 759,
                  "src": "3546:21:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 753,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3546:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3457:111:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 758,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 757,
                  "name": "tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 759,
                  "src": "3587:20:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 756,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3587:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3586:22:3"
            },
            "scope": 838,
            "src": "3423:186:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 776,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "tokenToExchangeTransferOutput",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 772,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 761,
                  "name": "tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 776,
                  "src": "3653:21:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 760,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3653:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 763,
                  "name": "max_tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 776,
                  "src": "3676:23:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 762,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3676:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 765,
                  "name": "max_eth_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 776,
                  "src": "3701:20:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 764,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3701:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 767,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 776,
                  "src": "3723:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 766,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3723:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 769,
                  "name": "recipient",
                  "nodeType": "VariableDeclaration",
                  "scope": 776,
                  "src": "3741:17:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 768,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3741:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 771,
                  "name": "exchange_addr",
                  "nodeType": "VariableDeclaration",
                  "scope": 776,
                  "src": "3760:21:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 770,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3760:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3652:130:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 775,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 774,
                  "name": "tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 776,
                  "src": "3801:20:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 773,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3801:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3800:22:3"
            },
            "scope": 838,
            "src": "3614:209:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "constant": false,
            "id": 778,
            "name": "name",
            "nodeType": "VariableDeclaration",
            "scope": 838,
            "src": "3876:19:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 777,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "3876:7:3",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 780,
            "name": "symbol",
            "nodeType": "VariableDeclaration",
            "scope": 838,
            "src": "3901:21:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 779,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "3901:7:3",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 782,
            "name": "decimals",
            "nodeType": "VariableDeclaration",
            "scope": 838,
            "src": "3928:23:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 781,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "3928:7:3",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": null,
            "documentation": null,
            "id": 791,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "transfer",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 787,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 784,
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 791,
                  "src": "3975:11:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 783,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3975:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 786,
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 791,
                  "src": "3988:14:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 785,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3988:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3974:29:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 790,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 789,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 791,
                  "src": "4022:4:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 788,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4022:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4021:6:3"
            },
            "scope": 838,
            "src": "3957:71:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 802,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "transferFrom",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 798,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 793,
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 802,
                  "src": "4055:13:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 792,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4055:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 795,
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 802,
                  "src": "4070:11:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 794,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4070:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 797,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 802,
                  "src": "4083:13:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 796,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4083:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4054:43:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 801,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 800,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 802,
                  "src": "4116:4:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 799,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4116:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4115:6:3"
            },
            "scope": 838,
            "src": "4033:89:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 811,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "approve",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 807,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 804,
                  "name": "_spender",
                  "nodeType": "VariableDeclaration",
                  "scope": 811,
                  "src": "4144:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 803,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4144:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 806,
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 811,
                  "src": "4162:14:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 805,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4162:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4143:34:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 810,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 809,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 811,
                  "src": "4196:4:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 808,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4196:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4195:6:3"
            },
            "scope": 838,
            "src": "4127:75:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 820,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "allowance",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 816,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 813,
                  "name": "_owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 820,
                  "src": "4226:14:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 812,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4226:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 815,
                  "name": "_spender",
                  "nodeType": "VariableDeclaration",
                  "scope": 820,
                  "src": "4242:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 814,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4242:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4225:34:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 819,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 818,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 820,
                  "src": "4283:7:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 817,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4283:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4282:9:3"
            },
            "scope": 838,
            "src": "4207:85:3",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 827,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "balanceOf",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 823,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 822,
                  "name": "_owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 827,
                  "src": "4316:14:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 821,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4316:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4315:16:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 826,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 825,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 827,
                  "src": "4355:7:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 824,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4355:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4354:9:3"
            },
            "scope": 838,
            "src": "4297:67:3",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 832,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "totalSupply",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 828,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4389:2:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 831,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 830,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 832,
                  "src": "4415:7:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 829,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4415:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4414:9:3"
            },
            "scope": 838,
            "src": "4369:55:3",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 837,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "setup",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 835,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 834,
                  "name": "token_addr",
                  "nodeType": "VariableDeclaration",
                  "scope": 837,
                  "src": "4461:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 833,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4461:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4460:20:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 836,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4489:0:3"
            },
            "scope": 838,
            "src": "4446:44:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          }
        ],
        "scope": 839,
        "src": "27:4465:3"
      }
    ],
    "src": "0:4493:3"
  },
  "legacyAST": {
    "absolutePath": "/Users/mfcalvanese/dev/eth/token-price-oracles/contracts/ExchangeAdapters/Uniswap/UniswapExchangeInterface.sol",
    "exportedSymbols": {
      "UniswapExchangeInterface": [
        838
      ]
    },
    "id": 839,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 496,
        "literals": [
          "solidity",
          ">=",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:25:3"
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": false,
        "id": 838,
        "linearizedBaseContracts": [
          838
        ],
        "name": "UniswapExchangeInterface",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": null,
            "documentation": null,
            "id": 501,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "tokenAddress",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 497,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "140:2:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 500,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 499,
                  "name": "token",
                  "nodeType": "VariableDeclaration",
                  "scope": 501,
                  "src": "166:13:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 498,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "166:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "165:15:3"
            },
            "scope": 838,
            "src": "119:62:3",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 506,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "factoryAddress",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 502,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "243:2:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 505,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 504,
                  "name": "factory",
                  "nodeType": "VariableDeclaration",
                  "scope": 506,
                  "src": "269:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 503,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "269:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "268:17:3"
            },
            "scope": 838,
            "src": "220:66:3",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 517,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "addLiquidity",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 513,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 508,
                  "name": "min_liquidity",
                  "nodeType": "VariableDeclaration",
                  "scope": 517,
                  "src": "338:21:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 507,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "338:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 510,
                  "name": "max_tokens",
                  "nodeType": "VariableDeclaration",
                  "scope": 517,
                  "src": "361:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 509,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "361:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 512,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 517,
                  "src": "381:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 511,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "381:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "337:61:3"
            },
            "payable": true,
            "returnParameters": {
              "id": 516,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 515,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 517,
                  "src": "425:7:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 514,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "425:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "424:9:3"
            },
            "scope": 838,
            "src": "316:118:3",
            "stateMutability": "payable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 532,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "removeLiquidity",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 526,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 519,
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 532,
                  "src": "464:14:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 518,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "464:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 521,
                  "name": "min_eth",
                  "nodeType": "VariableDeclaration",
                  "scope": 532,
                  "src": "480:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 520,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "480:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 523,
                  "name": "min_tokens",
                  "nodeType": "VariableDeclaration",
                  "scope": 532,
                  "src": "497:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 522,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "497:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 525,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 532,
                  "src": "517:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 524,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "517:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "463:71:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 531,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 528,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 532,
                  "src": "553:7:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 527,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "553:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 530,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 532,
                  "src": "562:7:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 529,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "562:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "552:18:3"
            },
            "scope": 838,
            "src": "439:132:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 539,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getEthToTokenInputPrice",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 535,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 534,
                  "name": "eth_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 539,
                  "src": "627:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 533,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "627:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "626:18:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 538,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 537,
                  "name": "tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 539,
                  "src": "668:21:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 536,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "668:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "667:23:3"
            },
            "scope": 838,
            "src": "594:97:3",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 546,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getEthToTokenOutputPrice",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 542,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 541,
                  "name": "tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 546,
                  "src": "730:21:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 540,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "730:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "729:23:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 545,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 544,
                  "name": "eth_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 546,
                  "src": "776:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 543,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "776:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "775:18:3"
            },
            "scope": 838,
            "src": "696:98:3",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 553,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getTokenToEthInputPrice",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 549,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 548,
                  "name": "tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 553,
                  "src": "832:19:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 547,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "832:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "831:21:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 552,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 551,
                  "name": "eth_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 553,
                  "src": "876:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 550,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "876:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "875:20:3"
            },
            "scope": 838,
            "src": "799:97:3",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 560,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getTokenToEthOutputPrice",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 556,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 555,
                  "name": "eth_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 560,
                  "src": "935:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 554,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "935:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "934:20:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 559,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 558,
                  "name": "tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 560,
                  "src": "978:19:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 557,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "978:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "977:21:3"
            },
            "scope": 838,
            "src": "901:98:3",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 569,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "ethToTokenSwapInput",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 565,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 562,
                  "name": "min_tokens",
                  "nodeType": "VariableDeclaration",
                  "scope": 569,
                  "src": "1059:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 561,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1059:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 564,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 569,
                  "src": "1079:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 563,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1079:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1058:38:3"
            },
            "payable": true,
            "returnParameters": {
              "id": 568,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 567,
                  "name": "tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 569,
                  "src": "1123:22:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 566,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1123:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1122:24:3"
            },
            "scope": 838,
            "src": "1030:117:3",
            "stateMutability": "payable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 580,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "ethToTokenTransferInput",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 576,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 571,
                  "name": "min_tokens",
                  "nodeType": "VariableDeclaration",
                  "scope": 580,
                  "src": "1185:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 570,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1185:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 573,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 580,
                  "src": "1205:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 572,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1205:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 575,
                  "name": "recipient",
                  "nodeType": "VariableDeclaration",
                  "scope": 580,
                  "src": "1223:17:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 574,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1223:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1184:57:3"
            },
            "payable": true,
            "returnParameters": {
              "id": 579,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 578,
                  "name": "tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 580,
                  "src": "1268:22:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 577,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1268:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1267:24:3"
            },
            "scope": 838,
            "src": "1152:140:3",
            "stateMutability": "payable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 589,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "ethToTokenSwapOutput",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 585,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 582,
                  "name": "tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 589,
                  "src": "1327:21:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 581,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1327:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 584,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 589,
                  "src": "1350:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 583,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1350:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1326:41:3"
            },
            "payable": true,
            "returnParameters": {
              "id": 588,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 587,
                  "name": "eth_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 589,
                  "src": "1394:17:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 586,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1394:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1393:19:3"
            },
            "scope": 838,
            "src": "1297:116:3",
            "stateMutability": "payable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 600,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "ethToTokenTransferOutput",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 596,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 591,
                  "name": "tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 600,
                  "src": "1452:21:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 590,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1452:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 593,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 600,
                  "src": "1475:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 592,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1475:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 595,
                  "name": "recipient",
                  "nodeType": "VariableDeclaration",
                  "scope": 600,
                  "src": "1493:17:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 594,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1493:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1451:60:3"
            },
            "payable": true,
            "returnParameters": {
              "id": 599,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 598,
                  "name": "eth_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 600,
                  "src": "1538:17:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 597,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1538:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1537:19:3"
            },
            "scope": 838,
            "src": "1418:139:3",
            "stateMutability": "payable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 611,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "tokenToEthSwapInput",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 607,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 602,
                  "name": "tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 611,
                  "src": "1617:19:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 601,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1617:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 604,
                  "name": "min_eth",
                  "nodeType": "VariableDeclaration",
                  "scope": 611,
                  "src": "1638:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 603,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1638:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 606,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 611,
                  "src": "1655:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 605,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1655:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1616:56:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 610,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 609,
                  "name": "eth_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 611,
                  "src": "1691:19:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 608,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1691:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1690:21:3"
            },
            "scope": 838,
            "src": "1588:124:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 624,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "tokenToEthTransferInput",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 620,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 613,
                  "name": "tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 624,
                  "src": "1750:19:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 612,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1750:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 615,
                  "name": "min_eth",
                  "nodeType": "VariableDeclaration",
                  "scope": 624,
                  "src": "1771:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 614,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1771:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 617,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 624,
                  "src": "1788:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 616,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1788:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 619,
                  "name": "recipient",
                  "nodeType": "VariableDeclaration",
                  "scope": 624,
                  "src": "1806:17:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 618,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1806:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1749:75:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 623,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 622,
                  "name": "eth_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 624,
                  "src": "1843:19:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 621,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1843:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1842:21:3"
            },
            "scope": 838,
            "src": "1717:147:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 635,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "tokenToEthSwapOutput",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 631,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 626,
                  "name": "eth_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 635,
                  "src": "1899:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 625,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1899:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 628,
                  "name": "max_tokens",
                  "nodeType": "VariableDeclaration",
                  "scope": 635,
                  "src": "1919:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 627,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1919:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 630,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 635,
                  "src": "1939:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 629,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1939:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1898:58:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 634,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 633,
                  "name": "tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 635,
                  "src": "1975:20:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 632,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1975:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1974:22:3"
            },
            "scope": 838,
            "src": "1869:128:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 648,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "tokenToEthTransferOutput",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 644,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 637,
                  "name": "eth_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 648,
                  "src": "2036:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 636,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2036:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 639,
                  "name": "max_tokens",
                  "nodeType": "VariableDeclaration",
                  "scope": 648,
                  "src": "2056:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 638,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2056:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 641,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 648,
                  "src": "2076:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 640,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2076:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 643,
                  "name": "recipient",
                  "nodeType": "VariableDeclaration",
                  "scope": 648,
                  "src": "2094:17:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 642,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2094:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2035:77:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 647,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 646,
                  "name": "tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 648,
                  "src": "2131:20:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 645,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2131:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2130:22:3"
            },
            "scope": 838,
            "src": "2002:151:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 663,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "tokenToTokenSwapInput",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 659,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 650,
                  "name": "tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 663,
                  "src": "2217:19:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 649,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2217:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 652,
                  "name": "min_tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 663,
                  "src": "2238:25:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 651,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2238:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 654,
                  "name": "min_eth_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 663,
                  "src": "2265:22:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 653,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2265:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 656,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 663,
                  "src": "2289:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 655,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2289:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 658,
                  "name": "token_addr",
                  "nodeType": "VariableDeclaration",
                  "scope": 663,
                  "src": "2307:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 657,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2307:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2216:110:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 662,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 661,
                  "name": "tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 663,
                  "src": "2345:22:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 660,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2345:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2344:24:3"
            },
            "scope": 838,
            "src": "2186:183:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 680,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "tokenToTokenTransferInput",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 676,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 665,
                  "name": "tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 680,
                  "src": "2409:19:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 664,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2409:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 667,
                  "name": "min_tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 680,
                  "src": "2430:25:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 666,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2430:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 669,
                  "name": "min_eth_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 680,
                  "src": "2457:22:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 668,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2457:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 671,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 680,
                  "src": "2481:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 670,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2481:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 673,
                  "name": "recipient",
                  "nodeType": "VariableDeclaration",
                  "scope": 680,
                  "src": "2499:17:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 672,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2499:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 675,
                  "name": "token_addr",
                  "nodeType": "VariableDeclaration",
                  "scope": 680,
                  "src": "2518:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 674,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2518:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2408:129:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 679,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 678,
                  "name": "tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 680,
                  "src": "2556:22:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 677,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2556:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2555:24:3"
            },
            "scope": 838,
            "src": "2374:206:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 695,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "tokenToTokenSwapOutput",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 691,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 682,
                  "name": "tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 695,
                  "src": "2617:21:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 681,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2617:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 684,
                  "name": "max_tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 695,
                  "src": "2640:23:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 683,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2640:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 686,
                  "name": "max_eth_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 695,
                  "src": "2665:20:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 685,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2665:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 688,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 695,
                  "src": "2687:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 687,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2687:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 690,
                  "name": "token_addr",
                  "nodeType": "VariableDeclaration",
                  "scope": 695,
                  "src": "2705:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 689,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2705:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2616:108:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 694,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 693,
                  "name": "tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 695,
                  "src": "2743:20:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 692,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2743:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2742:22:3"
            },
            "scope": 838,
            "src": "2585:180:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 712,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "tokenToTokenTransferOutput",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 708,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 697,
                  "name": "tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 712,
                  "src": "2806:21:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 696,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2806:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 699,
                  "name": "max_tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 712,
                  "src": "2829:23:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 698,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2829:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 701,
                  "name": "max_eth_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 712,
                  "src": "2854:20:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 700,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2854:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 703,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 712,
                  "src": "2876:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 702,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2876:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 705,
                  "name": "recipient",
                  "nodeType": "VariableDeclaration",
                  "scope": 712,
                  "src": "2894:17:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 704,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2894:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 707,
                  "name": "token_addr",
                  "nodeType": "VariableDeclaration",
                  "scope": 712,
                  "src": "2913:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 706,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2913:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2805:127:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 711,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 710,
                  "name": "tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 712,
                  "src": "2951:20:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 709,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2951:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2950:22:3"
            },
            "scope": 838,
            "src": "2770:203:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 727,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "tokenToExchangeSwapInput",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 723,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 714,
                  "name": "tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 727,
                  "src": "3046:19:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 713,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3046:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 716,
                  "name": "min_tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 727,
                  "src": "3067:25:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 715,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3067:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 718,
                  "name": "min_eth_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 727,
                  "src": "3094:22:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 717,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3094:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 720,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 727,
                  "src": "3118:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 719,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3118:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 722,
                  "name": "exchange_addr",
                  "nodeType": "VariableDeclaration",
                  "scope": 727,
                  "src": "3136:21:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 721,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3136:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3045:113:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 726,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 725,
                  "name": "tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 727,
                  "src": "3177:22:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 724,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3177:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3176:24:3"
            },
            "scope": 838,
            "src": "3012:189:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 744,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "tokenToExchangeTransferInput",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 740,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 729,
                  "name": "tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 744,
                  "src": "3244:19:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 728,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3244:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 731,
                  "name": "min_tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 744,
                  "src": "3265:25:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 730,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3265:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 733,
                  "name": "min_eth_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 744,
                  "src": "3292:22:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 732,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3292:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 735,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 744,
                  "src": "3316:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 734,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3316:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 737,
                  "name": "recipient",
                  "nodeType": "VariableDeclaration",
                  "scope": 744,
                  "src": "3334:17:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 736,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3334:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 739,
                  "name": "exchange_addr",
                  "nodeType": "VariableDeclaration",
                  "scope": 744,
                  "src": "3353:21:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 738,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3353:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3243:132:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 743,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 742,
                  "name": "tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 744,
                  "src": "3394:22:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 741,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3394:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3393:24:3"
            },
            "scope": 838,
            "src": "3206:212:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 759,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "tokenToExchangeSwapOutput",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 755,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 746,
                  "name": "tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 759,
                  "src": "3458:21:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 745,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3458:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 748,
                  "name": "max_tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 759,
                  "src": "3481:23:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 747,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3481:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 750,
                  "name": "max_eth_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 759,
                  "src": "3506:20:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 749,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3506:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 752,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 759,
                  "src": "3528:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 751,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3528:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 754,
                  "name": "exchange_addr",
                  "nodeType": "VariableDeclaration",
                  "scope": 759,
                  "src": "3546:21:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 753,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3546:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3457:111:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 758,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 757,
                  "name": "tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 759,
                  "src": "3587:20:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 756,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3587:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3586:22:3"
            },
            "scope": 838,
            "src": "3423:186:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 776,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "tokenToExchangeTransferOutput",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 772,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 761,
                  "name": "tokens_bought",
                  "nodeType": "VariableDeclaration",
                  "scope": 776,
                  "src": "3653:21:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 760,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3653:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 763,
                  "name": "max_tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 776,
                  "src": "3676:23:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 762,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3676:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 765,
                  "name": "max_eth_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 776,
                  "src": "3701:20:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 764,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3701:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 767,
                  "name": "deadline",
                  "nodeType": "VariableDeclaration",
                  "scope": 776,
                  "src": "3723:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 766,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3723:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 769,
                  "name": "recipient",
                  "nodeType": "VariableDeclaration",
                  "scope": 776,
                  "src": "3741:17:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 768,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3741:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 771,
                  "name": "exchange_addr",
                  "nodeType": "VariableDeclaration",
                  "scope": 776,
                  "src": "3760:21:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 770,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3760:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3652:130:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 775,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 774,
                  "name": "tokens_sold",
                  "nodeType": "VariableDeclaration",
                  "scope": 776,
                  "src": "3801:20:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 773,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3801:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3800:22:3"
            },
            "scope": 838,
            "src": "3614:209:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "constant": false,
            "id": 778,
            "name": "name",
            "nodeType": "VariableDeclaration",
            "scope": 838,
            "src": "3876:19:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 777,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "3876:7:3",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 780,
            "name": "symbol",
            "nodeType": "VariableDeclaration",
            "scope": 838,
            "src": "3901:21:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 779,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "3901:7:3",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 782,
            "name": "decimals",
            "nodeType": "VariableDeclaration",
            "scope": 838,
            "src": "3928:23:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 781,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "3928:7:3",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": null,
            "documentation": null,
            "id": 791,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "transfer",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 787,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 784,
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 791,
                  "src": "3975:11:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 783,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3975:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 786,
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 791,
                  "src": "3988:14:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 785,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3988:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3974:29:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 790,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 789,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 791,
                  "src": "4022:4:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 788,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4022:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4021:6:3"
            },
            "scope": 838,
            "src": "3957:71:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 802,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "transferFrom",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 798,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 793,
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 802,
                  "src": "4055:13:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 792,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4055:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 795,
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 802,
                  "src": "4070:11:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 794,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4070:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 797,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 802,
                  "src": "4083:13:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 796,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4083:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4054:43:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 801,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 800,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 802,
                  "src": "4116:4:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 799,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4116:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4115:6:3"
            },
            "scope": 838,
            "src": "4033:89:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 811,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "approve",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 807,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 804,
                  "name": "_spender",
                  "nodeType": "VariableDeclaration",
                  "scope": 811,
                  "src": "4144:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 803,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4144:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 806,
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 811,
                  "src": "4162:14:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 805,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4162:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4143:34:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 810,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 809,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 811,
                  "src": "4196:4:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 808,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4196:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4195:6:3"
            },
            "scope": 838,
            "src": "4127:75:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 820,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "allowance",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 816,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 813,
                  "name": "_owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 820,
                  "src": "4226:14:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 812,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4226:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 815,
                  "name": "_spender",
                  "nodeType": "VariableDeclaration",
                  "scope": 820,
                  "src": "4242:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 814,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4242:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4225:34:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 819,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 818,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 820,
                  "src": "4283:7:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 817,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4283:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4282:9:3"
            },
            "scope": 838,
            "src": "4207:85:3",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 827,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "balanceOf",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 823,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 822,
                  "name": "_owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 827,
                  "src": "4316:14:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 821,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4316:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4315:16:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 826,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 825,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 827,
                  "src": "4355:7:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 824,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4355:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4354:9:3"
            },
            "scope": 838,
            "src": "4297:67:3",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 832,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "totalSupply",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 828,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4389:2:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 831,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 830,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 832,
                  "src": "4415:7:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 829,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4415:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4414:9:3"
            },
            "scope": 838,
            "src": "4369:55:3",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 837,
            "implemented": false,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "setup",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 835,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 834,
                  "name": "token_addr",
                  "nodeType": "VariableDeclaration",
                  "scope": 837,
                  "src": "4461:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 833,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4461:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4460:20:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 836,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4489:0:3"
            },
            "scope": 838,
            "src": "4446:44:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          }
        ],
        "scope": 839,
        "src": "27:4465:3"
      }
    ],
    "src": "0:4493:3"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.25+commit.59dbf8f1.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "2.0.2",
  "updatedAt": "2019-07-23T19:08:33.530Z"
}