{
  "contractName": "UniswapAdapter",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "uniswapFactory",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "name": "_uniswapFactory",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "token1",
          "type": "address"
        },
        {
          "name": "token2",
          "type": "address"
        }
      ],
      "name": "getPriceForTokenPair",
      "outputs": [
        {
          "name": "price",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "token1",
          "type": "address"
        },
        {
          "name": "token2",
          "type": "address"
        }
      ],
      "name": "tokenPairExists",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b506040516020806108db83398101806040528101908080519060200190929190505050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610858806100836000396000f300608060405260043610610057576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680635aaaa7951461005c5780638bdb2afa146100d3578063d6e7444d1461012a575b600080fd5b34801561006857600080fd5b506100bd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506101a5565b6040518082815260200191505060405180910390f35b3480156100df57600080fd5b506100e8610540565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561013657600080fd5b5061018b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610565565b604051808215151515815260200191505060405180910390f35b60008060008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166306f2bf62886040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561026957600080fd5b505af115801561027d573d6000803e3d6000fd5b505050506040513d602081101561029357600080fd5b810190808051906020019092919050505093506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166306f2bf62876040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561036257600080fd5b505af1158015610376573d6000803e3d6000fd5b505050506040513d602081101561038c57600080fd5b810190808051906020019092919050505092508373ffffffffffffffffffffffffffffffffffffffff166395b68fe7670de0b6b3a76400006040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15801561041657600080fd5b505af115801561042a573d6000803e3d6000fd5b505050506040513d602081101561044057600080fd5b810190808051906020019092919050505091508273ffffffffffffffffffffffffffffffffffffffff166395b68fe7670de0b6b3a76400006040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b1580156104ca57600080fd5b505af11580156104de573d6000803e3d6000fd5b505050506040513d60208110156104f457600080fd5b8101908080519060200190929190505050905061053481610526670de0b6b3a7640000856107c490919063ffffffff16565b61080290919063ffffffff16565b94505050505092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166306f2bf62856040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561063a57600080fd5b505af115801561064e573d6000803e3d6000fd5b505050506040513d602081101561066457600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16141580156107bc5750600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166306f2bf62846040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561076857600080fd5b505af115801561077c573d6000803e3d6000fd5b505050506040513d602081101561079257600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1614155b905092915050565b60008060008414156107d957600091506107fb565b82840290508284828115156107ea57fe5b041415156107f757600080fd5b8091505b5092915050565b60008060008311151561081457600080fd5b828481151561081f57fe5b04905080915050929150505600a165627a7a723058209e605c6ad8ab20102a5afae2ebee91f8419e93a01201082d9084fdf0cadda8c60029",
  "deployedBytecode": "0x608060405260043610610057576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680635aaaa7951461005c5780638bdb2afa146100d3578063d6e7444d1461012a575b600080fd5b34801561006857600080fd5b506100bd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506101a5565b6040518082815260200191505060405180910390f35b3480156100df57600080fd5b506100e8610540565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561013657600080fd5b5061018b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610565565b604051808215151515815260200191505060405180910390f35b60008060008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166306f2bf62886040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561026957600080fd5b505af115801561027d573d6000803e3d6000fd5b505050506040513d602081101561029357600080fd5b810190808051906020019092919050505093506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166306f2bf62876040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561036257600080fd5b505af1158015610376573d6000803e3d6000fd5b505050506040513d602081101561038c57600080fd5b810190808051906020019092919050505092508373ffffffffffffffffffffffffffffffffffffffff166395b68fe7670de0b6b3a76400006040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15801561041657600080fd5b505af115801561042a573d6000803e3d6000fd5b505050506040513d602081101561044057600080fd5b810190808051906020019092919050505091508273ffffffffffffffffffffffffffffffffffffffff166395b68fe7670de0b6b3a76400006040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b1580156104ca57600080fd5b505af11580156104de573d6000803e3d6000fd5b505050506040513d60208110156104f457600080fd5b8101908080519060200190929190505050905061053481610526670de0b6b3a7640000856107c490919063ffffffff16565b61080290919063ffffffff16565b94505050505092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166306f2bf62856040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561063a57600080fd5b505af115801561064e573d6000803e3d6000fd5b505050506040513d602081101561066457600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16141580156107bc5750600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166306f2bf62846040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561076857600080fd5b505af115801561077c573d6000803e3d6000fd5b505050506040513d602081101561079257600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1614155b905092915050565b60008060008414156107d957600091506107fb565b82840290508284828115156107ea57fe5b041415156107f757600080fd5b8091505b5092915050565b60008060008311151561081457600080fd5b828481151561081f57fe5b04905080915050929150505600a165627a7a723058209e605c6ad8ab20102a5afae2ebee91f8419e93a01201082d9084fdf0cadda8c60029",
  "sourceMap": "186:1069:6:-;;;314:103;8:9:-1;5:2;;;30:1;27;20:12;5:2;314:103:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;397:15;380:14;;:32;;;;;;;;;;;;;;;;;;314:103;186:1069;;;;;;",
  "deployedSourceMap": "186:1069:6:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;421:600;;8:9:-1;5:2;;;30:1;27;20:12;5:2;421:600:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;264:45;;8:9:-1;5:2;;;30:1;27;20:12;5:2;264:45:6;;;;;;;;;;;;;;;;;;;;;;;;;;;1025:228;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1025:228:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;421:600;516:10;536:39;644;753:22;831;603:14;;;;;;;;;;;:26;;;630:6;603:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;603:34:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;603:34:6;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;603:34:6;;;;;;;;;;;;;;;;536:102;;711:14;;;;;;;;;;;:26;;;738:6;711:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;711:34:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;711:34:6;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;711:34:6;;;;;;;;;;;;;;;;644:102;;778:14;:38;;;817:7;778:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;778:47:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;778:47:6;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;778:47:6;;;;;;;;;;;;;;;;753:72;;856:14;:38;;;895:7;856:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;856:47:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;856:47:6;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;856:47:6;;;;;;;;;;;;;;;;831:72;;967:49;1001:14;968:27;987:7;968:14;:18;;:27;;;;:::i;:::-;967:33;;:49;;;;:::i;:::-;959:57;;421:600;;;;;;;;:::o;264:45::-;;;;;;;;;;;;;:::o;1025:228::-;1115:4;1188:1;1142:48;;:14;;;;;;;;;;;:26;;;1169:6;1142:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1142:34:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1142:34:6;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1142:34:6;;;;;;;;;;;;;;;;:48;;;;:106;;;;;1246:1;1200:48;;:14;;;;;;;;;;;:26;;;1227:6;1200:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1200:34:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1200:34:6;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1200:34:6;;;;;;;;;;;;;;;;:48;;;;1142:106;1129:119;;1025:228;;;;:::o;208:381:8:-;266:7;527:9;495:1;490;:6;486:35;;;513:1;506:8;;;;486:35;543:1;539;:5;527:17;;567:1;562;558;:5;;;;;;;;:10;550:19;;;;;;;;583:1;576:8;;208:381;;;;;;:::o;699:270::-;757:7;850:9;784:1;780;:5;772:14;;;;;;;;866:1;862;:5;;;;;;;;850:17;;963:1;956:8;;699:270;;;;;:::o",
  "source": "pragma solidity >=0.4.24;\n\nimport \"../TPSafeMath.sol\";\nimport \"./IExchangeAdapter.sol\";\nimport \"./Uniswap/UniswapExchangeInterface.sol\";\nimport \"./Uniswap/UniswapFactoryInterface.sol\";\n\ncontract UniswapAdapter is IExchangeAdapter {\n  using TPSafeMath for uint;\n\n  UniswapFactoryInterface public uniswapFactory;\n\n  constructor(UniswapFactoryInterface _uniswapFactory) public {\n    uniswapFactory = _uniswapFactory;\n  }\n\n  function getPriceForTokenPair(address token1, address token2)\n    public\n    view\n    returns (uint price)\n  {\n    UniswapExchangeInterface token1Exchange = UniswapExchangeInterface(uniswapFactory.getExchange(token1));\n    UniswapExchangeInterface token2Exchange = UniswapExchangeInterface(uniswapFactory.getExchange(token2));\n\n    uint256 token1PriceEth = token1Exchange.getTokenToEthInputPrice(1 ether);\n    uint256 token2PriceEth = token2Exchange.getTokenToEthInputPrice(1 ether);\n\n    // calculate price in wei (price * 10 ** 18)\n    price = (token1PriceEth.mul(1 ether)).div(token2PriceEth);\n  }\n\n  function tokenPairExists(address token1, address token2)\n    public\n    view\n    returns (bool)\n  {\n    return\n      uniswapFactory.getExchange(token1) != address(0) &&\n      uniswapFactory.getExchange(token2) != address(0);\n  }\n}\n",
  "sourcePath": "/Users/mfcalvanese/dev/eth/token-price-oracles/contracts/ExchangeAdapters/UniswapAdapter.sol",
  "ast": {
    "absolutePath": "/Users/mfcalvanese/dev/eth/token-price-oracles/contracts/ExchangeAdapters/UniswapAdapter.sol",
    "exportedSymbols": {
      "UniswapAdapter": [
        1129
      ]
    },
    "id": 1130,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1026,
        "literals": [
          "solidity",
          ">=",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:25:6"
      },
      {
        "absolutePath": "/Users/mfcalvanese/dev/eth/token-price-oracles/contracts/TPSafeMath.sol",
        "file": "../TPSafeMath.sol",
        "id": 1027,
        "nodeType": "ImportDirective",
        "scope": 1130,
        "sourceUnit": 1261,
        "src": "27:27:6",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/mfcalvanese/dev/eth/token-price-oracles/contracts/ExchangeAdapters/IExchangeAdapter.sol",
        "file": "./IExchangeAdapter.sol",
        "id": 1028,
        "nodeType": "ImportDirective",
        "scope": 1130,
        "sourceUnit": 641,
        "src": "55:32:6",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/mfcalvanese/dev/eth/token-price-oracles/contracts/ExchangeAdapters/Uniswap/UniswapExchangeInterface.sol",
        "file": "./Uniswap/UniswapExchangeInterface.sol",
        "id": 1029,
        "nodeType": "ImportDirective",
        "scope": 1130,
        "sourceUnit": 985,
        "src": "88:48:6",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/mfcalvanese/dev/eth/token-price-oracles/contracts/ExchangeAdapters/Uniswap/UniswapFactoryInterface.sol",
        "file": "./Uniswap/UniswapFactoryInterface.sol",
        "id": 1030,
        "nodeType": "ImportDirective",
        "scope": 1130,
        "sourceUnit": 1025,
        "src": "137:47:6",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1031,
              "name": "IExchangeAdapter",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 640,
              "src": "213:16:6",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IExchangeAdapter_$640",
                "typeString": "contract IExchangeAdapter"
              }
            },
            "id": 1032,
            "nodeType": "InheritanceSpecifier",
            "src": "213:16:6"
          }
        ],
        "contractDependencies": [
          640
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 1129,
        "linearizedBaseContracts": [
          1129,
          640
        ],
        "name": "UniswapAdapter",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 1035,
            "libraryName": {
              "contractScope": null,
              "id": 1033,
              "name": "TPSafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1260,
              "src": "240:10:6",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_TPSafeMath_$1260",
                "typeString": "library TPSafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "234:26:6",
            "typeName": {
              "id": 1034,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "255:4:6",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "constant": false,
            "id": 1037,
            "name": "uniswapFactory",
            "nodeType": "VariableDeclaration",
            "scope": 1129,
            "src": "264:45:6",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_UniswapFactoryInterface_$1024",
              "typeString": "contract UniswapFactoryInterface"
            },
            "typeName": {
              "contractScope": null,
              "id": 1036,
              "name": "UniswapFactoryInterface",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1024,
              "src": "264:23:6",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_UniswapFactoryInterface_$1024",
                "typeString": "contract UniswapFactoryInterface"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1046,
              "nodeType": "Block",
              "src": "374:43:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1044,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1042,
                      "name": "uniswapFactory",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1037,
                      "src": "380:14:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_UniswapFactoryInterface_$1024",
                        "typeString": "contract UniswapFactoryInterface"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1043,
                      "name": "_uniswapFactory",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1039,
                      "src": "397:15:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_UniswapFactoryInterface_$1024",
                        "typeString": "contract UniswapFactoryInterface"
                      }
                    },
                    "src": "380:32:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_UniswapFactoryInterface_$1024",
                      "typeString": "contract UniswapFactoryInterface"
                    }
                  },
                  "id": 1045,
                  "nodeType": "ExpressionStatement",
                  "src": "380:32:6"
                }
              ]
            },
            "documentation": null,
            "id": 1047,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1040,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1039,
                  "name": "_uniswapFactory",
                  "nodeType": "VariableDeclaration",
                  "scope": 1047,
                  "src": "326:39:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_UniswapFactoryInterface_$1024",
                    "typeString": "contract UniswapFactoryInterface"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1038,
                    "name": "UniswapFactoryInterface",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1024,
                    "src": "326:23:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_UniswapFactoryInterface_$1024",
                      "typeString": "contract UniswapFactoryInterface"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "325:41:6"
            },
            "payable": false,
            "returnParameters": {
              "id": 1041,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "374:0:6"
            },
            "scope": 1129,
            "src": "314:103:6",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1099,
              "nodeType": "Block",
              "src": "530:491:6",
              "statements": [
                {
                  "assignments": [
                    1057
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1057,
                      "name": "token1Exchange",
                      "nodeType": "VariableDeclaration",
                      "scope": 1100,
                      "src": "536:39:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_UniswapExchangeInterface_$984",
                        "typeString": "contract UniswapExchangeInterface"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1056,
                        "name": "UniswapExchangeInterface",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 984,
                        "src": "536:24:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_UniswapExchangeInterface_$984",
                          "typeString": "contract UniswapExchangeInterface"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1064,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1061,
                            "name": "token1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1049,
                            "src": "630:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1059,
                            "name": "uniswapFactory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1037,
                            "src": "603:14:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_UniswapFactoryInterface_$1024",
                              "typeString": "contract UniswapFactoryInterface"
                            }
                          },
                          "id": 1060,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getExchange",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1004,
                          "src": "603:26:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
                            "typeString": "function (address) view external returns (address)"
                          }
                        },
                        "id": 1062,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "603:34:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 1058,
                      "name": "UniswapExchangeInterface",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 984,
                      "src": "578:24:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_UniswapExchangeInterface_$984_$",
                        "typeString": "type(contract UniswapExchangeInterface)"
                      }
                    },
                    "id": 1063,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "578:60:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_UniswapExchangeInterface_$984",
                      "typeString": "contract UniswapExchangeInterface"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "536:102:6"
                },
                {
                  "assignments": [
                    1066
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1066,
                      "name": "token2Exchange",
                      "nodeType": "VariableDeclaration",
                      "scope": 1100,
                      "src": "644:39:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_UniswapExchangeInterface_$984",
                        "typeString": "contract UniswapExchangeInterface"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1065,
                        "name": "UniswapExchangeInterface",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 984,
                        "src": "644:24:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_UniswapExchangeInterface_$984",
                          "typeString": "contract UniswapExchangeInterface"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1073,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1070,
                            "name": "token2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1051,
                            "src": "738:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1068,
                            "name": "uniswapFactory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1037,
                            "src": "711:14:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_UniswapFactoryInterface_$1024",
                              "typeString": "contract UniswapFactoryInterface"
                            }
                          },
                          "id": 1069,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getExchange",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1004,
                          "src": "711:26:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
                            "typeString": "function (address) view external returns (address)"
                          }
                        },
                        "id": 1071,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "711:34:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 1067,
                      "name": "UniswapExchangeInterface",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 984,
                      "src": "686:24:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_UniswapExchangeInterface_$984_$",
                        "typeString": "type(contract UniswapExchangeInterface)"
                      }
                    },
                    "id": 1072,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "686:60:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_UniswapExchangeInterface_$984",
                      "typeString": "contract UniswapExchangeInterface"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "644:102:6"
                },
                {
                  "assignments": [
                    1075
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1075,
                      "name": "token1PriceEth",
                      "nodeType": "VariableDeclaration",
                      "scope": 1100,
                      "src": "753:22:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1074,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "753:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1080,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 1078,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "817:7:6",
                        "subdenomination": "ether",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1000000000000000000_by_1",
                          "typeString": "int_const 1000000000000000000"
                        },
                        "value": "1"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_1000000000000000000_by_1",
                          "typeString": "int_const 1000000000000000000"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1076,
                        "name": "token1Exchange",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1057,
                        "src": "778:14:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_UniswapExchangeInterface_$984",
                          "typeString": "contract UniswapExchangeInterface"
                        }
                      },
                      "id": 1077,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getTokenToEthInputPrice",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 699,
                      "src": "778:38:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256) view external returns (uint256)"
                      }
                    },
                    "id": 1079,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "778:47:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "753:72:6"
                },
                {
                  "assignments": [
                    1082
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1082,
                      "name": "token2PriceEth",
                      "nodeType": "VariableDeclaration",
                      "scope": 1100,
                      "src": "831:22:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1081,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "831:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1087,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 1085,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "895:7:6",
                        "subdenomination": "ether",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1000000000000000000_by_1",
                          "typeString": "int_const 1000000000000000000"
                        },
                        "value": "1"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_1000000000000000000_by_1",
                          "typeString": "int_const 1000000000000000000"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1083,
                        "name": "token2Exchange",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1066,
                        "src": "856:14:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_UniswapExchangeInterface_$984",
                          "typeString": "contract UniswapExchangeInterface"
                        }
                      },
                      "id": 1084,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getTokenToEthInputPrice",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 699,
                      "src": "856:38:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256) view external returns (uint256)"
                      }
                    },
                    "id": 1086,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "856:47:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "831:72:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1097,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1088,
                      "name": "price",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1054,
                      "src": "959:5:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1095,
                          "name": "token2PriceEth",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1082,
                          "src": "1001:14:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 1091,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "987:7:6",
                                  "subdenomination": "ether",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                    "typeString": "int_const 1000000000000000000"
                                  },
                                  "value": "1"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                    "typeString": "int_const 1000000000000000000"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1089,
                                  "name": "token1PriceEth",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1075,
                                  "src": "968:14:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 1090,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1167,
                                "src": "968:18:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 1092,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "968:27:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 1093,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "967:29:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1094,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "div",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1191,
                        "src": "967:33:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 1096,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "967:49:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "959:57:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1098,
                  "nodeType": "ExpressionStatement",
                  "src": "959:57:6"
                }
              ]
            },
            "documentation": null,
            "id": 1100,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getPriceForTokenPair",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1052,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1049,
                  "name": "token1",
                  "nodeType": "VariableDeclaration",
                  "scope": 1100,
                  "src": "451:14:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1048,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "451:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1051,
                  "name": "token2",
                  "nodeType": "VariableDeclaration",
                  "scope": 1100,
                  "src": "467:14:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1050,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "467:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "450:32:6"
            },
            "payable": false,
            "returnParameters": {
              "id": 1055,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1054,
                  "name": "price",
                  "nodeType": "VariableDeclaration",
                  "scope": 1100,
                  "src": "516:10:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1053,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "516:4:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "515:12:6"
            },
            "scope": 1129,
            "src": "421:600:6",
            "stateMutability": "view",
            "superFunction": 630,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1127,
              "nodeType": "Block",
              "src": "1123:130:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 1125,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 1116,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1111,
                            "name": "token1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1102,
                            "src": "1169:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1109,
                            "name": "uniswapFactory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1037,
                            "src": "1142:14:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_UniswapFactoryInterface_$1024",
                              "typeString": "contract UniswapFactoryInterface"
                            }
                          },
                          "id": 1110,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getExchange",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1004,
                          "src": "1142:26:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
                            "typeString": "function (address) view external returns (address)"
                          }
                        },
                        "id": 1112,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1142:34:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 1114,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1188:1:6",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 1113,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1180:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 1115,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1180:10:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "src": "1142:48:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 1124,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1119,
                            "name": "token2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1104,
                            "src": "1227:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1117,
                            "name": "uniswapFactory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1037,
                            "src": "1200:14:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_UniswapFactoryInterface_$1024",
                              "typeString": "contract UniswapFactoryInterface"
                            }
                          },
                          "id": 1118,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getExchange",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1004,
                          "src": "1200:26:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
                            "typeString": "function (address) view external returns (address)"
                          }
                        },
                        "id": 1120,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1200:34:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 1122,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1246:1:6",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 1121,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1238:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 1123,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1238:10:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "src": "1200:48:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "1142:106:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 1108,
                  "id": 1126,
                  "nodeType": "Return",
                  "src": "1129:119:6"
                }
              ]
            },
            "documentation": null,
            "id": 1128,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "tokenPairExists",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1105,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1102,
                  "name": "token1",
                  "nodeType": "VariableDeclaration",
                  "scope": 1128,
                  "src": "1050:14:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1101,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1050:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1104,
                  "name": "token2",
                  "nodeType": "VariableDeclaration",
                  "scope": 1128,
                  "src": "1066:14:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1103,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1066:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1049:32:6"
            },
            "payable": false,
            "returnParameters": {
              "id": 1108,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1107,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1128,
                  "src": "1115:4:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1106,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1115:4:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1114:6:6"
            },
            "scope": 1129,
            "src": "1025:228:6",
            "stateMutability": "view",
            "superFunction": 639,
            "visibility": "public"
          }
        ],
        "scope": 1130,
        "src": "186:1069:6"
      }
    ],
    "src": "0:1256:6"
  },
  "legacyAST": {
    "absolutePath": "/Users/mfcalvanese/dev/eth/token-price-oracles/contracts/ExchangeAdapters/UniswapAdapter.sol",
    "exportedSymbols": {
      "UniswapAdapter": [
        1129
      ]
    },
    "id": 1130,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1026,
        "literals": [
          "solidity",
          ">=",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:25:6"
      },
      {
        "absolutePath": "/Users/mfcalvanese/dev/eth/token-price-oracles/contracts/TPSafeMath.sol",
        "file": "../TPSafeMath.sol",
        "id": 1027,
        "nodeType": "ImportDirective",
        "scope": 1130,
        "sourceUnit": 1261,
        "src": "27:27:6",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/mfcalvanese/dev/eth/token-price-oracles/contracts/ExchangeAdapters/IExchangeAdapter.sol",
        "file": "./IExchangeAdapter.sol",
        "id": 1028,
        "nodeType": "ImportDirective",
        "scope": 1130,
        "sourceUnit": 641,
        "src": "55:32:6",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/mfcalvanese/dev/eth/token-price-oracles/contracts/ExchangeAdapters/Uniswap/UniswapExchangeInterface.sol",
        "file": "./Uniswap/UniswapExchangeInterface.sol",
        "id": 1029,
        "nodeType": "ImportDirective",
        "scope": 1130,
        "sourceUnit": 985,
        "src": "88:48:6",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/mfcalvanese/dev/eth/token-price-oracles/contracts/ExchangeAdapters/Uniswap/UniswapFactoryInterface.sol",
        "file": "./Uniswap/UniswapFactoryInterface.sol",
        "id": 1030,
        "nodeType": "ImportDirective",
        "scope": 1130,
        "sourceUnit": 1025,
        "src": "137:47:6",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1031,
              "name": "IExchangeAdapter",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 640,
              "src": "213:16:6",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IExchangeAdapter_$640",
                "typeString": "contract IExchangeAdapter"
              }
            },
            "id": 1032,
            "nodeType": "InheritanceSpecifier",
            "src": "213:16:6"
          }
        ],
        "contractDependencies": [
          640
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 1129,
        "linearizedBaseContracts": [
          1129,
          640
        ],
        "name": "UniswapAdapter",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 1035,
            "libraryName": {
              "contractScope": null,
              "id": 1033,
              "name": "TPSafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1260,
              "src": "240:10:6",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_TPSafeMath_$1260",
                "typeString": "library TPSafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "234:26:6",
            "typeName": {
              "id": 1034,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "255:4:6",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "constant": false,
            "id": 1037,
            "name": "uniswapFactory",
            "nodeType": "VariableDeclaration",
            "scope": 1129,
            "src": "264:45:6",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_UniswapFactoryInterface_$1024",
              "typeString": "contract UniswapFactoryInterface"
            },
            "typeName": {
              "contractScope": null,
              "id": 1036,
              "name": "UniswapFactoryInterface",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1024,
              "src": "264:23:6",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_UniswapFactoryInterface_$1024",
                "typeString": "contract UniswapFactoryInterface"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1046,
              "nodeType": "Block",
              "src": "374:43:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1044,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1042,
                      "name": "uniswapFactory",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1037,
                      "src": "380:14:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_UniswapFactoryInterface_$1024",
                        "typeString": "contract UniswapFactoryInterface"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1043,
                      "name": "_uniswapFactory",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1039,
                      "src": "397:15:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_UniswapFactoryInterface_$1024",
                        "typeString": "contract UniswapFactoryInterface"
                      }
                    },
                    "src": "380:32:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_UniswapFactoryInterface_$1024",
                      "typeString": "contract UniswapFactoryInterface"
                    }
                  },
                  "id": 1045,
                  "nodeType": "ExpressionStatement",
                  "src": "380:32:6"
                }
              ]
            },
            "documentation": null,
            "id": 1047,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1040,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1039,
                  "name": "_uniswapFactory",
                  "nodeType": "VariableDeclaration",
                  "scope": 1047,
                  "src": "326:39:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_UniswapFactoryInterface_$1024",
                    "typeString": "contract UniswapFactoryInterface"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1038,
                    "name": "UniswapFactoryInterface",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1024,
                    "src": "326:23:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_UniswapFactoryInterface_$1024",
                      "typeString": "contract UniswapFactoryInterface"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "325:41:6"
            },
            "payable": false,
            "returnParameters": {
              "id": 1041,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "374:0:6"
            },
            "scope": 1129,
            "src": "314:103:6",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1099,
              "nodeType": "Block",
              "src": "530:491:6",
              "statements": [
                {
                  "assignments": [
                    1057
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1057,
                      "name": "token1Exchange",
                      "nodeType": "VariableDeclaration",
                      "scope": 1100,
                      "src": "536:39:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_UniswapExchangeInterface_$984",
                        "typeString": "contract UniswapExchangeInterface"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1056,
                        "name": "UniswapExchangeInterface",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 984,
                        "src": "536:24:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_UniswapExchangeInterface_$984",
                          "typeString": "contract UniswapExchangeInterface"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1064,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1061,
                            "name": "token1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1049,
                            "src": "630:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1059,
                            "name": "uniswapFactory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1037,
                            "src": "603:14:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_UniswapFactoryInterface_$1024",
                              "typeString": "contract UniswapFactoryInterface"
                            }
                          },
                          "id": 1060,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getExchange",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1004,
                          "src": "603:26:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
                            "typeString": "function (address) view external returns (address)"
                          }
                        },
                        "id": 1062,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "603:34:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 1058,
                      "name": "UniswapExchangeInterface",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 984,
                      "src": "578:24:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_UniswapExchangeInterface_$984_$",
                        "typeString": "type(contract UniswapExchangeInterface)"
                      }
                    },
                    "id": 1063,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "578:60:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_UniswapExchangeInterface_$984",
                      "typeString": "contract UniswapExchangeInterface"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "536:102:6"
                },
                {
                  "assignments": [
                    1066
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1066,
                      "name": "token2Exchange",
                      "nodeType": "VariableDeclaration",
                      "scope": 1100,
                      "src": "644:39:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_UniswapExchangeInterface_$984",
                        "typeString": "contract UniswapExchangeInterface"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1065,
                        "name": "UniswapExchangeInterface",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 984,
                        "src": "644:24:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_UniswapExchangeInterface_$984",
                          "typeString": "contract UniswapExchangeInterface"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1073,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1070,
                            "name": "token2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1051,
                            "src": "738:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1068,
                            "name": "uniswapFactory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1037,
                            "src": "711:14:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_UniswapFactoryInterface_$1024",
                              "typeString": "contract UniswapFactoryInterface"
                            }
                          },
                          "id": 1069,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getExchange",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1004,
                          "src": "711:26:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
                            "typeString": "function (address) view external returns (address)"
                          }
                        },
                        "id": 1071,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "711:34:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 1067,
                      "name": "UniswapExchangeInterface",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 984,
                      "src": "686:24:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_UniswapExchangeInterface_$984_$",
                        "typeString": "type(contract UniswapExchangeInterface)"
                      }
                    },
                    "id": 1072,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "686:60:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_UniswapExchangeInterface_$984",
                      "typeString": "contract UniswapExchangeInterface"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "644:102:6"
                },
                {
                  "assignments": [
                    1075
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1075,
                      "name": "token1PriceEth",
                      "nodeType": "VariableDeclaration",
                      "scope": 1100,
                      "src": "753:22:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1074,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "753:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1080,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 1078,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "817:7:6",
                        "subdenomination": "ether",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1000000000000000000_by_1",
                          "typeString": "int_const 1000000000000000000"
                        },
                        "value": "1"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_1000000000000000000_by_1",
                          "typeString": "int_const 1000000000000000000"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1076,
                        "name": "token1Exchange",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1057,
                        "src": "778:14:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_UniswapExchangeInterface_$984",
                          "typeString": "contract UniswapExchangeInterface"
                        }
                      },
                      "id": 1077,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getTokenToEthInputPrice",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 699,
                      "src": "778:38:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256) view external returns (uint256)"
                      }
                    },
                    "id": 1079,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "778:47:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "753:72:6"
                },
                {
                  "assignments": [
                    1082
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1082,
                      "name": "token2PriceEth",
                      "nodeType": "VariableDeclaration",
                      "scope": 1100,
                      "src": "831:22:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1081,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "831:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1087,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 1085,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "895:7:6",
                        "subdenomination": "ether",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1000000000000000000_by_1",
                          "typeString": "int_const 1000000000000000000"
                        },
                        "value": "1"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_1000000000000000000_by_1",
                          "typeString": "int_const 1000000000000000000"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1083,
                        "name": "token2Exchange",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1066,
                        "src": "856:14:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_UniswapExchangeInterface_$984",
                          "typeString": "contract UniswapExchangeInterface"
                        }
                      },
                      "id": 1084,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getTokenToEthInputPrice",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 699,
                      "src": "856:38:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256) view external returns (uint256)"
                      }
                    },
                    "id": 1086,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "856:47:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "831:72:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1097,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1088,
                      "name": "price",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1054,
                      "src": "959:5:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1095,
                          "name": "token2PriceEth",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1082,
                          "src": "1001:14:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 1091,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "987:7:6",
                                  "subdenomination": "ether",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                    "typeString": "int_const 1000000000000000000"
                                  },
                                  "value": "1"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                    "typeString": "int_const 1000000000000000000"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1089,
                                  "name": "token1PriceEth",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1075,
                                  "src": "968:14:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 1090,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1167,
                                "src": "968:18:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 1092,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "968:27:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 1093,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "967:29:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1094,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "div",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1191,
                        "src": "967:33:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 1096,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "967:49:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "959:57:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1098,
                  "nodeType": "ExpressionStatement",
                  "src": "959:57:6"
                }
              ]
            },
            "documentation": null,
            "id": 1100,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getPriceForTokenPair",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1052,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1049,
                  "name": "token1",
                  "nodeType": "VariableDeclaration",
                  "scope": 1100,
                  "src": "451:14:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1048,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "451:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1051,
                  "name": "token2",
                  "nodeType": "VariableDeclaration",
                  "scope": 1100,
                  "src": "467:14:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1050,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "467:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "450:32:6"
            },
            "payable": false,
            "returnParameters": {
              "id": 1055,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1054,
                  "name": "price",
                  "nodeType": "VariableDeclaration",
                  "scope": 1100,
                  "src": "516:10:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1053,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "516:4:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "515:12:6"
            },
            "scope": 1129,
            "src": "421:600:6",
            "stateMutability": "view",
            "superFunction": 630,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1127,
              "nodeType": "Block",
              "src": "1123:130:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 1125,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 1116,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1111,
                            "name": "token1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1102,
                            "src": "1169:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1109,
                            "name": "uniswapFactory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1037,
                            "src": "1142:14:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_UniswapFactoryInterface_$1024",
                              "typeString": "contract UniswapFactoryInterface"
                            }
                          },
                          "id": 1110,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getExchange",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1004,
                          "src": "1142:26:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
                            "typeString": "function (address) view external returns (address)"
                          }
                        },
                        "id": 1112,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1142:34:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 1114,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1188:1:6",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 1113,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1180:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 1115,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1180:10:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "src": "1142:48:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 1124,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1119,
                            "name": "token2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1104,
                            "src": "1227:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1117,
                            "name": "uniswapFactory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1037,
                            "src": "1200:14:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_UniswapFactoryInterface_$1024",
                              "typeString": "contract UniswapFactoryInterface"
                            }
                          },
                          "id": 1118,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getExchange",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1004,
                          "src": "1200:26:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
                            "typeString": "function (address) view external returns (address)"
                          }
                        },
                        "id": 1120,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1200:34:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 1122,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1246:1:6",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 1121,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1238:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 1123,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1238:10:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "src": "1200:48:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "1142:106:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 1108,
                  "id": 1126,
                  "nodeType": "Return",
                  "src": "1129:119:6"
                }
              ]
            },
            "documentation": null,
            "id": 1128,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "tokenPairExists",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1105,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1102,
                  "name": "token1",
                  "nodeType": "VariableDeclaration",
                  "scope": 1128,
                  "src": "1050:14:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1101,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1050:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1104,
                  "name": "token2",
                  "nodeType": "VariableDeclaration",
                  "scope": 1128,
                  "src": "1066:14:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1103,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1066:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1049:32:6"
            },
            "payable": false,
            "returnParameters": {
              "id": 1108,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1107,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1128,
                  "src": "1115:4:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1106,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1115:4:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1114:6:6"
            },
            "scope": 1129,
            "src": "1025:228:6",
            "stateMutability": "view",
            "superFunction": 639,
            "visibility": "public"
          }
        ],
        "scope": 1130,
        "src": "186:1069:6"
      }
    ],
    "src": "0:1256:6"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.25+commit.59dbf8f1.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "2.0.2",
  "updatedAt": "2020-02-17T22:26:48.001Z"
}