{
  "contractName": "TestBancorNetwork",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_fee",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "contract IConverterAnchor",
          "name": "_smartToken",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "contract IERC20Token",
          "name": "_fromToken",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "contract IERC20Token",
          "name": "_toToken",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_fromAmount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_toAmount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_trader",
          "type": "address"
        }
      ],
      "name": "Conversion",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_prevOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_newOwner",
          "type": "address"
        }
      ],
      "name": "OwnerUpdate",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "acceptOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "_path",
          "type": "address[]"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_minReturn",
          "type": "uint256"
        }
      ],
      "name": "claimAndConvert",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "_path",
          "type": "address[]"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_minReturn",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_affiliateAccount",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_affiliateFee",
          "type": "uint256"
        }
      ],
      "name": "claimAndConvert2",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "_path",
          "type": "address[]"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_minReturn",
          "type": "uint256"
        },
        {
          "internalType": "address payable",
          "name": "_beneficiary",
          "type": "address"
        }
      ],
      "name": "claimAndConvertFor",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "_path",
          "type": "address[]"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_minReturn",
          "type": "uint256"
        },
        {
          "internalType": "address payable",
          "name": "_beneficiary",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_affiliateAccount",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_affiliateFee",
          "type": "uint256"
        }
      ],
      "name": "claimAndConvertFor2",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "_path",
          "type": "address[]"
        },
        {
          "internalType": "contract IBancorX",
          "name": "_bancorX",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_conversionId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_minReturn",
          "type": "uint256"
        },
        {
          "internalType": "address payable",
          "name": "_beneficiary",
          "type": "address"
        }
      ],
      "name": "completeXConversion",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IERC20Token",
          "name": "_sourceToken",
          "type": "address"
        },
        {
          "internalType": "contract IERC20Token",
          "name": "_targetToken",
          "type": "address"
        }
      ],
      "name": "conversionPath",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "_path",
          "type": "address[]"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_minReturn",
          "type": "uint256"
        }
      ],
      "name": "convert",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "_path",
          "type": "address[]"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_minReturn",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_affiliateAccount",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_affiliateFee",
          "type": "uint256"
        }
      ],
      "name": "convert2",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "_path",
          "type": "address[]"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_minReturn",
          "type": "uint256"
        },
        {
          "internalType": "address payable",
          "name": "_beneficiary",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_affiliateAccount",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_affiliateFee",
          "type": "uint256"
        }
      ],
      "name": "convertByPath",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "_path",
          "type": "address[]"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_minReturn",
          "type": "uint256"
        },
        {
          "internalType": "address payable",
          "name": "_beneficiary",
          "type": "address"
        }
      ],
      "name": "convertFor",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "_path",
          "type": "address[]"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_minReturn",
          "type": "uint256"
        },
        {
          "internalType": "address payable",
          "name": "_beneficiary",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_affiliateAccount",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_affiliateFee",
          "type": "uint256"
        }
      ],
      "name": "convertFor2",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IERC20Token",
          "name": "",
          "type": "address"
        }
      ],
      "name": "etherTokens",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "_path",
          "type": "address[]"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "getReturnByPath",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "maxAffiliateFee",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "newOwner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "onlyOwnerCanUpdateRegistry",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "prevRegistry",
      "outputs": [
        {
          "internalType": "contract IContractRegistry",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "_path",
          "type": "address[]"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "rateByPath",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IEtherToken",
          "name": "_token",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "_register",
          "type": "bool"
        }
      ],
      "name": "registerEtherToken",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "registry",
      "outputs": [
        {
          "internalType": "contract IContractRegistry",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "restoreRegistry",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bool",
          "name": "_onlyOwnerCanUpdateRegistry",
          "type": "bool"
        }
      ],
      "name": "restrictRegistryUpdate",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_maxAffiliateFee",
          "type": "uint256"
        }
      ],
      "name": "setMaxAffiliateFee",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "updateRegistry",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IERC20Token",
          "name": "_token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "withdrawTokens",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "_path",
          "type": "address[]"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_minReturn",
          "type": "uint256"
        },
        {
          "internalType": "bytes32",
          "name": "_targetBlockchain",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "_targetAccount",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "_conversionId",
          "type": "uint256"
        }
      ],
      "name": "xConvert",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "_path",
          "type": "address[]"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_minReturn",
          "type": "uint256"
        },
        {
          "internalType": "bytes32",
          "name": "_targetBlockchain",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "_targetAccount",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "_conversionId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_affiliateAccount",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_affiliateFee",
          "type": "uint256"
        }
      ],
      "name": "xConvert2",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IConverter",
          "name": "_converter",
          "type": "address"
        }
      ],
      "name": "isV28OrHigherConverterExternal",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getReturnOld",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getReturnNew",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_fee\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IConverterAnchor\",\"name\":\"_smartToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20Token\",\"name\":\"_fromToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20Token\",\"name\":\"_toToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_fromAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_toAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_trader\",\"type\":\"address\"}],\"name\":\"Conversion\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_prevOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_newOwner\",\"type\":\"address\"}],\"name\":\"OwnerUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_path\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_minReturn\",\"type\":\"uint256\"}],\"name\":\"claimAndConvert\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_path\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_minReturn\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_affiliateAccount\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_affiliateFee\",\"type\":\"uint256\"}],\"name\":\"claimAndConvert2\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_path\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_minReturn\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"_beneficiary\",\"type\":\"address\"}],\"name\":\"claimAndConvertFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_path\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_minReturn\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"_beneficiary\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_affiliateAccount\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_affiliateFee\",\"type\":\"uint256\"}],\"name\":\"claimAndConvertFor2\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_path\",\"type\":\"address[]\"},{\"internalType\":\"contract IBancorX\",\"name\":\"_bancorX\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_conversionId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_minReturn\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"_beneficiary\",\"type\":\"address\"}],\"name\":\"completeXConversion\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20Token\",\"name\":\"_sourceToken\",\"type\":\"address\"},{\"internalType\":\"contract IERC20Token\",\"name\":\"_targetToken\",\"type\":\"address\"}],\"name\":\"conversionPath\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_path\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_minReturn\",\"type\":\"uint256\"}],\"name\":\"convert\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_path\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_minReturn\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_affiliateAccount\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_affiliateFee\",\"type\":\"uint256\"}],\"name\":\"convert2\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_path\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_minReturn\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"_beneficiary\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_affiliateAccount\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_affiliateFee\",\"type\":\"uint256\"}],\"name\":\"convertByPath\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_path\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_minReturn\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"_beneficiary\",\"type\":\"address\"}],\"name\":\"convertFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_path\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_minReturn\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"_beneficiary\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_affiliateAccount\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_affiliateFee\",\"type\":\"uint256\"}],\"name\":\"convertFor2\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20Token\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"etherTokens\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_path\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"getReturnByPath\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReturnNew\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReturnOld\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IConverter\",\"name\":\"_converter\",\"type\":\"address\"}],\"name\":\"isV28OrHigherConverterExternal\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxAffiliateFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"newOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"onlyOwnerCanUpdateRegistry\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"prevRegistry\",\"outputs\":[{\"internalType\":\"contract IContractRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_path\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"rateByPath\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IEtherToken\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_register\",\"type\":\"bool\"}],\"name\":\"registerEtherToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registry\",\"outputs\":[{\"internalType\":\"contract IContractRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"restoreRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_onlyOwnerCanUpdateRegistry\",\"type\":\"bool\"}],\"name\":\"restrictRegistryUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_maxAffiliateFee\",\"type\":\"uint256\"}],\"name\":\"setMaxAffiliateFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"updateRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20Token\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"withdrawTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_path\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_minReturn\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"_targetBlockchain\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_targetAccount\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_conversionId\",\"type\":\"uint256\"}],\"name\":\"xConvert\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_path\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_minReturn\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"_targetBlockchain\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_targetAccount\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_conversionId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_affiliateAccount\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_affiliateFee\",\"type\":\"uint256\"}],\"name\":\"xConvert2\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"acceptOwnership()\":{\"details\":\"used by a new owner to accept an ownership transfer\"},\"claimAndConvert(address[],uint256,uint256)\":{\"details\":\"deprecated, backward compatibility\"},\"claimAndConvert2(address[],uint256,uint256,address,uint256)\":{\"details\":\"deprecated, backward compatibility\"},\"claimAndConvertFor(address[],uint256,uint256,address)\":{\"details\":\"deprecated, backward compatibility\"},\"claimAndConvertFor2(address[],uint256,uint256,address,address,uint256)\":{\"details\":\"deprecated, backward compatibility\"},\"completeXConversion(address[],address,uint256,uint256,address)\":{\"details\":\"allows a user to convert a token that was sent from another blockchain into any other token on the BancorNetwork ideally this transaction is created before the previous conversion is even complete, so so the input amount isn't known at that point - the amount is actually take from the BancorX contract directly by specifying the conversion id\",\"params\":{\"_bancorX\":\"address of the BancorX contract for the source token\",\"_beneficiary\":\"wallet to receive the conversion result\",\"_conversionId\":\"pre-determined unique (if non zero) id which refers to this conversion\",\"_minReturn\":\"if the conversion results in an amount smaller than the minimum return - it is cancelled, must be nonzero\",\"_path\":\"conversion path\"},\"returns\":{\"_0\":\"amount of tokens received from the conversion\"}},\"conversionPath(address,address)\":{\"details\":\"returns the conversion path between two tokens in the network note that this method is quite expensive in terms of gas and should generally be called off-chain\",\"params\":{\"_sourceToken\":\"source token address\",\"_targetToken\":\"target token address\"},\"returns\":{\"_0\":\"conversion path between the two tokens\"}},\"convert(address[],uint256,uint256)\":{\"details\":\"deprecated, backward compatibility\"},\"convert2(address[],uint256,uint256,address,uint256)\":{\"details\":\"deprecated, backward compatibility\"},\"convertByPath(address[],uint256,uint256,address,address,uint256)\":{\"details\":\"converts the token to any other token in the bancor network by following a predefined conversion path and transfers the result tokens to a target account affiliate account/fee can also be passed in to receive a conversion fee (on top of the liquidity provider fees) note that the network should already have been given allowance of the source token (if not ETH)\",\"params\":{\"_affiliateAccount\":\"wallet address to receive the affiliate fee or 0x0 to disable affiliate fee\",\"_affiliateFee\":\"affiliate fee in PPM or 0 to disable affiliate fee\",\"_amount\":\"amount to convert from, in the source token\",\"_beneficiary\":\"account that will receive the conversion result or 0x0 to send the result to the sender account\",\"_minReturn\":\"if the conversion results in an amount smaller than the minimum return - it is cancelled, must be greater than zero\",\"_path\":\"conversion path, see conversion path format above\"},\"returns\":{\"_0\":\"amount of tokens received from the conversion\"}},\"convertFor(address[],uint256,uint256,address)\":{\"details\":\"deprecated, backward compatibility\"},\"convertFor2(address[],uint256,uint256,address,address,uint256)\":{\"details\":\"deprecated, backward compatibility\"},\"getReturnByPath(address[],uint256)\":{\"details\":\"deprecated, backward compatibility\"},\"rateByPath(address[],uint256)\":{\"details\":\"returns the expected target amount of converting a given amount on a given path note that there is no support for circular paths\",\"params\":{\"_amount\":\"amount of _path[0] tokens received from the sender\",\"_path\":\"conversion path (see conversion path format above)\"},\"returns\":{\"_0\":\"expected target amount\"}},\"registerEtherToken(address,bool)\":{\"details\":\"allows the owner to register/unregister ether tokens\",\"params\":{\"_register\":\"true to register, false to unregister\",\"_token\":\"ether token contract address\"}},\"restoreRegistry()\":{\"details\":\"restores the previous contract-registry\"},\"restrictRegistryUpdate(bool)\":{\"details\":\"restricts the permission to update the contract-registry\",\"params\":{\"_onlyOwnerCanUpdateRegistry\":\"indicates whether or not permission is restricted to owner only\"}},\"setMaxAffiliateFee(uint256)\":{\"details\":\"allows the owner to update the maximum affiliate-fee\",\"params\":{\"_maxAffiliateFee\":\"maximum affiliate-fee\"}},\"transferOwnership(address)\":{\"details\":\"allows transferring the contract ownership the new owner still needs to accept the transfer can only be called by the contract owner\",\"params\":{\"_newOwner\":\"new contract owner\"}},\"updateRegistry()\":{\"details\":\"updates to the new contract-registry\"},\"withdrawTokens(address,address,uint256)\":{\"details\":\"withdraws tokens held by the contract and sends them to an account can only be called by the owner\",\"params\":{\"_amount\":\"amount to withdraw\",\"_to\":\"account to receive the new amount\",\"_token\":\"ERC20 token contract address\"}},\"xConvert(address[],uint256,uint256,bytes32,bytes32,uint256)\":{\"details\":\"converts any other token to BNT in the bancor network by following a predefined conversion path and transfers the result to an account on a different blockchain note that the network should already have been given allowance of the source token (if not ETH)\",\"params\":{\"_amount\":\"amount to convert from, in the source token\",\"_conversionId\":\"pre-determined unique (if non zero) id which refers to this transaction\",\"_minReturn\":\"if the conversion results in an amount smaller than the minimum return - it is cancelled, must be greater than zero\",\"_path\":\"conversion path, see conversion path format above\",\"_targetAccount\":\"address/account on the target blockchain to send the BNT to\",\"_targetBlockchain\":\"blockchain BNT will be issued on\"},\"returns\":{\"_0\":\"the amount of BNT received from this conversion\"}},\"xConvert2(address[],uint256,uint256,bytes32,bytes32,uint256,address,uint256)\":{\"details\":\"converts any other token to BNT in the bancor network by following a predefined conversion path and transfers the result to an account on a different blockchain note that the network should already have been given allowance of the source token (if not ETH)\",\"params\":{\"_affiliateAccount\":\"affiliate account\",\"_affiliateFee\":\"affiliate fee in PPM\",\"_amount\":\"amount to convert from, in the source token\",\"_conversionId\":\"pre-determined unique (if non zero) id which refers to this transaction\",\"_minReturn\":\"if the conversion results in an amount smaller than the minimum return - it is cancelled, must be greater than zero\",\"_path\":\"conversion path, see conversion path format above\",\"_targetAccount\":\"address/account on the target blockchain to send the BNT to\",\"_targetBlockchain\":\"blockchain BNT will be issued on\"},\"returns\":{\"_0\":\"the amount of BNT received from this conversion\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/helpers/TestBancorNetwork.sol\":\"TestBancorNetwork\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/BancorNetwork.sol\":{\"keccak256\":\"0xb1817f3d45dd66177f17cf45f1b660186ee35575222a11c9bc0e0d44b32846ea\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://ce648a9b8038bb11d1ed091a16aa831a973ff2896ae9aae6b34cb9a8d0e02b00\",\"dweb:/ipfs/QmQKqVVXV6dDBd8saigyEALeLwjG8nhqK8wLRqDGaKSDV6\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/IConversionPathFinder.sol\":{\"keccak256\":\"0x2d0f5b57bc448581a6e2296486ca618851138f40928049d75220623605915d7b\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://2182eb05da8442792a5f3f4d8cdb2cf0bf9e952ca02638f3880cc59d5fd6dcb6\",\"dweb:/ipfs/QmSH9uWh6zTQkcBgD7VGGSzYW9DjdBDkUZUZ6zhzPWPPDz\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/bancorx/interfaces/IBancorX.sol\":{\"keccak256\":\"0x65b5780d710159c7540078c38406c53db37a349fb468a0bf21bdc6262e497951\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://3df931a12770d10a22451326e38ae9d405d3e2716bdbdd6306b5e2361f6fe511\",\"dweb:/ipfs/QmcRBSaFLz516dAEqb8ZEiyx8ZTHZZ6rfxHn5roL2fHA3S\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/interfaces/IBancorFormula.sol\":{\"keccak256\":\"0xf30c95034af4c4ec6e8a859e90cf7a0bada29a805ede76e04644107a7c677c4e\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://b48070d4abf9c4a08c39e6c494fa9efd7389aa7f8b61b283c9ba02062b1c59b6\",\"dweb:/ipfs/Qme6U7SpspFPzMH2mTyKsXCnJEAgg1vX6NNFzuykbVSY5R\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/interfaces/IConverter.sol\":{\"keccak256\":\"0x18b0d73a3d5ee951ede1b3f840ed35b40570e34975703079a4451555f4dd089b\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://1cd7263f1ef60793e3929509150420037df9a1194c3d0f40bb2ff5516d6a373f\",\"dweb:/ipfs/QmNUbsZt2rzWPjStYycgz3vMbNP4VrAqZPRAK39QNqUoos\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/interfaces/IConverterAnchor.sol\":{\"keccak256\":\"0x9448cdbe90293fb5c1a0808b77af8754a1025b59c45f432eee01f659361a6115\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://1ef2bb2e1543c9324daf7f3fd086a57efb45b89f3d62b9d7a9fc78c138d24dbc\",\"dweb:/ipfs/QmVcXDib3K6xYJMBNxawmo4krJGiDfxb5oL64Lc3pi14XK\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/helpers/TestBancorNetwork.sol\":{\"keccak256\":\"0xc40ca5fce07a0b65d5739e15b7c0a1adb7b1abf40d6cfe5bd15794a68fc73ccf\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://e72a37e36080c3f65b9f4da8feccb955d4ea4429145c034e081e4577358c8eb9\",\"dweb:/ipfs/QmR5tF1rLfnRwSKJjwXNaoXdMt73SB94B9kBF8cyeTqkaP\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/token/interfaces/IERC20Token.sol\":{\"keccak256\":\"0xe6f988c3156e88258474526a541d5a42b6a9adae98b04177a059d9f723bc82cd\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://9a6eb77a5b9ce70995a11a6e48ac3985a4c70896fe5fe04d46146ad7c1c83ea3\",\"dweb:/ipfs/QmYvGSveZFG51tghwkVuu6eK9Jy8frHpfLxHTMyvNZN461\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/token/interfaces/IEtherToken.sol\":{\"keccak256\":\"0x6ed324da616d70af0b21fa073b1e5329b430e38b470177633a69710eff3da893\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://44f94aa59c67de636423cbdef82efb7d8e0562e73dfc9049a48054156aebaf14\",\"dweb:/ipfs/Qmdn8KAP54s7X3J6TCoZPhCpS19aCQzFYZuFABugJ5JA5D\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/token/interfaces/ISmartToken.sol\":{\"keccak256\":\"0x5cfc15e7a23a9872059b0cea4d2ae902c3fc074a39e1c645036ce38ad47881ec\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://890ee09d24de5778e34c4c27d1377d83d378e8f4a13fcb94d5102f61d4749cce\",\"dweb:/ipfs/QmT89f61fmsUN1BVdebKxUc5VU7sitiP33LNk7TTtF18oj\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/ContractRegistryClient.sol\":{\"keccak256\":\"0x74caf88eff1cb113ad8277df9ba7933a6f1e0deea8fd1855157def3be833b859\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://c7793c9f245736cd8413bc8c4b5c40b67949cbee32289a16d29c83cf59396ad6\",\"dweb:/ipfs/QmWony7b1buUrGnE32gjLAnSwkBYMrJ68vUcCwDMmp3MbJ\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/Owned.sol\":{\"keccak256\":\"0x6ef69d9dcc80a8a36d5eb37783375cd5e4831c6d20c723fa6f6b6a06c0aeb53d\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://5a5d087e2c5b47739615ef22e1f29749de44b43c9a37cfae32b3dfc498a258c4\",\"dweb:/ipfs/Qmd1mXKEQbmBxqHk326LGVzNoayXsam8gZNecknnYpBnyh\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/ReentrancyGuard.sol\":{\"keccak256\":\"0x5ea87c10dd6e7e79212da712eb5f079c03361e6c96e299a4ffd9aaee8d6a3899\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://882aac64a791df35a942480e6ce611d1acb399af4ac0c4ef0288965c3785bf50\",\"dweb:/ipfs/QmeWeYYFh5HZAzJ1SzPHoTcPvZrE4NPUVfmjvH9Q3m36Gg\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/SafeMath.sol\":{\"keccak256\":\"0x1ab7391a19ca8a3ad2f3c4a1074e080d4d76dfdb834637bdd0c1e6b6acdf28af\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://d6d8c99621ca884b72da2d84eddfec8ec8c5533915691d6eec94a07adf445608\",\"dweb:/ipfs/QmaXr6DN7VbfxfMn3PsTy7SAMgZVVXbdeaw11BsAjVL2x1\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/TokenHandler.sol\":{\"keccak256\":\"0xf65b87e3bf3343e368da67878c19d1a043a1025b10e9053d3562b53b4aa447fe\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://b85c5d96642c14c53b8d5062eecd4d27d3bdb457d1d0f130900763a75a512eb7\",\"dweb:/ipfs/QmUHtbqC1khqnRZXYn11Aykus4m5e9MVNUWqorxhpr5ipJ\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/TokenHolder.sol\":{\"keccak256\":\"0xac6bc102eff6c1bb8c1bb4466eab50322c7c101e2e33d577dd3035f106627577\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://9fdbda2d4509260ca3dd43654bdaea07ef18a5e04213ff16e38e3b4abad78a5f\",\"dweb:/ipfs/QmPb69rzX1DwDeEhhfzqQNS3U2bfGcFjXNaV5ffHsZHzfP\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/Utils.sol\":{\"keccak256\":\"0x073efa69fcd6b5e60f841b28b366d63b62ff48ab12a06ce3f5a7f41afd6ce885\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://e8b8ecb2d29197ca77f0ed98f728ace54e6edcfdf5cd1194ae22701607eaf608\",\"dweb:/ipfs/QmcsR6Q35Hurh3TrPkYAboicz9bQQoGCWmZLzUCDyhotH8\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/interfaces/IContractRegistry.sol\":{\"keccak256\":\"0x3551889a83738b621c29ed66f1ecb6a843cca4217e54c9357198559b9cc92259\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://231a59c8f2665adeda8c7e6930832409c9b991fd27ad84b3a24335e7bf269bbe\",\"dweb:/ipfs/QmeJJbn1EAUbZenruTEdJAnwUn3dxsVNeJvxPe81qKEGqL\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/interfaces/IOwned.sol\":{\"keccak256\":\"0xc60a9d197abc28c1906ed4d18b59caa0242db754a0e1f67af6e6277593530dae\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://a8c6f3e6525a81a5165ccbf04f73f6c389c14b74135d11a7b5f70b1c9bdac75c\",\"dweb:/ipfs/QmaPu4Z7yUPc9sMADmoTZVY6AnyDSYHtNNCx3mm4VkJwhP\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/interfaces/ITokenHolder.sol\":{\"keccak256\":\"0x9ccb8ab04d0bd874ba7aae5277e60f35c36918922649a0596bf3664ed257bfe2\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://b65e6db19cd244c9f3545695de5fd7573711c49fb306631ddbf0e1d2fa9fb589\",\"dweb:/ipfs/QmZeu5KYVMTbTx7h2BVUq52fpwL9Q44AUfzeVksucDohgf\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/interfaces/IWhitelist.sol\":{\"keccak256\":\"0x356ad553ceeaea04d7cb8f0d6a5663c47dfccb2bd82517348128f032416ee34a\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://9ea3bbb9945144ead2c1392351f2f9f7444af78569f2b95da2e68bb6b919db52\",\"dweb:/ipfs/QmPyUAk44Kj7nJB4tzYqeSXWHyYP51mRNynEmWra9m4eKS\"]}},\"version\":1}",
  "bytecode": "[encoded data, 31428 characters]",
  "deployedBytecode": "[encoded data, 29268 characters]",
  "immutableReferences": {},
  "sourceMap": "1337:885:36:-:0;;;349:27:59;;;-1:-1:-1;;;;349:27:59;;;2563:5:0;2530:38;;1466:208:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1466:208:36;;;;;;;619:5:57;:18;;-1:-1:-1;;;;;;619:18:57;627:10;619:18;;;1556:1:36;;;594:23:64;1556:1:36;594:13:64;:23::i;:::-;-1:-1:-1;2122:8:56::1;:39:::0;;-1:-1:-1;;;;;2122:39:56;;::::1;-1:-1:-1::0;;;;;;2122:39:56;;::::1;::::0;::::1;::::0;;;2172:12:::1;:43:::0;;;;::::1;;::::0;;-1:-1:-1;2196:42:0::1;2122:8:56;3636:32:0::0;:11:::1;:32;::::0;;:39;;-1:-1:-1;;3636:39:0::1;2122::56::0;3636::0::1;::::0;;:32;1586:25:36;1603:7;;1586:25:::1;::::0;::::1;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;::::1;;;;;;;;;;::::0;::::1;;;;;;1571:12;;:40;;;;;-1:-1:-1::0;;;;;1571:40:36::1;;;;;-1:-1:-1::0;;;;;1571:40:36::1;;;;;;1653:7;1662:4;1636:31;;;;;:::i;:::-;::::0;;;::::1;::::0;::::1;::::0;;;;;;;;;;-1:-1:-1;1636:31:36::1;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;1621:12:36::1;:46:::0;;-1:-1:-1;;;;;;1621:46:36::1;-1:-1:-1::0;;;;;1621:46:36;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;1337:885:36;;-1:-1:-1;1337:885:36;692:128:64;-1:-1:-1;;;;;766:22:64;;758:54;;;;;-1:-1:-1;;;758:54:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;692:128;:::o;1337:885:36:-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;",
  "deployedSourceMap": "1337:885:36:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3655:224:56;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3655:224:56;;;;:::i;:::-;;4297:227:0;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4297:227:0;;;;;;;;;;:::i;1680:156:36:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1680:156:36;-1:-1:-1;;;;;1680:156:36;;:::i;:::-;;;;;;;;;;;;;;;;;;31327:162:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;31327:162:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;31327:162:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31327:162:0;;-1:-1:-1;;31327:162:0;;;-1:-1:-1;31327:162:0;;-1:-1:-1;;31327:162:0:i;:::-;;;;;;;;;;;;;;;;;;;;;;;34120:394;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;34120:394:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;34120:394:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34120:394:0;;-1:-1:-1;;34120:394:0;;;-1:-1:-1;;;34120:394:0;;;;;-1:-1:-1;;;;;34120:394:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;1333:38:56;;;;;;;;;;;;;:::i;2300:925::-;;;;;;;;;;;;;:::i;31842:359:0:-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;31842:359:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;31842:359:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31842:359:0;;-1:-1:-1;;31842:359:0;;;-1:-1:-1;;;31842:359:0;;;;;-1:-1:-1;;;;;31842:359:0;;;;;;;;;;:::i;2530:38::-;;;;;;;;;;;;;:::i;1196:290:62:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1196:290:62;;;;;;;;;;;;;;;;;:::i;1243:37:56:-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1243:37:56;;;;;;;;;;;;;;2034:186:36;;;;;;;;;;;;;:::i;1422:217:57:-;;;;;;;;;;;;;:::i;1154:33:56:-;;;;;;;;;;;;;:::i;5591:2853:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5591:2853:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5591:2853:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5591:2853:0;;-1:-1:-1;;5591:2853:0;;;-1:-1:-1;5591:2853:0;;-1:-1:-1;;5591:2853:0:i;2606:48::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2606:48:0;-1:-1:-1;;;;;2606:48:0;;:::i;15856:607::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;15856:607:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;15856:607:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15856:607:0;;-1:-1:-1;;;;;;;15856:607:0;;;;;-1:-1:-1;15856:607:0;;;;;;;;;;-1:-1:-1;15856:607:0;;;;;-1:-1:-1;15856:607:0;:::i;219:29:57:-;;;;;;;;;;;;;:::i;1842:186:36:-;;;;;;;;;;;;;:::i;32589:440:0:-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;32589:440:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;32589:440:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32589:440:0;;-1:-1:-1;;32589:440:0;;;-1:-1:-1;;;32589:440:0;;;;;-1:-1:-1;;;;;32589:440:0;;;;;;;;;;;;;;;;;;;:::i;33806:240::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;33806:240:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;33806:240:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;33806:240:0;;-1:-1:-1;;33806:240:0;;;-1:-1:-1;;;33806:240:0;;;;;;;;-1:-1:-1;;;;;33806:240:0;;:::i;3304:137:56:-;;;;;;;;;;;;;:::i;9608:1669:0:-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;9608:1669:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;9608:1669:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9608:1669:0;;-1:-1:-1;;9608:1669:0;;;-1:-1:-1;;;9608:1669:0;;;;;-1:-1:-1;;;;;9608:1669:0;;;;;;;;;;;;;;;;;;;:::i;12269:407::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;12269:407:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;12269:407:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12269:407:0;;-1:-1:-1;;12269:407:0;;;-1:-1:-1;;;12269:407:0;;;;;;;;;;;;;;;;;;;:::i;33103:205::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;33103:205:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;33103:205:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;33103:205:0;;-1:-1:-1;;33103:205:0;;;-1:-1:-1;;;33103:205:0;;;;:::i;32275:240::-;;;;;;;;;;;;;;;13781:1124;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;13781:1124:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;13781:1124:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13781:1124:0;;-1:-1:-1;;13781:1124:0;;;-1:-1:-1;;;13781:1124:0;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13781:1124:0;;;;;;;;;;:::i;255:23:57:-;;;;;;;;;;;;;:::i;4906:290:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4906:290:0;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33382:350;;;;;;;;;;;;;;;;;;;;;;;;;1164:167:57;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1164:167:57;-1:-1:-1;;;;;1164:167:57;;:::i;31563:205:0:-;;;;;;;;;;;;;;;3841:230;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3841:230:0;;:::i;3655:224:56:-;726:12:57;:10;:12::i;:::-;3815:26:56::1;:56:::0;;;::::1;;-1:-1:-1::0;;;3815:56:56::1;-1:-1:-1::0;;;;3815:56:56;;::::1;::::0;;;::::1;::::0;;3655:224::o;4297:227:0:-;726:12:57;:10;:12::i;:::-;4426:6:0::1;594:23:64;608:8;594:13;:23::i;:::-;4460:6:0::2;948:18:64;957:8;948;:18::i;:::-;-1:-1:-1::0;;;;;;;4485:19:0;;;::::3;;::::0;;;:11:::3;:19;::::0;;;;:31;;-1:-1:-1;;4485:31:0::3;::::0;::::3;;::::0;;;::::3;::::0;;4297:227::o;1680:156:36:-;1766:4;1789:40;1818:10;1789:28;:40::i;:::-;1782:47;;1680:156;;;;:::o;31327:162:0:-;31414:7;31423;31451:26;31462:5;31469:7;31451:10;:26::i;:::-;31443:38;31479:1;;-1:-1:-1;31327:162:0;-1:-1:-1;;;31327:162:0:o;34120:394::-;34385:7;34417:89;34431:5;34438:7;34447:10;34459:12;34473:17;34492:13;34417;:89::i;:::-;34410:96;34120:394;-1:-1:-1;;;;;;;34120:394:0:o;1333:38:56:-;;;-1:-1:-1;;;1333:38:56;;;;;:::o;2300:925::-;2417:5;;-1:-1:-1;;;;;2417:5:56;2403:10;:19;;:50;;-1:-1:-1;2427:26:56;;-1:-1:-1;;;2427:26:56;;;;2426:27;2403:50;2395:80;;;;;-1:-1:-1;;;2395:80:56;;;;;;;;;;;;-1:-1:-1;;;2395:80:56;;;;;;;;;;;;;;;2530:29;2580:28;-1:-1:-1;;;2580:9:56;:28::i;:::-;2721:8;;2530:79;;-1:-1:-1;;;;;;2706:23:56;;;2721:8;;2706:23;;;;:61;;-1:-1:-1;;;;;;2733:34:56;;;;2706:61;2698:94;;;;;-1:-1:-1;;;2698:94:56;;;;;;;;;;;;-1:-1:-1;;;2698:94:56;;;;;;;;;;;;;;;2959:1;-1:-1:-1;;;;;2907:54:56;:11;-1:-1:-1;;;;;2907:21:56;;-1:-1:-1;;;2907:40:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2907:40:56;-1:-1:-1;;;;;2907:54:56;;;2899:87;;;;;-1:-1:-1;;;2899:87:56;;;;;;;;;;;;-1:-1:-1;;;2899:87:56;;;;;;;;;;;;;;;3093:8;;;3078:12;:23;;-1:-1:-1;;;;;3093:8:56;;;-1:-1:-1;;;;;;3078:23:56;;;;;;;3195:22;;;;;;;;;;;2300:925::o;31842:359:0:-;32074:7;32106:87;32120:5;32127:7;32136:10;32156:1;32160:17;32179:13;32106;:87::i;:::-;32099:94;31842:359;-1:-1:-1;;;;;;31842:359:0:o;2530:38::-;;;;:::o;1196:290:62:-;726:12:57;:10;:12::i;:::-;1370:6:62::1;594:23:64;608:8;594:13;:23::i;:::-;1401:3:62::2;594:23:64;608:8;594:13;:23::i;:::-;1423:3:62::3;948:18:64;957:8;948;:18::i;:::-;1444:34:62::4;1457:6;1465:3;1470:7;1444:12;:34::i;:::-;628:1:64::3;::::2;749::57::1;1196:290:62::0;;;:::o;1243:37:56:-;;;-1:-1:-1;;;;;1243:37:56;;:::o;2034:186:36:-;2153:12;;2081:7;;;;2116:97;;-1:-1:-1;;;;;2153:12:36;2081:7;;;2116:9;:97::i;:::-;2109:104;;;;2034:186;;:::o;1422:217:57:-;1498:8;;-1:-1:-1;;;;;1498:8:57;1484:10;:22;1476:52;;;;;-1:-1:-1;;;1476:52:57;;;;;;;;;;;;-1:-1:-1;;;1476:52:57;;;;;;;;;;;;;;;1563:8;;;1556:5;;1544:28;;-1:-1:-1;;;;;1563:8:57;;;;1556:5;;;;1544:28;;;1591:8;;;;1583:16;;-1:-1:-1;;;;;;1583:16:57;;;-1:-1:-1;;;;;1591:8:57;;1583:16;;;;1610:21;;;1422:217::o;1154:33:56:-;;;-1:-1:-1;;;;;1154:33:56;;:::o;5591:2853:0:-;5673:7;5693:14;5718:11;5740:14;5765:15;5791:13;5815:20;5846:22;5886:25;-1:-1:-1;;;5886:9:0;:25::i;:::-;5846:66;;5934:7;5925:16;;6049:1;6034:5;:12;:16;:41;;;;;6069:1;6054:5;:12;:16;;;;;;6074:1;6054:21;6034:41;6026:70;;;;;-1:-1:-1;;;6026:70:0;;;;;;;;;;;;-1:-1:-1;;;6026:70:0;;;;;;;;;;;;;;;6171:1;6154:2257;6178:5;:12;6174:1;:16;6154:2257;;;6215:23;6253:5;6263:1;6259;:5;6253:12;;;;;;;;;;;;;;6215:51;;6281:14;6298:5;6308:1;6304;:5;6298:12;;;;;;;;;;;;;;6281:29;;6325:23;6363:5;6369:1;6363:8;;;;;;;;;;;;;;6325:47;;6437:6;-1:-1:-1;;;;;6420:30:0;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6420:32:0;;-1:-1:-1;6524:48:0;6420:32;6560:11;6524:24;:48::i;:::-;6510:62;;6601:48;6626:9;6637:11;6601:24;:48::i;:::-;6587:62;;6694:6;-1:-1:-1;;;;;6670:30:0;6678:11;-1:-1:-1;;;;;6670:30:0;;6666:1734;;;6817:1;6813;:5;:31;;;;6832:5;6842:1;6838;:5;6832:12;;;;;;;;;;;;;;-1:-1:-1;;;;;6822:22:0;:6;-1:-1:-1;;;;;6822:22:0;;;6813:31;6809:100;;;6888:6;-1:-1:-1;;;;;6876:31:0;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6876:33:0;;-1:-1:-1;6809:100:0;6996:9;-1:-1:-1;;;;;6996:29:0;;7026:11;6996:42;;;;;;;;;;;;;-1:-1:-1;;;;;6996:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6996:42:0;7076:33;;;-1:-1:-1;;;7076:33:0;;-1:-1:-1;;;;;7076:33:0;;;;;;;;;6996:42;;-1:-1:-1;7076:20:0;;;;;;:33;;;;;;;;;;;;;;;:20;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7076:33:0;;;;;;7137:61;;-1:-1:-1;;;7137:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7076:33;;-1:-1:-1;;;;;;7137:28:0;;;;;:61;;;;;;;;;;:28;:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7137:61:0;7234:25;;;-1:-1:-1;;;7234:25:0;;;;7137:61;;-1:-1:-1;7223:57:0;;2119:7;;7223:37;;-1:-1:-1;;;;;7234:23:0;;;;;:25;;;;;7137:61;;7234:25;;;;;;;:23;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7234:25:0;7223:6;;:37;;;;;:10;:37;:::i;:::-;:41;;:57::i;:::-;7299:13;;;;;7217:63;-1:-1:-1;7415:18:0;:6;7299:13;7415:10;:18::i;:::-;7406:27;;6666:1734;;;7496:6;-1:-1:-1;;;;;7472:30:0;7480:11;-1:-1:-1;;;;;7472:30:0;;7468:932;;;7620:1;7616;:5;:31;;;;7635:5;7645:1;7641;:5;7635:12;;;;;;;;;;;;;;-1:-1:-1;;;;;7625:22:0;:6;-1:-1:-1;;;;;7625:22:0;;;7616:31;7612:100;;;7691:6;-1:-1:-1;;;;;7679:31:0;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7679:33:0;;-1:-1:-1;7612:100:0;7799:9;-1:-1:-1;;;;;7799:29:0;;7829:11;7799:42;;;;;;;;;;;;;-1:-1:-1;;;;;7799:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7799:42:0;7879:33;;;-1:-1:-1;;;7879:33:0;;-1:-1:-1;;;;;7879:33:0;;;;;;;;;7799:42;;-1:-1:-1;7879:20:0;;;;;;:33;;;;;;;;;;;;;;;:20;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7879:33:0;;;;;;7940:57;;-1:-1:-1;;;7940:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7879:33;;-1:-1:-1;;;;;;7940:24:0;;;;;:57;;;;;;;;;;:24;:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7940:57:0;8033:25;;;-1:-1:-1;;;8033:25:0;;;;7940:57;;-1:-1:-1;8022:57:0;;2119:7;;8022:37;;-1:-1:-1;;;;;8033:23:0;;;;;:25;;;;;7940:57;;8033:25;;;;;;;:23;:25;;;;;;;;;;8022:57;8098:13;;;;;8016:63;-1:-1:-1;8214:18:0;:6;8098:13;8214:10;:18::i;7468:932::-;8330:54;8340:9;8351:11;8364;8377:6;8330:9;:54::i;:::-;8314:70;;-1:-1:-1;8314:70:0;-1:-1:-1;7468:932:0;-1:-1:-1;;;6197:1:0;6192:6;6154:2257;;;-1:-1:-1;8430:6:0;;-1:-1:-1;;;;;;;5591:2853:0;;;;;:::o;2606:48::-;;;;;;;;;;;;;;;:::o;15856:607::-;16026:7;16146:8;-1:-1:-1;;;;;16146:14:0;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16146:16:0;16133:8;;-1:-1:-1;;;;;16121:41:0;;;;16133:5;;16139:1;;16133:8;;;;;;;;;;-1:-1:-1;;;;;16121:41:0;;16113:78;;;;;-1:-1:-1;;;16113:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;16260:14;16277:8;-1:-1:-1;;;;;16277:27:0;;16305:13;16320:10;16277:54;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16277:54:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16277:54:0;;-1:-1:-1;16386:69:0;16400:5;16277:54;16415:10;16427:12;16449:1;;16386:13;:69::i;219:29:57:-;;;-1:-1:-1;;;;;219:29:57;;:::o;1842:186:36:-;1961:12;;1889:7;;;;1924:97;;-1:-1:-1;;;;;1961:12:36;1889:7;;;1924:9;:97::i;32589:440:0:-;32900:7;32870:10;252:24:64;269:6;252:16;:24::i;:::-;32932:89:0::1;32946:5;32953:7;32962:10;32974:12;32988:17;33007:13;32932;:89::i;:::-;32925:96:::0;32589:440;-1:-1:-1;;;;;;;;32589:440:0:o;33806:240::-;33941:7;33968:70;33982:5;33989:7;33998:10;34010:12;34032:1;34036;33968:13;:70::i;:::-;33961:77;33806:240;-1:-1:-1;;;;;33806:240:0:o;3304:137:56:-;726:12:57;:10;:12::i;:::-;3421::56::1;::::0;3410:8:::1;:23:::0;;-1:-1:-1;;;;;;3410:23:56::1;-1:-1:-1::0;;;;;3421:12:56;;::::1;3410:23:::0;;;::::1;::::0;;3304:137::o;9608:1669:0:-;9934:7;580:12:59;:10;:12::i;:::-;603:6;:13;;-1:-1:-1;;;;603:13:59;-1:-1:-1;;;603:13:59;;;9904:10:0;252:24:64::1;9904:10:0::0;252:16:64::1;:24::i;:::-;10088:1:0::2;10073:5;:12;:16;:41;;;;;10108:1;10093:5;:12;:16;;;;;;10113:1;10093:21;10073:41;10065:70;;;::::0;;-1:-1:-1;;;10065:70:0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;-1:-1:-1;;;10065:70:0;;;;;;;;;;;;;::::2;;10227:77;10257:5;10263:1;10257:8;;;;;;;;;;;;;;10285:5;10291:1;10285:8;;;;;;;;;;;;;;10296:7;10227:17;:77::i;:::-;10363:24;-1:-1:-1::0;;;;;10410:40:0;::::2;10406:303;;10475:18:::0;;10467:56:::2;;;::::0;;-1:-1:-1;;;10467:56:0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;-1:-1:-1;;;10467:56:0;;;;;;;;;;;;;::::2;;10406:303;;;10577:13;10573:1;:17;:53;;;;;10611:15;;10594:13;:32;;10573:53;10565:91;;;::::0;;-1:-1:-1;;;10565:91:0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;-1:-1:-1;;;10565:91:0;;;;;;;;;;;;;::::2;;-1:-1:-1::0;10693:4:0::2;10406:303;10791:10;-1:-1:-1::0;;;;;10816:26:0;::::2;::::0;10812:71:::2;;-1:-1:-1::0;10871:12:0;10812:71:::2;10945:28;10976:61;10997:5;11004:11;11017:19;10976:20;:61::i;:::-;10945:92;;11048:14;11065:73;11078:4;11084:7;11093:10;11105:17;11124:13;11065:12;:73::i;:::-;11048:90;;11199:44;11217:4;11223:6;11231:11;11199:17;:44::i;:::-;639:6:59::0;:14;;-1:-1:-1;;;;639:14:59;;;11263:6:0;9608:1669;-1:-1:-1;;;;;;;;;;;9608:1669:0:o;12269:407::-;12534:7;12566:102;12576:5;12583:7;12592:10;12604:17;12623:14;12639:13;12662:1;12666;12566:9;:102::i;33103:205::-;33205:7;33232:68;33246:5;33253:7;33262:10;33282:1;33294;33298;33232:13;:68::i;:::-;33225:75;33103:205;-1:-1:-1;;;;33103:205:0:o;13781:1124::-;14152:7;14122:10;252:24:64;269:6;252:16;:24::i;:::-;14177:23:0::1;14215:5;14236:1;14221:5;:12;:16;14215:23;;;;;;;;;;;;;;14177:62;;14250:16;14278:19;-1:-1:-1::0;;;14278:9:0::1;:19::i;:::-;14250:48;;14399:20;-1:-1:-1::0;;;14399:9:0::1;:20::i;:::-;-1:-1:-1::0;;;;;14372:48:0::1;:11;-1:-1:-1::0;;;;;14372:48:0::1;;14364:85;;;::::0;;-1:-1:-1;;;14364:85:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;14511:14;14528:99;14542:5;14549:7;14558:10;14586:4;14594:17;14613:13;14528;:99::i;:::-;14511:116;;14676:54;14692:11;14713:7;14723:6;14676:15;:54::i;:::-;14796:75;::::0;;-1:-1:-1;;;14796:75:0;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14796:17:0;::::1;::::0;::::1;::::0;:75;;;;;-1:-1:-1;;14796:75:0;;;;;;;-1:-1:-1;14796:17:0;:75;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;14891:6:0;;13781:1124;-1:-1:-1;;;;;;;;;;;;;;;13781:1124:0:o;255:23:57:-;;;-1:-1:-1;;;;;255:23:57;;:::o;4906:290:0:-;5003:16;5032:32;5089:33;-1:-1:-1;;;5089:9:0;:33::i;:::-;5032:91;;5141:10;-1:-1:-1;;;;;5141:19:0;;5161:12;5175;5141:47;;;;;;;;;;;;;-1:-1:-1;;;;;5141:47:0;;;;;;-1:-1:-1;;;;;5141:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5141:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5141:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5141:47:0;;;;;;;;;;;;-1:-1:-1;5141:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5134:54;;;4906:290;;;;:::o;1164:167:57:-;726:12;:10;:12::i;:::-;1268:5:::1;::::0;-1:-1:-1;;;;;1255:18:57;;::::1;1268:5:::0;::::1;1255:18;;1247:45;;;::::0;;-1:-1:-1;;;1247:45:57;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;1247:45:57;;;;;;;;;;;;;::::1;;1303:8;:20:::0;;-1:-1:-1;;;;;;1303:20:57::1;-1:-1:-1::0;;;;;1303:20:57;;;::::1;::::0;;;::::1;::::0;;1164:167::o;3841:230:0:-;726:12:57;:10;:12::i;:::-;2119:7:0::1;3954:16;:34;;3946:72;;;::::0;;-1:-1:-1;;;3946:72:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;3946:72:0;;;;;;;;;;;;;::::1;;4029:15;:34:::0;3841:230::o;813:104:57:-;882:5;;-1:-1:-1;;;;;882:5:57;868:10;:19;860:49;;;;;-1:-1:-1;;;860:49:57;;;;;;;;;;;;-1:-1:-1;;;860:49:57;;;;;;;;;;;;;;;813:104::o;692:128:64:-;-1:-1:-1;;;;;766:22:64;;758:54;;;;;-1:-1:-1;;;758:54:64;;;;;;;;;;;;-1:-1:-1;;;758:54:64;;;;;;;;;;;;;;;692:128;:::o;1041:126::-;-1:-1:-1;;;;;1110:25:64;;1130:4;1110:25;;1102:57;;;;;-1:-1:-1;;;1102:57:64;;;;;;;;;;;;-1:-1:-1;;;1102:57:64;;;;;;;;;;;;;;30833:420:0;30948:54;;;;;;;;;;;;;;;;-1:-1:-1;;;;;30948:54:0;-1:-1:-1;;;30948:54:0;;;31055:49;;;;30911:4;;;;30928:17;;-1:-1:-1;;;;;31055:30:0;;;31092:4;;30948:54;;31055:49;;;;;;30948:54;31055:49;;;;;;;;;;-1:-1:-1;;31055:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31013:91;;;;31121:7;:34;;;;;31132:10;:17;31153:2;31132:23;31121:34;31117:104;;;31190:10;31179:30;;;;;;;;;;;;;;;-1:-1:-1;31179:30:0;;-1:-1:-1;31172:37:0;;-1:-1:-1;;;31172:37:0;31117:104;-1:-1:-1;31240:5:0;;30833:420;-1:-1:-1;;;;30833:420:0:o;4077:133:56:-;4169:8;;:33;;;-1:-1:-1;;;4169:33:56;;;;;;;;;;4142:7;;-1:-1:-1;;;;;4169:8:56;;:18;;:33;;;;;;;;;;;;;;:8;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4169:33:56;;4077:133;-1:-1:-1;;4077:133:56:o;1485:312:61:-;1631:59;;;-1:-1:-1;;;;;1631:59:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1631:59:61;-1:-1:-1;;;1631:59:61;;;1610:81;;;;1575:12;;1589:17;;1610:20;;;;1631:59;1610:81;;;1631:59;1610:81;;1631:59;1610:81;;;;;;;;;;-1:-1:-1;;1610:81:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1574:117;;;;1709:7;:57;;;;-1:-1:-1;1721:11:61;;:16;;:44;;;1752:4;1741:24;;;;;;;;;;;;;;;-1:-1:-1;1741:24:61;1721:44;1701:89;;;;;-1:-1:-1;;;1701:89:61;;;;;;;;;;;;-1:-1:-1;;;1701:89:61;;;;;;;;;;;;;;;1485:312;;;;;:::o;29889:670:0:-;30067:85;;;-1:-1:-1;;;;;30067:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;30067:85:0;-1:-1:-1;;;30067:85:0;;;30205:31;;;;30018:7;;;;30067:85;30018:7;;30047:17;;30205:25;;;;30067:85;;30205:31;;30067:85;30205:31;;30067:85;30205:31;;;;;;;;;;-1:-1:-1;;30205:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30163:73;;;;30253:7;30249:277;;;30281:10;:17;30302:2;30281:23;30277:113;;;30343:10;30332:42;;;;;;;;;;;;;;;-1:-1:-1;30332:42:0;;;;;;;;;-1:-1:-1;30332:42:0;-1:-1:-1;30325:49:0;;-1:-1:-1;;;30325:49:0;30277:113;30410:10;:17;30431:2;30410:23;30406:109;;;30473:10;30462:33;;;;;;;;;;;;;;;-1:-1:-1;30462:33:0;;-1:-1:-1;30497:1:0;;-1:-1:-1;30454:45:0;;-1:-1:-1;;;30454:45:0;30406:109;30546:1;30549;30538:13;;;;;;;29889:670;;;;;;;;:::o;29362:336::-;-1:-1:-1;;;;;29490:19:0;;29461:11;29490:19;;;:11;:19;;;;;;;;29485:52;;-1:-1:-1;29531:6:0;29524:13;;29485:52;29554:34;29577:10;29554:22;:34::i;:::-;29550:79;;;-1:-1:-1;2196:42:0;29603:26;;29550:79;29649:41;29679:10;29649:29;:41::i;:::-;29642:48;29362:336;-1:-1:-1;;;29362:336:0:o;1149:250:60:-;1209:7;1262;1258:34;;-1:-1:-1;1291:1:60;1284:8;;1258:34;1317:7;;;1322:2;1317;:7;:2;1343:6;;;;;:12;1335:37;;;;;-1:-1:-1;;;1335:37:60;;;;;;;;;;;;-1:-1:-1;;;1335:37:60;;;;;;;;;;;;;;1627:174;1687:7;1720:1;1715:2;:6;1707:37;;;;;-1:-1:-1;;;1707:37:60;;;;;;;;;;;;-1:-1:-1;;;1707:37:60;;;;;;;;;;;;;;;1755:9;1772:2;1767;:7;;;;;;;1627:174;-1:-1:-1;;;;1627:174:60:o;386:169::-;446:7;478;;;504;;;;496:32;;;;;-1:-1:-1;;;496:32:60;;;;;;;;;;;;-1:-1:-1;;;496:32:60;;;;;;;;;;;;;;778:147;838:7;872:2;866;:8;;858:34;;;;;-1:-1:-1;;;858:34:60;;;;;;;;;;;;-1:-1:-1;;;858:34:60;;;;;;;;;;;;;;;-1:-1:-1;910:7:60;;;778:147::o;351:112:64:-;435:1;426:6;:10;418:37;;;;;-1:-1:-1;;;418:37:64;;;;;;;;;;;;-1:-1:-1;;;418:37:64;;;;;;;;;;;;;;716:89:59;772:6;;-1:-1:-1;;;772:6:59;;;;771:7;763:34;;;;;-1:-1:-1;;;763:34:59;;;;;;;;;;;;-1:-1:-1;;;763:34:59;;;;;;;;;;;;;;20128:1710:0;20243:25;20290:7;-1:-1:-1;;;;;20290:13:0;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20290:15:0;;-1:-1:-1;20318:21:0;20342:38;20290:15;20342:22;:38::i;:::-;20318:62;-1:-1:-1;20413:9:0;:13;20409:1422;;20499:7;20486:9;:20;20478:56;;;;;-1:-1:-1;;;20478:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;20769:16;20764:137;;20824:45;20854:14;20824:29;:45::i;:::-;-1:-1:-1;;;;;20804:75:0;;20888:9;20804:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20764:137;20409:1422;;;-1:-1:-1;;;;;20955:25:0;;;;;;:11;:25;;;;;;;;20951:880;;;21167:66;21184:12;21198:10;21218:4;21225:7;21167:16;:66::i;:::-;21303:16;21299:91;;;21358:12;-1:-1:-1;;;;;21338:43:0;;21382:7;21338:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20951:880;;;21605:16;21601:218;;;21640:76;21657:12;21671:10;21691:14;21708:7;21640:16;:76::i;21601:218::-;21753:66;21770:12;21784:10;21804:4;21811:7;21753:16;:66::i;23592:4261::-;23735:23;23771:28;23848:1;23823:15;:22;:26;;;;;;23802:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;23771:79;;23863:26;23908:20;23943;-1:-1:-1;;;23943:9:0;:20::i;:::-;23908:56;;24060:9;24080:1251;24121:1;24096:15;:22;:26;24092:1;:30;24080:1251;;;24147:23;24190:15;24206:1;24210;24206:5;24190:22;;;;;;;;;;;;;;24147:66;;24228:20;24270:6;-1:-1:-1;;;;;24270:12:0;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24270:14:0;24339:22;;24270:14;;-1:-1:-1;24301:23:0;;24339:15;;24359:1;24355:5;;;24339:22;;;;;;;;;;;;24301:61;;24455:24;24482:20;:46;;;;;24507:21;24506:22;24482:46;:73;;;;;24547:8;-1:-1:-1;;;;;24532:23:0;:11;-1:-1:-1;;;;;24532:23:0;;24482:73;24455:100;;24574:19;24570:70;;;24636:4;24612:28;;24570:70;24671:648;;;;;;;;24834:9;-1:-1:-1;;;;;24671:648:0;;;;;24758:6;-1:-1:-1;;;;;24671:648:0;;;;;24938:15;24954:1;24938:18;;;;;;;;;;;;;;-1:-1:-1;;;;;24671:648:0;;;;;24989:11;-1:-1:-1;;;;;24671:648:0;;;;;25134:1;-1:-1:-1;;;;;24671:648:0;;;;;25211:33;25234:9;25211:22;:33::i;:::-;24671:648;;;;;;;;;;;;24657:4;24666:1;24662;:5;24657:11;;;;;;;;;;;;;:662;;;;24080:1251;;;;24129:1;24124:6;;;;24080:1251;;;25393:30;;:::i;:::-;25426:4;25431:1;25426:7;;;;;;;;;;;;;;;;;;;25460:20;;;;;-1:-1:-1;;;;;25448:33:0;;;;;:11;:33;;;;;;;25426:7;;-1:-1:-1;25448:33:0;;25444:472;;;25594:8;:31;;;25590:314;;;2196:42;25644:20;;;:42;25590:314;;;25885:18;;25855:49;;:29;:49::i;:::-;-1:-1:-1;;;;;25832:72:0;:20;;;:72;25590:314;25965:4;25984:1;25970:4;:11;:15;25965:21;;;;;;;;;;;;;;;;;;;26013:20;;;;-1:-1:-1;;;;;26001:33:0;;;;;:11;:33;;;;;;;;25965:21;;-1:-1:-1;26001:33:0;;25997:472;;;26147:8;:31;;;26143:314;;;2196:42;26197:20;;;:42;26143:314;;;26438:18;;26408:49;;:29;:49::i;:::-;-1:-1:-1;;;;;26385:72:0;:20;;;:72;26143:314;26536:1;26532:5;;26527:1295;26543:4;:11;26539:1;:15;26527:1295;;;26587:4;26592:1;26587:7;;;;;;;;;;;;;;26576:18;;26746:8;:31;;;26742:1069;;;26902:8;:28;;;26898:709;;;26992:4;26953:20;;;:45;26898:709;;;27125:1;27111:4;:11;:15;27106:1;:20;27102:505;;;-1:-1:-1;;;;;27149:35:0;;:20;;;:35;27102:505;;;27310:4;27315:1;27319;27315:5;27310:11;;;;;;;;;;;;;;:34;;;27306:301;;;27398:4;27403:1;27407;27403:5;27398:11;;;;;;;;;;;;;;;;;;:21;-1:-1:-1;;;;;27367:53:0;:20;;;:53;27306:301;;;27601:4;27562:20;;;:45;27306:301;26742:1069;;;27789:4;27750:20;;;:45;26742:1069;26556:3;;;;;26527:1295;;;-1:-1:-1;27841:4:0;;23592:4261;-1:-1:-1;;;;;;;23592:4261:0:o;17080:2701::-;17289:7;;17357;17289;17422:2194;17446:5;:12;17442:1;:16;17422:2194;;;17480:30;;:::i;:::-;17513:5;17519:1;17513:8;;;;;;;;;;;;;;17480:41;;17574:8;:31;;;17570:889;;;17820:6;;;;;:51;;;17866:4;-1:-1:-1;;;;;17830:41:0;:5;17840:1;17836;:5;17830:12;;;;;;;;;;;;;;:24;;;-1:-1:-1;;;;;17830:41:0;;17820:51;:89;;;;-1:-1:-1;17888:20:0;;;;;-1:-1:-1;;;;;17876:33:0;;;;;:11;:33;;;;;;17875:34;17820:89;17816:191;;;17932:75;17945:8;:20;;;17975:8;:18;;;17996:10;17932:12;:75::i;:::-;17570:889;;;18235:8;:15;;;-1:-1:-1;;;;;18191:61:0;:8;:20;;;-1:-1:-1;;;;;18191:61:0;;18187:272;;18365:78;18381:8;:20;;;18411:8;:18;;;18432:10;18365:15;:78::i;:::-;18514:8;:31;;;18509:564;;18600:18;;18628:20;;;;;18650;;;;18575:111;;-1:-1:-1;;;18575:111:0;;-1:-1:-1;;;;;18575:111:0;;;;;;;;;;;;;;;;;;;;18684:1;18575:111;;;;;;:52;;;;;:111;;;;;;;;;;;;;;;18600:18;18575:52;:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18575:111:0;;-1:-1:-1;18509:564:0;;;18722:20;;;;;-1:-1:-1;;;;;18710:33:0;;;;;:11;:33;;;;;;18706:367;;;18773:18;;18820:20;;;;;18842;;;;18888;;;;18773:136;;-1:-1:-1;;;18773:136:0;;-1:-1:-1;;;;;18773:136:0;;;;;;;;;;;;;;;;;;;;18876:10;18773:136;;;;;;;;;;;;:26;;;;;18808:9;;18773:136;;;;;;;;;;;;;;18808:9;18773:26;:136;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18706:367;18957:18;;18984:20;;;;;19006;;;;19052;;;;18957:116;;-1:-1:-1;;;18957:116:0;;-1:-1:-1;;;;;18957:116:0;;;;;;;;;;;;;;;;;;;;19040:10;18957:116;;;;;;;;;;;;:26;;;;;:116;;;;;;;;;;;;;;;:18;:26;:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18957:116:0;;-1:-1:-1;18706:367:0;19138:8;:28;;;19134:308;;;19187:23;19213:47;2119:7;19213:27;:8;19226:13;19213:12;:27::i;:47::-;19187:73;;19287:8;:20;;;-1:-1:-1;;;;;19287:29:0;;19317:17;19336:15;19287:65;;;;;;;;;;;;;-1:-1:-1;;;;;19287:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19287:65:0;19279:101;;;;;-1:-1:-1;;;19279:101:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;19399:27;;;;19134:308;19513:8;:20;;;-1:-1:-1;;;;;19463:105:0;19491:8;:20;;;-1:-1:-1;;;;;19463:105:0;19474:8;:15;;;-1:-1:-1;;;;;19463:105:0;;19535:10;19547:8;19557:10;19463:105;;;;;;;;;;;;;;-1:-1:-1;;;;;19463:105:0;;;;;;;;;;;;;;;;;-1:-1:-1;19596:8:0;;-1:-1:-1;17460:3:0;;17422:2194;;;;19712:10;19700:8;:22;;19692:53;;;;;-1:-1:-1;;;19692:53:0;;;;;;;;;;;;-1:-1:-1;;;19692:53:0;;;;;;;;;;;;;;;-1:-1:-1;19765:8:0;17080:2701;-1:-1:-1;;;;;;17080:2701:0:o;22182:893::-;22306:30;;:::i;:::-;22339:5;22360:1;22345:5;:12;:16;22339:23;;;;;;;;;;;;;;22306:56;;22476:4;-1:-1:-1;;;;;22444:37:0;:8;:20;;;-1:-1:-1;;;;;22444:37:0;;22440:63;;22496:7;;;22440:63;22541:20;;;;-1:-1:-1;;;;;22607:24:0;;22515:23;22607:24;;;:11;:24;;;;;;;;22603:465;;;22732:8;:31;;;22731:32;22724:40;;;;22889:11;-1:-1:-1;;;;;22869:44:0;;22914:12;22928:7;22869:67;;;;;;;;;;;;;-1:-1:-1;;;;;22869:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22603:465;23008:48;23021:11;23034:12;23048:7;23008:12;:48::i;22182:893::-;;;;:::o;28319:348::-;28437:41;;;-1:-1:-1;;;28437:41:0;;28462:4;28437:41;;;;-1:-1:-1;;;;;28437:41:0;;;;;;;;;28417:17;;28437:16;;;;;:41;;;;;;;;;;;;;;:16;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28437:41:0;;-1:-1:-1;28493:18:0;;;28489:171;;;28532:13;;28528:68;;28564:32;28576:6;28584:8;28594:1;28564:11;:32::i;:::-;28611:37;28623:6;28631:8;28641:6;28611:11;:37::i;:::-;28319:348;;;;:::o;28751:449::-;28835:11;28859:20;28882:10;-1:-1:-1;;;;;28882:30:0;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28882:32:0;28859:55;;;-1:-1:-1;28930:9:0;28925:229;28949:12;28945:1;:16;28925:229;;;28983:31;29017:10;-1:-1:-1;;;;;29017:26:0;;29044:1;29017:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29017:29:0;-1:-1:-1;;;;;29065:32:0;;;;;;:11;29017:29;29065:32;;;;;29017:29;;-1:-1:-1;29065:32:0;;29061:81;;;29123:19;-1:-1:-1;29116:26:0;;-1:-1:-1;;29116:26:0;29061:81;-1:-1:-1;28963:3:0;;28925:229;;;-1:-1:-1;2196:42:0;;28751:449;-1:-1:-1;;;28751:449:0:o;2190:348:61:-;2355:71;;;-1:-1:-1;;;;;2355:71:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2355:71:61;-1:-1:-1;;;2355:71:61;;;2334:93;;;;2299:12;;2313:17;;2334:20;;;;2355:71;2334:93;;;2355:71;2334:93;;2355:71;2334:93;;;;;;;;;;-1:-1:-1;;2334:93:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2298:129;;;;2445:7;:57;;;;-1:-1:-1;2457:11:61;;:16;;:44;;;2488:4;2477:24;;;;;;;;;;;;;;;-1:-1:-1;2477:24:61;2457:44;2437:94;;;;;-1:-1:-1;;;2437:94:61;;;;;;;;;;;;;;;;;;;;;;;;;;;815:320;966:63;;;-1:-1:-1;;;;;966:63:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;966:63:61;-1:-1:-1;;;966:63:61;;;945:85;;;;910:12;;924:17;;945:20;;;;966:63;945:85;;;966:63;945:85;;966:63;945:85;;;;;;;;;;-1:-1:-1;;945:85:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;909:121;;;;1048:7;:57;;;;-1:-1:-1;1060:11:61;;:16;;:44;;;1091:4;1080:24;;;;;;;;;;;;;;;-1:-1:-1;1080:24:61;1060:44;1040:88;;;;;-1:-1:-1;;;1040:88:61;;;;;;;;;;;;-1:-1:-1;;;1040:88:61;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o",
  "source": "// SPDX-License-Identifier: SEE LICENSE IN LICENSE\npragma solidity 0.6.12;\nimport \"../BancorNetwork.sol\";\n\ncontract OldConverter {\n    uint256 private amount;\n\n    constructor(uint256 _amount) public {\n        amount = _amount;\n    }\n\n    function getReturn(IERC20Token _sourceToken, IERC20Token _targetToken, uint256 _amount) external view returns (uint256) {\n        _sourceToken;\n        _targetToken;\n        _amount;\n        return (amount);\n    }\n}\n\ncontract NewConverter {\n    uint256 private amount;\n    uint256 private fee;\n\n    constructor(uint256 _amount, uint256 _fee) public {\n        amount = _amount;\n        fee = _fee;\n    }\n\n    function getReturn(IERC20Token _sourceToken, IERC20Token _targetToken, uint256 _amount) external view returns (uint256, uint256) {\n        _sourceToken;\n        _targetToken;\n        _amount;\n        return (amount, fee);\n    }\n}\n\ncontract ConverterV27OrLowerWithoutFallback {\n}\n\ncontract ConverterV27OrLowerWithFallback {\n    receive() external payable {\n    }\n}\n\ncontract ConverterV28OrHigherWithoutFallback {\n    function isV28OrHigher() public pure returns (bool) {\n        return true;\n    }\n}\n\ncontract ConverterV28OrHigherWithFallback {\n    function isV28OrHigher() public pure returns (bool) {\n        return true;\n    }\n\n    receive() external payable {\n        revert();\n    }\n}\n\ncontract TestBancorNetwork is BancorNetwork {\n    OldConverter private oldConverter;\n    NewConverter private newConverter;\n\n    constructor(uint256 _amount, uint256 _fee) public BancorNetwork(IContractRegistry(address(1))) {\n        oldConverter = new OldConverter(_amount);\n        newConverter = new NewConverter(_amount, _fee);\n    }\n\n    function isV28OrHigherConverterExternal(IConverter _converter) external view returns (bool) {\n        return super.isV28OrHigherConverter(_converter);\n    }\n\n    function getReturnOld() external view returns (uint256, uint256) {\n        return getReturn(IConverter(payable(address(oldConverter))), IERC20Token(0), IERC20Token(0), uint256(0));\n    }\n\n    function getReturnNew() external view returns (uint256, uint256) {\n        return getReturn(IConverter(payable(address(newConverter))), IERC20Token(0), IERC20Token(0), uint256(0));\n    }\n}\n",
  "sourcePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/helpers/TestBancorNetwork.sol",
  "ast": {
    "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/helpers/TestBancorNetwork.sol",
    "exportedSymbols": {
      "ConverterV27OrLowerWithFallback": [
        19052
      ],
      "ConverterV27OrLowerWithoutFallback": [
        19047
      ],
      "ConverterV28OrHigherWithFallback": [
        19077
      ],
      "ConverterV28OrHigherWithoutFallback": [
        19061
      ],
      "NewConverter": [
        19046
      ],
      "OldConverter": [
        19001
      ],
      "TestBancorNetwork": [
        19188
      ]
    },
    "id": 19189,
    "license": "SEE LICENSE IN LICENSE",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 18966,
        "literals": [
          "solidity",
          "0.6",
          ".12"
        ],
        "nodeType": "PragmaDirective",
        "src": "51:23:36"
      },
      {
        "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/BancorNetwork.sol",
        "file": "../BancorNetwork.sol",
        "id": 18967,
        "nodeType": "ImportDirective",
        "scope": 19189,
        "sourceUnit": 1977,
        "src": "75:30:36",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 19001,
        "linearizedBaseContracts": [
          19001
        ],
        "name": "OldConverter",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 18969,
            "mutability": "mutable",
            "name": "amount",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 19001,
            "src": "135:22:36",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 18968,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "135:7:36",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 18978,
              "nodeType": "Block",
              "src": "200:33:36",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18976,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 18974,
                      "name": "amount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18969,
                      "src": "210:6:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 18975,
                      "name": "_amount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18971,
                      "src": "219:7:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "210:16:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 18977,
                  "nodeType": "ExpressionStatement",
                  "src": "210:16:36"
                }
              ]
            },
            "documentation": null,
            "id": 18979,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 18972,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18971,
                  "mutability": "mutable",
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 18979,
                  "src": "176:15:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18970,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "176:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "175:17:36"
            },
            "returnParameters": {
              "id": 18973,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "200:0:36"
            },
            "scope": 19001,
            "src": "164:69:36",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 18999,
              "nodeType": "Block",
              "src": "359:93:36",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18990,
                    "name": "_sourceToken",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 18981,
                    "src": "369:12:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                      "typeString": "contract IERC20Token"
                    }
                  },
                  "id": 18991,
                  "nodeType": "ExpressionStatement",
                  "src": "369:12:36"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18992,
                    "name": "_targetToken",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 18983,
                    "src": "391:12:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                      "typeString": "contract IERC20Token"
                    }
                  },
                  "id": 18993,
                  "nodeType": "ExpressionStatement",
                  "src": "391:12:36"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18994,
                    "name": "_amount",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 18985,
                    "src": "413:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 18995,
                  "nodeType": "ExpressionStatement",
                  "src": "413:7:36"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "id": 18996,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18969,
                        "src": "438:6:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 18997,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "437:8:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 18989,
                  "id": 18998,
                  "nodeType": "Return",
                  "src": "430:15:36"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "1e1401f8",
            "id": 19000,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getReturn",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 18986,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18981,
                  "mutability": "mutable",
                  "name": "_sourceToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 19000,
                  "src": "258:24:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20Token_$21127",
                    "typeString": "contract IERC20Token"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 18980,
                    "name": "IERC20Token",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 21127,
                    "src": "258:11:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                      "typeString": "contract IERC20Token"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18983,
                  "mutability": "mutable",
                  "name": "_targetToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 19000,
                  "src": "284:24:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20Token_$21127",
                    "typeString": "contract IERC20Token"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 18982,
                    "name": "IERC20Token",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 21127,
                    "src": "284:11:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                      "typeString": "contract IERC20Token"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18985,
                  "mutability": "mutable",
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 19000,
                  "src": "310:15:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18984,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "310:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "257:69:36"
            },
            "returnParameters": {
              "id": 18989,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18988,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 19000,
                  "src": "350:7:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18987,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "350:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "349:9:36"
            },
            "scope": 19001,
            "src": "239:213:36",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 19189,
        "src": "107:347:36"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 19046,
        "linearizedBaseContracts": [
          19046
        ],
        "name": "NewConverter",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 19003,
            "mutability": "mutable",
            "name": "amount",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 19046,
            "src": "484:22:36",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 19002,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "484:7:36",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 19005,
            "mutability": "mutable",
            "name": "fee",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 19046,
            "src": "512:19:36",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 19004,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "512:7:36",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 19020,
              "nodeType": "Block",
              "src": "588:53:36",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 19014,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 19012,
                      "name": "amount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19003,
                      "src": "598:6:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 19013,
                      "name": "_amount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19007,
                      "src": "607:7:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "598:16:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 19015,
                  "nodeType": "ExpressionStatement",
                  "src": "598:16:36"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 19018,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 19016,
                      "name": "fee",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19005,
                      "src": "624:3:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 19017,
                      "name": "_fee",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19009,
                      "src": "630:4:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "624:10:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 19019,
                  "nodeType": "ExpressionStatement",
                  "src": "624:10:36"
                }
              ]
            },
            "documentation": null,
            "id": 19021,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 19010,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19007,
                  "mutability": "mutable",
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 19021,
                  "src": "550:15:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19006,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "550:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19009,
                  "mutability": "mutable",
                  "name": "_fee",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 19021,
                  "src": "567:12:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19008,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "567:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "549:31:36"
            },
            "returnParameters": {
              "id": 19011,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "588:0:36"
            },
            "scope": 19046,
            "src": "538:103:36",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 19044,
              "nodeType": "Block",
              "src": "776:98:36",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 19034,
                    "name": "_sourceToken",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 19023,
                    "src": "786:12:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                      "typeString": "contract IERC20Token"
                    }
                  },
                  "id": 19035,
                  "nodeType": "ExpressionStatement",
                  "src": "786:12:36"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 19036,
                    "name": "_targetToken",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 19025,
                    "src": "808:12:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                      "typeString": "contract IERC20Token"
                    }
                  },
                  "id": 19037,
                  "nodeType": "ExpressionStatement",
                  "src": "808:12:36"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 19038,
                    "name": "_amount",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 19027,
                    "src": "830:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 19039,
                  "nodeType": "ExpressionStatement",
                  "src": "830:7:36"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "id": 19040,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19003,
                        "src": "855:6:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 19041,
                        "name": "fee",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19005,
                        "src": "863:3:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 19042,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "854:13:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(uint256,uint256)"
                    }
                  },
                  "functionReturnParameters": 19033,
                  "id": 19043,
                  "nodeType": "Return",
                  "src": "847:20:36"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "1e1401f8",
            "id": 19045,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getReturn",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 19028,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19023,
                  "mutability": "mutable",
                  "name": "_sourceToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 19045,
                  "src": "666:24:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20Token_$21127",
                    "typeString": "contract IERC20Token"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 19022,
                    "name": "IERC20Token",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 21127,
                    "src": "666:11:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                      "typeString": "contract IERC20Token"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19025,
                  "mutability": "mutable",
                  "name": "_targetToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 19045,
                  "src": "692:24:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20Token_$21127",
                    "typeString": "contract IERC20Token"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 19024,
                    "name": "IERC20Token",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 21127,
                    "src": "692:11:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                      "typeString": "contract IERC20Token"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19027,
                  "mutability": "mutable",
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 19045,
                  "src": "718:15:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19026,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "718:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "665:69:36"
            },
            "returnParameters": {
              "id": 19033,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19030,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 19045,
                  "src": "758:7:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19029,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "758:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19032,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 19045,
                  "src": "767:7:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19031,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "767:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "757:18:36"
            },
            "scope": 19046,
            "src": "647:227:36",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 19189,
        "src": "456:420:36"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 19047,
        "linearizedBaseContracts": [
          19047
        ],
        "name": "ConverterV27OrLowerWithoutFallback",
        "nodeType": "ContractDefinition",
        "nodes": [],
        "scope": 19189,
        "src": "878:47:36"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 19052,
        "linearizedBaseContracts": [
          19052
        ],
        "name": "ConverterV27OrLowerWithFallback",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 19050,
              "nodeType": "Block",
              "src": "1001:7:36",
              "statements": []
            },
            "documentation": null,
            "id": 19051,
            "implemented": true,
            "kind": "receive",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 19048,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "981:2:36"
            },
            "returnParameters": {
              "id": 19049,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1001:0:36"
            },
            "scope": 19052,
            "src": "974:34:36",
            "stateMutability": "payable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 19189,
        "src": "927:83:36"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 19061,
        "linearizedBaseContracts": [
          19061
        ],
        "name": "ConverterV28OrHigherWithoutFallback",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 19059,
              "nodeType": "Block",
              "src": "1115:28:36",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 19057,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1132:4:36",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 19056,
                  "id": 19058,
                  "nodeType": "Return",
                  "src": "1125:11:36"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "d260529c",
            "id": 19060,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isV28OrHigher",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 19053,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1085:2:36"
            },
            "returnParameters": {
              "id": 19056,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19055,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 19060,
                  "src": "1109:4:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19054,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1109:4:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1108:6:36"
            },
            "scope": 19061,
            "src": "1063:80:36",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "public"
          }
        ],
        "scope": 19189,
        "src": "1012:133:36"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 19077,
        "linearizedBaseContracts": [
          19077
        ],
        "name": "ConverterV28OrHigherWithFallback",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 19068,
              "nodeType": "Block",
              "src": "1247:28:36",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 19066,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1264:4:36",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 19065,
                  "id": 19067,
                  "nodeType": "Return",
                  "src": "1257:11:36"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "d260529c",
            "id": 19069,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isV28OrHigher",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 19062,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1217:2:36"
            },
            "returnParameters": {
              "id": 19065,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19064,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 19069,
                  "src": "1241:4:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19063,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1241:4:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1240:6:36"
            },
            "scope": 19077,
            "src": "1195:80:36",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 19075,
              "nodeType": "Block",
              "src": "1308:25:36",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 19072,
                      "name": "revert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -19,
                        -19
                      ],
                      "referencedDeclaration": -19,
                      "src": "1318:6:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_revert_pure$__$returns$__$",
                        "typeString": "function () pure"
                      }
                    },
                    "id": 19073,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1318:8:36",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19074,
                  "nodeType": "ExpressionStatement",
                  "src": "1318:8:36"
                }
              ]
            },
            "documentation": null,
            "id": 19076,
            "implemented": true,
            "kind": "receive",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 19070,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1288:2:36"
            },
            "returnParameters": {
              "id": 19071,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1308:0:36"
            },
            "scope": 19077,
            "src": "1281:52:36",
            "stateMutability": "payable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 19189,
        "src": "1147:188:36"
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 19078,
              "name": "BancorNetwork",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1976,
              "src": "1367:13:36",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_BancorNetwork_$1976",
                "typeString": "contract BancorNetwork"
              }
            },
            "id": 19079,
            "nodeType": "InheritanceSpecifier",
            "src": "1367:13:36"
          }
        ],
        "contractDependencies": [
          1976,
          19001,
          19046,
          21719,
          21818,
          22242,
          22526,
          22575,
          22661,
          22847,
          22907
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 19188,
        "linearizedBaseContracts": [
          19188,
          1976,
          22242,
          21719,
          22575,
          22661,
          21818,
          22526,
          22907,
          22847
        ],
        "name": "TestBancorNetwork",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 19081,
            "mutability": "mutable",
            "name": "oldConverter",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 19188,
            "src": "1387:33:36",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_OldConverter_$19001",
              "typeString": "contract OldConverter"
            },
            "typeName": {
              "contractScope": null,
              "id": 19080,
              "name": "OldConverter",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 19001,
              "src": "1387:12:36",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_OldConverter_$19001",
                "typeString": "contract OldConverter"
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 19083,
            "mutability": "mutable",
            "name": "newConverter",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 19188,
            "src": "1426:33:36",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_NewConverter_$19046",
              "typeString": "contract NewConverter"
            },
            "typeName": {
              "contractScope": null,
              "id": 19082,
              "name": "NewConverter",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 19046,
              "src": "1426:12:36",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_NewConverter_$19046",
                "typeString": "contract NewConverter"
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 19113,
              "nodeType": "Block",
              "src": "1561:113:36",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 19103,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 19098,
                      "name": "oldConverter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19081,
                      "src": "1571:12:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_OldConverter_$19001",
                        "typeString": "contract OldConverter"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 19101,
                          "name": "_amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19085,
                          "src": "1603:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 19100,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "NewExpression",
                        "src": "1586:16:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_creation_nonpayable$_t_uint256_$returns$_t_contract$_OldConverter_$19001_$",
                          "typeString": "function (uint256) returns (contract OldConverter)"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 19099,
                          "name": "OldConverter",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 19001,
                          "src": "1590:12:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_OldConverter_$19001",
                            "typeString": "contract OldConverter"
                          }
                        }
                      },
                      "id": 19102,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1586:25:36",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_OldConverter_$19001",
                        "typeString": "contract OldConverter"
                      }
                    },
                    "src": "1571:40:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_OldConverter_$19001",
                      "typeString": "contract OldConverter"
                    }
                  },
                  "id": 19104,
                  "nodeType": "ExpressionStatement",
                  "src": "1571:40:36"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 19111,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 19105,
                      "name": "newConverter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19083,
                      "src": "1621:12:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_NewConverter_$19046",
                        "typeString": "contract NewConverter"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 19108,
                          "name": "_amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19085,
                          "src": "1653:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 19109,
                          "name": "_fee",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19087,
                          "src": "1662:4:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 19107,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "NewExpression",
                        "src": "1636:16:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_creation_nonpayable$_t_uint256_$_t_uint256_$returns$_t_contract$_NewConverter_$19046_$",
                          "typeString": "function (uint256,uint256) returns (contract NewConverter)"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 19106,
                          "name": "NewConverter",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 19046,
                          "src": "1640:12:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_NewConverter_$19046",
                            "typeString": "contract NewConverter"
                          }
                        }
                      },
                      "id": 19110,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1636:31:36",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_NewConverter_$19046",
                        "typeString": "contract NewConverter"
                      }
                    },
                    "src": "1621:46:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_NewConverter_$19046",
                      "typeString": "contract NewConverter"
                    }
                  },
                  "id": 19112,
                  "nodeType": "ExpressionStatement",
                  "src": "1621:46:36"
                }
              ]
            },
            "documentation": null,
            "id": 19114,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 19093,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1556:1:36",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            }
                          ],
                          "id": 19092,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1548:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 19091,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1548:7:36",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 19094,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1548:10:36",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "id": 19090,
                      "name": "IContractRegistry",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22831,
                      "src": "1530:17:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_IContractRegistry_$22831_$",
                        "typeString": "type(contract IContractRegistry)"
                      }
                    },
                    "id": 19095,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1530:29:36",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IContractRegistry_$22831",
                      "typeString": "contract IContractRegistry"
                    }
                  }
                ],
                "id": 19096,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 19089,
                  "name": "BancorNetwork",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1976,
                  "src": "1516:13:36",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_BancorNetwork_$1976_$",
                    "typeString": "type(contract BancorNetwork)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1516:44:36"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 19088,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19085,
                  "mutability": "mutable",
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 19114,
                  "src": "1478:15:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19084,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1478:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19087,
                  "mutability": "mutable",
                  "name": "_fee",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 19114,
                  "src": "1495:12:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19086,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1495:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1477:31:36"
            },
            "returnParameters": {
              "id": 19097,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1561:0:36"
            },
            "scope": 19188,
            "src": "1466:208:36",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 19126,
              "nodeType": "Block",
              "src": "1772:64:36",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 19123,
                        "name": "_converter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19116,
                        "src": "1818:10:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 19121,
                        "name": "super",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -25,
                        "src": "1789:5:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_super$_TestBancorNetwork_$19188",
                          "typeString": "contract super TestBancorNetwork"
                        }
                      },
                      "id": 19122,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "isV28OrHigherConverter",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1719,
                      "src": "1789:28:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_contract$_IConverter_$13340_$returns$_t_bool_$",
                        "typeString": "function (contract IConverter) view returns (bool)"
                      }
                    },
                    "id": 19124,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1789:40:36",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 19120,
                  "id": 19125,
                  "nodeType": "Return",
                  "src": "1782:47:36"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "03613f39",
            "id": 19127,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isV28OrHigherConverterExternal",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 19117,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19116,
                  "mutability": "mutable",
                  "name": "_converter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 19127,
                  "src": "1720:21:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverter_$13340",
                    "typeString": "contract IConverter"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 19115,
                    "name": "IConverter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13340,
                    "src": "1720:10:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverter_$13340",
                      "typeString": "contract IConverter"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1719:23:36"
            },
            "returnParameters": {
              "id": 19120,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19119,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 19127,
                  "src": "1766:4:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19118,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1766:4:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1765:6:36"
            },
            "scope": 19188,
            "src": "1680:156:36",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 19156,
              "nodeType": "Block",
              "src": "1907:121:36",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 19140,
                                    "name": "oldConverter",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19081,
                                    "src": "1961:12:36",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_OldConverter_$19001",
                                      "typeString": "contract OldConverter"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_OldConverter_$19001",
                                      "typeString": "contract OldConverter"
                                    }
                                  ],
                                  "id": 19139,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1953:7:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 19138,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1953:7:36",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 19141,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1953:21:36",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 19137,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1945:8:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_payable_$",
                                "typeString": "type(address payable)"
                              },
                              "typeName": {
                                "id": 19136,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1945:8:36",
                                "stateMutability": "payable",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 19142,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1945:30:36",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          ],
                          "id": 19135,
                          "name": "IConverter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13340,
                          "src": "1934:10:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IConverter_$13340_$",
                            "typeString": "type(contract IConverter)"
                          }
                        },
                        "id": 19143,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1934:42:36",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 19145,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1990:1:36",
                            "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": 19144,
                          "name": "IERC20Token",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21127,
                          "src": "1978:11:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IERC20Token_$21127_$",
                            "typeString": "type(contract IERC20Token)"
                          }
                        },
                        "id": 19146,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1978:14:36",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 19148,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2006:1:36",
                            "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": 19147,
                          "name": "IERC20Token",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21127,
                          "src": "1994:11:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IERC20Token_$21127_$",
                            "typeString": "type(contract IERC20Token)"
                          }
                        },
                        "id": 19149,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1994:14:36",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 19152,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2018:1:36",
                            "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": 19151,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2010:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": {
                            "id": 19150,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2010:7:36",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 19153,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2010:10:36",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        },
                        {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        },
                        {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 19134,
                      "name": "getReturn",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1664,
                      "src": "1924:9:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_contract$_IConverter_$13340_$_t_contract$_IERC20Token_$21127_$_t_contract$_IERC20Token_$21127_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                        "typeString": "function (contract IConverter,contract IERC20Token,contract IERC20Token,uint256) view returns (uint256,uint256)"
                      }
                    },
                    "id": 19154,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1924:97:36",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(uint256,uint256)"
                    }
                  },
                  "functionReturnParameters": 19133,
                  "id": 19155,
                  "nodeType": "Return",
                  "src": "1917:104:36"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "98e95740",
            "id": 19157,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getReturnOld",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 19128,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1863:2:36"
            },
            "returnParameters": {
              "id": 19133,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19130,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 19157,
                  "src": "1889:7:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19129,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1889:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19132,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 19157,
                  "src": "1898:7:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19131,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1898:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1888:18:36"
            },
            "scope": 19188,
            "src": "1842:186:36",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 19186,
              "nodeType": "Block",
              "src": "2099:121:36",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 19170,
                                    "name": "newConverter",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19083,
                                    "src": "2153:12:36",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_NewConverter_$19046",
                                      "typeString": "contract NewConverter"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_NewConverter_$19046",
                                      "typeString": "contract NewConverter"
                                    }
                                  ],
                                  "id": 19169,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2145:7:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 19168,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2145:7:36",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 19171,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2145:21:36",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 19167,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2137:8:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_payable_$",
                                "typeString": "type(address payable)"
                              },
                              "typeName": {
                                "id": 19166,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "2137:8:36",
                                "stateMutability": "payable",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 19172,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2137:30:36",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          ],
                          "id": 19165,
                          "name": "IConverter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13340,
                          "src": "2126:10:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IConverter_$13340_$",
                            "typeString": "type(contract IConverter)"
                          }
                        },
                        "id": 19173,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2126:42:36",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 19175,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2182:1:36",
                            "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": 19174,
                          "name": "IERC20Token",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21127,
                          "src": "2170:11:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IERC20Token_$21127_$",
                            "typeString": "type(contract IERC20Token)"
                          }
                        },
                        "id": 19176,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2170:14:36",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 19178,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2198:1:36",
                            "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": 19177,
                          "name": "IERC20Token",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21127,
                          "src": "2186:11:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IERC20Token_$21127_$",
                            "typeString": "type(contract IERC20Token)"
                          }
                        },
                        "id": 19179,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2186:14:36",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 19182,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2210:1:36",
                            "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": 19181,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2202:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": {
                            "id": 19180,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2202:7:36",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 19183,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2202:10:36",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        },
                        {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        },
                        {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 19164,
                      "name": "getReturn",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1664,
                      "src": "2116:9:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_contract$_IConverter_$13340_$_t_contract$_IERC20Token_$21127_$_t_contract$_IERC20Token_$21127_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                        "typeString": "function (contract IConverter,contract IERC20Token,contract IERC20Token,uint256) view returns (uint256,uint256)"
                      }
                    },
                    "id": 19184,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2116:97:36",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(uint256,uint256)"
                    }
                  },
                  "functionReturnParameters": 19163,
                  "id": 19185,
                  "nodeType": "Return",
                  "src": "2109:104:36"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "699e7546",
            "id": 19187,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getReturnNew",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 19158,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2055:2:36"
            },
            "returnParameters": {
              "id": 19163,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19160,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 19187,
                  "src": "2081:7:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19159,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2081:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19162,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 19187,
                  "src": "2090:7:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19161,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2090:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2080:18:36"
            },
            "scope": 19188,
            "src": "2034:186:36",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 19189,
        "src": "1337:885:36"
      }
    ],
    "src": "51:2172:36"
  },
  "legacyAST": {
    "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/helpers/TestBancorNetwork.sol",
    "exportedSymbols": {
      "ConverterV27OrLowerWithFallback": [
        19052
      ],
      "ConverterV27OrLowerWithoutFallback": [
        19047
      ],
      "ConverterV28OrHigherWithFallback": [
        19077
      ],
      "ConverterV28OrHigherWithoutFallback": [
        19061
      ],
      "NewConverter": [
        19046
      ],
      "OldConverter": [
        19001
      ],
      "TestBancorNetwork": [
        19188
      ]
    },
    "id": 19189,
    "license": "SEE LICENSE IN LICENSE",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 18966,
        "literals": [
          "solidity",
          "0.6",
          ".12"
        ],
        "nodeType": "PragmaDirective",
        "src": "51:23:36"
      },
      {
        "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/BancorNetwork.sol",
        "file": "../BancorNetwork.sol",
        "id": 18967,
        "nodeType": "ImportDirective",
        "scope": 19189,
        "sourceUnit": 1977,
        "src": "75:30:36",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 19001,
        "linearizedBaseContracts": [
          19001
        ],
        "name": "OldConverter",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 18969,
            "mutability": "mutable",
            "name": "amount",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 19001,
            "src": "135:22:36",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 18968,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "135:7:36",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 18978,
              "nodeType": "Block",
              "src": "200:33:36",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18976,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 18974,
                      "name": "amount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18969,
                      "src": "210:6:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 18975,
                      "name": "_amount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18971,
                      "src": "219:7:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "210:16:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 18977,
                  "nodeType": "ExpressionStatement",
                  "src": "210:16:36"
                }
              ]
            },
            "documentation": null,
            "id": 18979,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 18972,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18971,
                  "mutability": "mutable",
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 18979,
                  "src": "176:15:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18970,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "176:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "175:17:36"
            },
            "returnParameters": {
              "id": 18973,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "200:0:36"
            },
            "scope": 19001,
            "src": "164:69:36",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 18999,
              "nodeType": "Block",
              "src": "359:93:36",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18990,
                    "name": "_sourceToken",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 18981,
                    "src": "369:12:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                      "typeString": "contract IERC20Token"
                    }
                  },
                  "id": 18991,
                  "nodeType": "ExpressionStatement",
                  "src": "369:12:36"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18992,
                    "name": "_targetToken",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 18983,
                    "src": "391:12:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                      "typeString": "contract IERC20Token"
                    }
                  },
                  "id": 18993,
                  "nodeType": "ExpressionStatement",
                  "src": "391:12:36"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 18994,
                    "name": "_amount",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 18985,
                    "src": "413:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 18995,
                  "nodeType": "ExpressionStatement",
                  "src": "413:7:36"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "id": 18996,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18969,
                        "src": "438:6:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 18997,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "437:8:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 18989,
                  "id": 18998,
                  "nodeType": "Return",
                  "src": "430:15:36"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "1e1401f8",
            "id": 19000,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getReturn",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 18986,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18981,
                  "mutability": "mutable",
                  "name": "_sourceToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 19000,
                  "src": "258:24:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20Token_$21127",
                    "typeString": "contract IERC20Token"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 18980,
                    "name": "IERC20Token",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 21127,
                    "src": "258:11:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                      "typeString": "contract IERC20Token"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18983,
                  "mutability": "mutable",
                  "name": "_targetToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 19000,
                  "src": "284:24:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20Token_$21127",
                    "typeString": "contract IERC20Token"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 18982,
                    "name": "IERC20Token",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 21127,
                    "src": "284:11:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                      "typeString": "contract IERC20Token"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18985,
                  "mutability": "mutable",
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 19000,
                  "src": "310:15:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18984,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "310:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "257:69:36"
            },
            "returnParameters": {
              "id": 18989,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18988,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 19000,
                  "src": "350:7:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18987,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "350:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "349:9:36"
            },
            "scope": 19001,
            "src": "239:213:36",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 19189,
        "src": "107:347:36"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 19046,
        "linearizedBaseContracts": [
          19046
        ],
        "name": "NewConverter",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 19003,
            "mutability": "mutable",
            "name": "amount",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 19046,
            "src": "484:22:36",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 19002,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "484:7:36",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 19005,
            "mutability": "mutable",
            "name": "fee",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 19046,
            "src": "512:19:36",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 19004,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "512:7:36",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 19020,
              "nodeType": "Block",
              "src": "588:53:36",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 19014,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 19012,
                      "name": "amount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19003,
                      "src": "598:6:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 19013,
                      "name": "_amount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19007,
                      "src": "607:7:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "598:16:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 19015,
                  "nodeType": "ExpressionStatement",
                  "src": "598:16:36"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 19018,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 19016,
                      "name": "fee",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19005,
                      "src": "624:3:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 19017,
                      "name": "_fee",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19009,
                      "src": "630:4:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "624:10:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 19019,
                  "nodeType": "ExpressionStatement",
                  "src": "624:10:36"
                }
              ]
            },
            "documentation": null,
            "id": 19021,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 19010,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19007,
                  "mutability": "mutable",
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 19021,
                  "src": "550:15:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19006,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "550:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19009,
                  "mutability": "mutable",
                  "name": "_fee",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 19021,
                  "src": "567:12:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19008,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "567:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "549:31:36"
            },
            "returnParameters": {
              "id": 19011,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "588:0:36"
            },
            "scope": 19046,
            "src": "538:103:36",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 19044,
              "nodeType": "Block",
              "src": "776:98:36",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 19034,
                    "name": "_sourceToken",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 19023,
                    "src": "786:12:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                      "typeString": "contract IERC20Token"
                    }
                  },
                  "id": 19035,
                  "nodeType": "ExpressionStatement",
                  "src": "786:12:36"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 19036,
                    "name": "_targetToken",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 19025,
                    "src": "808:12:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                      "typeString": "contract IERC20Token"
                    }
                  },
                  "id": 19037,
                  "nodeType": "ExpressionStatement",
                  "src": "808:12:36"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 19038,
                    "name": "_amount",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 19027,
                    "src": "830:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 19039,
                  "nodeType": "ExpressionStatement",
                  "src": "830:7:36"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "id": 19040,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19003,
                        "src": "855:6:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 19041,
                        "name": "fee",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19005,
                        "src": "863:3:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 19042,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "854:13:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(uint256,uint256)"
                    }
                  },
                  "functionReturnParameters": 19033,
                  "id": 19043,
                  "nodeType": "Return",
                  "src": "847:20:36"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "1e1401f8",
            "id": 19045,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getReturn",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 19028,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19023,
                  "mutability": "mutable",
                  "name": "_sourceToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 19045,
                  "src": "666:24:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20Token_$21127",
                    "typeString": "contract IERC20Token"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 19022,
                    "name": "IERC20Token",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 21127,
                    "src": "666:11:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                      "typeString": "contract IERC20Token"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19025,
                  "mutability": "mutable",
                  "name": "_targetToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 19045,
                  "src": "692:24:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20Token_$21127",
                    "typeString": "contract IERC20Token"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 19024,
                    "name": "IERC20Token",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 21127,
                    "src": "692:11:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                      "typeString": "contract IERC20Token"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19027,
                  "mutability": "mutable",
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 19045,
                  "src": "718:15:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19026,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "718:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "665:69:36"
            },
            "returnParameters": {
              "id": 19033,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19030,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 19045,
                  "src": "758:7:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19029,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "758:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19032,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 19045,
                  "src": "767:7:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19031,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "767:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "757:18:36"
            },
            "scope": 19046,
            "src": "647:227:36",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 19189,
        "src": "456:420:36"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 19047,
        "linearizedBaseContracts": [
          19047
        ],
        "name": "ConverterV27OrLowerWithoutFallback",
        "nodeType": "ContractDefinition",
        "nodes": [],
        "scope": 19189,
        "src": "878:47:36"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 19052,
        "linearizedBaseContracts": [
          19052
        ],
        "name": "ConverterV27OrLowerWithFallback",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 19050,
              "nodeType": "Block",
              "src": "1001:7:36",
              "statements": []
            },
            "documentation": null,
            "id": 19051,
            "implemented": true,
            "kind": "receive",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 19048,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "981:2:36"
            },
            "returnParameters": {
              "id": 19049,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1001:0:36"
            },
            "scope": 19052,
            "src": "974:34:36",
            "stateMutability": "payable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 19189,
        "src": "927:83:36"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 19061,
        "linearizedBaseContracts": [
          19061
        ],
        "name": "ConverterV28OrHigherWithoutFallback",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 19059,
              "nodeType": "Block",
              "src": "1115:28:36",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 19057,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1132:4:36",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 19056,
                  "id": 19058,
                  "nodeType": "Return",
                  "src": "1125:11:36"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "d260529c",
            "id": 19060,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isV28OrHigher",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 19053,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1085:2:36"
            },
            "returnParameters": {
              "id": 19056,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19055,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 19060,
                  "src": "1109:4:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19054,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1109:4:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1108:6:36"
            },
            "scope": 19061,
            "src": "1063:80:36",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "public"
          }
        ],
        "scope": 19189,
        "src": "1012:133:36"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 19077,
        "linearizedBaseContracts": [
          19077
        ],
        "name": "ConverterV28OrHigherWithFallback",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 19068,
              "nodeType": "Block",
              "src": "1247:28:36",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 19066,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1264:4:36",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 19065,
                  "id": 19067,
                  "nodeType": "Return",
                  "src": "1257:11:36"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "d260529c",
            "id": 19069,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isV28OrHigher",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 19062,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1217:2:36"
            },
            "returnParameters": {
              "id": 19065,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19064,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 19069,
                  "src": "1241:4:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19063,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1241:4:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1240:6:36"
            },
            "scope": 19077,
            "src": "1195:80:36",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 19075,
              "nodeType": "Block",
              "src": "1308:25:36",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 19072,
                      "name": "revert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -19,
                        -19
                      ],
                      "referencedDeclaration": -19,
                      "src": "1318:6:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_revert_pure$__$returns$__$",
                        "typeString": "function () pure"
                      }
                    },
                    "id": 19073,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1318:8:36",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19074,
                  "nodeType": "ExpressionStatement",
                  "src": "1318:8:36"
                }
              ]
            },
            "documentation": null,
            "id": 19076,
            "implemented": true,
            "kind": "receive",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 19070,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1288:2:36"
            },
            "returnParameters": {
              "id": 19071,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1308:0:36"
            },
            "scope": 19077,
            "src": "1281:52:36",
            "stateMutability": "payable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 19189,
        "src": "1147:188:36"
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 19078,
              "name": "BancorNetwork",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1976,
              "src": "1367:13:36",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_BancorNetwork_$1976",
                "typeString": "contract BancorNetwork"
              }
            },
            "id": 19079,
            "nodeType": "InheritanceSpecifier",
            "src": "1367:13:36"
          }
        ],
        "contractDependencies": [
          1976,
          19001,
          19046,
          21719,
          21818,
          22242,
          22526,
          22575,
          22661,
          22847,
          22907
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 19188,
        "linearizedBaseContracts": [
          19188,
          1976,
          22242,
          21719,
          22575,
          22661,
          21818,
          22526,
          22907,
          22847
        ],
        "name": "TestBancorNetwork",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 19081,
            "mutability": "mutable",
            "name": "oldConverter",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 19188,
            "src": "1387:33:36",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_OldConverter_$19001",
              "typeString": "contract OldConverter"
            },
            "typeName": {
              "contractScope": null,
              "id": 19080,
              "name": "OldConverter",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 19001,
              "src": "1387:12:36",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_OldConverter_$19001",
                "typeString": "contract OldConverter"
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 19083,
            "mutability": "mutable",
            "name": "newConverter",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 19188,
            "src": "1426:33:36",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_NewConverter_$19046",
              "typeString": "contract NewConverter"
            },
            "typeName": {
              "contractScope": null,
              "id": 19082,
              "name": "NewConverter",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 19046,
              "src": "1426:12:36",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_NewConverter_$19046",
                "typeString": "contract NewConverter"
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 19113,
              "nodeType": "Block",
              "src": "1561:113:36",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 19103,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 19098,
                      "name": "oldConverter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19081,
                      "src": "1571:12:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_OldConverter_$19001",
                        "typeString": "contract OldConverter"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 19101,
                          "name": "_amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19085,
                          "src": "1603:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 19100,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "NewExpression",
                        "src": "1586:16:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_creation_nonpayable$_t_uint256_$returns$_t_contract$_OldConverter_$19001_$",
                          "typeString": "function (uint256) returns (contract OldConverter)"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 19099,
                          "name": "OldConverter",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 19001,
                          "src": "1590:12:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_OldConverter_$19001",
                            "typeString": "contract OldConverter"
                          }
                        }
                      },
                      "id": 19102,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1586:25:36",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_OldConverter_$19001",
                        "typeString": "contract OldConverter"
                      }
                    },
                    "src": "1571:40:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_OldConverter_$19001",
                      "typeString": "contract OldConverter"
                    }
                  },
                  "id": 19104,
                  "nodeType": "ExpressionStatement",
                  "src": "1571:40:36"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 19111,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 19105,
                      "name": "newConverter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19083,
                      "src": "1621:12:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_NewConverter_$19046",
                        "typeString": "contract NewConverter"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 19108,
                          "name": "_amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19085,
                          "src": "1653:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 19109,
                          "name": "_fee",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19087,
                          "src": "1662:4:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 19107,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "NewExpression",
                        "src": "1636:16:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_creation_nonpayable$_t_uint256_$_t_uint256_$returns$_t_contract$_NewConverter_$19046_$",
                          "typeString": "function (uint256,uint256) returns (contract NewConverter)"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 19106,
                          "name": "NewConverter",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 19046,
                          "src": "1640:12:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_NewConverter_$19046",
                            "typeString": "contract NewConverter"
                          }
                        }
                      },
                      "id": 19110,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1636:31:36",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_NewConverter_$19046",
                        "typeString": "contract NewConverter"
                      }
                    },
                    "src": "1621:46:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_NewConverter_$19046",
                      "typeString": "contract NewConverter"
                    }
                  },
                  "id": 19112,
                  "nodeType": "ExpressionStatement",
                  "src": "1621:46:36"
                }
              ]
            },
            "documentation": null,
            "id": 19114,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 19093,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1556:1:36",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            }
                          ],
                          "id": 19092,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1548:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 19091,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1548:7:36",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 19094,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1548:10:36",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "id": 19090,
                      "name": "IContractRegistry",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22831,
                      "src": "1530:17:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_IContractRegistry_$22831_$",
                        "typeString": "type(contract IContractRegistry)"
                      }
                    },
                    "id": 19095,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1530:29:36",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IContractRegistry_$22831",
                      "typeString": "contract IContractRegistry"
                    }
                  }
                ],
                "id": 19096,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 19089,
                  "name": "BancorNetwork",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1976,
                  "src": "1516:13:36",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_BancorNetwork_$1976_$",
                    "typeString": "type(contract BancorNetwork)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1516:44:36"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 19088,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19085,
                  "mutability": "mutable",
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 19114,
                  "src": "1478:15:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19084,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1478:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19087,
                  "mutability": "mutable",
                  "name": "_fee",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 19114,
                  "src": "1495:12:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19086,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1495:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1477:31:36"
            },
            "returnParameters": {
              "id": 19097,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1561:0:36"
            },
            "scope": 19188,
            "src": "1466:208:36",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 19126,
              "nodeType": "Block",
              "src": "1772:64:36",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 19123,
                        "name": "_converter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19116,
                        "src": "1818:10:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 19121,
                        "name": "super",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -25,
                        "src": "1789:5:36",
                        "typeDescriptions": {
                          "typeIdentifier": "t_super$_TestBancorNetwork_$19188",
                          "typeString": "contract super TestBancorNetwork"
                        }
                      },
                      "id": 19122,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "isV28OrHigherConverter",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1719,
                      "src": "1789:28:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_contract$_IConverter_$13340_$returns$_t_bool_$",
                        "typeString": "function (contract IConverter) view returns (bool)"
                      }
                    },
                    "id": 19124,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1789:40:36",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 19120,
                  "id": 19125,
                  "nodeType": "Return",
                  "src": "1782:47:36"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "03613f39",
            "id": 19127,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isV28OrHigherConverterExternal",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 19117,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19116,
                  "mutability": "mutable",
                  "name": "_converter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 19127,
                  "src": "1720:21:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverter_$13340",
                    "typeString": "contract IConverter"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 19115,
                    "name": "IConverter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13340,
                    "src": "1720:10:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverter_$13340",
                      "typeString": "contract IConverter"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1719:23:36"
            },
            "returnParameters": {
              "id": 19120,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19119,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 19127,
                  "src": "1766:4:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19118,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1766:4:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1765:6:36"
            },
            "scope": 19188,
            "src": "1680:156:36",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 19156,
              "nodeType": "Block",
              "src": "1907:121:36",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 19140,
                                    "name": "oldConverter",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19081,
                                    "src": "1961:12:36",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_OldConverter_$19001",
                                      "typeString": "contract OldConverter"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_OldConverter_$19001",
                                      "typeString": "contract OldConverter"
                                    }
                                  ],
                                  "id": 19139,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1953:7:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 19138,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1953:7:36",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 19141,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1953:21:36",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 19137,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1945:8:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_payable_$",
                                "typeString": "type(address payable)"
                              },
                              "typeName": {
                                "id": 19136,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1945:8:36",
                                "stateMutability": "payable",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 19142,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1945:30:36",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          ],
                          "id": 19135,
                          "name": "IConverter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13340,
                          "src": "1934:10:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IConverter_$13340_$",
                            "typeString": "type(contract IConverter)"
                          }
                        },
                        "id": 19143,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1934:42:36",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 19145,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1990:1:36",
                            "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": 19144,
                          "name": "IERC20Token",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21127,
                          "src": "1978:11:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IERC20Token_$21127_$",
                            "typeString": "type(contract IERC20Token)"
                          }
                        },
                        "id": 19146,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1978:14:36",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 19148,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2006:1:36",
                            "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": 19147,
                          "name": "IERC20Token",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21127,
                          "src": "1994:11:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IERC20Token_$21127_$",
                            "typeString": "type(contract IERC20Token)"
                          }
                        },
                        "id": 19149,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1994:14:36",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 19152,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2018:1:36",
                            "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": 19151,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2010:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": {
                            "id": 19150,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2010:7:36",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 19153,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2010:10:36",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        },
                        {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        },
                        {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 19134,
                      "name": "getReturn",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1664,
                      "src": "1924:9:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_contract$_IConverter_$13340_$_t_contract$_IERC20Token_$21127_$_t_contract$_IERC20Token_$21127_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                        "typeString": "function (contract IConverter,contract IERC20Token,contract IERC20Token,uint256) view returns (uint256,uint256)"
                      }
                    },
                    "id": 19154,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1924:97:36",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(uint256,uint256)"
                    }
                  },
                  "functionReturnParameters": 19133,
                  "id": 19155,
                  "nodeType": "Return",
                  "src": "1917:104:36"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "98e95740",
            "id": 19157,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getReturnOld",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 19128,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1863:2:36"
            },
            "returnParameters": {
              "id": 19133,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19130,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 19157,
                  "src": "1889:7:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19129,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1889:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19132,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 19157,
                  "src": "1898:7:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19131,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1898:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1888:18:36"
            },
            "scope": 19188,
            "src": "1842:186:36",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 19186,
              "nodeType": "Block",
              "src": "2099:121:36",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 19170,
                                    "name": "newConverter",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19083,
                                    "src": "2153:12:36",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_NewConverter_$19046",
                                      "typeString": "contract NewConverter"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_NewConverter_$19046",
                                      "typeString": "contract NewConverter"
                                    }
                                  ],
                                  "id": 19169,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2145:7:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 19168,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2145:7:36",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 19171,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2145:21:36",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 19167,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2137:8:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_payable_$",
                                "typeString": "type(address payable)"
                              },
                              "typeName": {
                                "id": 19166,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "2137:8:36",
                                "stateMutability": "payable",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 19172,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2137:30:36",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          ],
                          "id": 19165,
                          "name": "IConverter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13340,
                          "src": "2126:10:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IConverter_$13340_$",
                            "typeString": "type(contract IConverter)"
                          }
                        },
                        "id": 19173,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2126:42:36",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 19175,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2182:1:36",
                            "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": 19174,
                          "name": "IERC20Token",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21127,
                          "src": "2170:11:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IERC20Token_$21127_$",
                            "typeString": "type(contract IERC20Token)"
                          }
                        },
                        "id": 19176,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2170:14:36",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 19178,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2198:1:36",
                            "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": 19177,
                          "name": "IERC20Token",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21127,
                          "src": "2186:11:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IERC20Token_$21127_$",
                            "typeString": "type(contract IERC20Token)"
                          }
                        },
                        "id": 19179,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2186:14:36",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 19182,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2210:1:36",
                            "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": 19181,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2202:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": {
                            "id": 19180,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2202:7:36",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 19183,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2202:10:36",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        },
                        {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        },
                        {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 19164,
                      "name": "getReturn",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1664,
                      "src": "2116:9:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_contract$_IConverter_$13340_$_t_contract$_IERC20Token_$21127_$_t_contract$_IERC20Token_$21127_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                        "typeString": "function (contract IConverter,contract IERC20Token,contract IERC20Token,uint256) view returns (uint256,uint256)"
                      }
                    },
                    "id": 19184,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2116:97:36",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(uint256,uint256)"
                    }
                  },
                  "functionReturnParameters": 19163,
                  "id": 19185,
                  "nodeType": "Return",
                  "src": "2109:104:36"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "699e7546",
            "id": 19187,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getReturnNew",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 19158,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2055:2:36"
            },
            "returnParameters": {
              "id": 19163,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19160,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 19187,
                  "src": "2081:7:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19159,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2081:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19162,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 19187,
                  "src": "2090:7:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19161,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2090:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2080:18:36"
            },
            "scope": 19188,
            "src": "2034:186:36",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 19189,
        "src": "1337:885:36"
      }
    ],
    "src": "51:2172:36"
  },
  "compiler": {
    "name": "solc",
    "version": "0.6.12+commit.27d51765.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.2.3",
  "updatedAt": "2020-10-20T08:24:47.802Z",
  "devdoc": {
    "kind": "dev",
    "methods": {
      "acceptOwnership()": {
        "details": "used by a new owner to accept an ownership transfer"
      },
      "claimAndConvert(address[],uint256,uint256)": {
        "details": "deprecated, backward compatibility"
      },
      "claimAndConvert2(address[],uint256,uint256,address,uint256)": {
        "details": "deprecated, backward compatibility"
      },
      "claimAndConvertFor(address[],uint256,uint256,address)": {
        "details": "deprecated, backward compatibility"
      },
      "claimAndConvertFor2(address[],uint256,uint256,address,address,uint256)": {
        "details": "deprecated, backward compatibility"
      },
      "completeXConversion(address[],address,uint256,uint256,address)": {
        "details": "allows a user to convert a token that was sent from another blockchain into any other token on the BancorNetwork ideally this transaction is created before the previous conversion is even complete, so so the input amount isn't known at that point - the amount is actually take from the BancorX contract directly by specifying the conversion id",
        "params": {
          "_bancorX": "address of the BancorX contract for the source token",
          "_beneficiary": "wallet to receive the conversion result",
          "_conversionId": "pre-determined unique (if non zero) id which refers to this conversion",
          "_minReturn": "if the conversion results in an amount smaller than the minimum return - it is cancelled, must be nonzero",
          "_path": "conversion path"
        },
        "returns": {
          "_0": "amount of tokens received from the conversion"
        }
      },
      "conversionPath(address,address)": {
        "details": "returns the conversion path between two tokens in the network note that this method is quite expensive in terms of gas and should generally be called off-chain",
        "params": {
          "_sourceToken": "source token address",
          "_targetToken": "target token address"
        },
        "returns": {
          "_0": "conversion path between the two tokens"
        }
      },
      "convert(address[],uint256,uint256)": {
        "details": "deprecated, backward compatibility"
      },
      "convert2(address[],uint256,uint256,address,uint256)": {
        "details": "deprecated, backward compatibility"
      },
      "convertByPath(address[],uint256,uint256,address,address,uint256)": {
        "details": "converts the token to any other token in the bancor network by following a predefined conversion path and transfers the result tokens to a target account affiliate account/fee can also be passed in to receive a conversion fee (on top of the liquidity provider fees) note that the network should already have been given allowance of the source token (if not ETH)",
        "params": {
          "_affiliateAccount": "wallet address to receive the affiliate fee or 0x0 to disable affiliate fee",
          "_affiliateFee": "affiliate fee in PPM or 0 to disable affiliate fee",
          "_amount": "amount to convert from, in the source token",
          "_beneficiary": "account that will receive the conversion result or 0x0 to send the result to the sender account",
          "_minReturn": "if the conversion results in an amount smaller than the minimum return - it is cancelled, must be greater than zero",
          "_path": "conversion path, see conversion path format above"
        },
        "returns": {
          "_0": "amount of tokens received from the conversion"
        }
      },
      "convertFor(address[],uint256,uint256,address)": {
        "details": "deprecated, backward compatibility"
      },
      "convertFor2(address[],uint256,uint256,address,address,uint256)": {
        "details": "deprecated, backward compatibility"
      },
      "getReturnByPath(address[],uint256)": {
        "details": "deprecated, backward compatibility"
      },
      "rateByPath(address[],uint256)": {
        "details": "returns the expected target amount of converting a given amount on a given path note that there is no support for circular paths",
        "params": {
          "_amount": "amount of _path[0] tokens received from the sender",
          "_path": "conversion path (see conversion path format above)"
        },
        "returns": {
          "_0": "expected target amount"
        }
      },
      "registerEtherToken(address,bool)": {
        "details": "allows the owner to register/unregister ether tokens",
        "params": {
          "_register": "true to register, false to unregister",
          "_token": "ether token contract address"
        }
      },
      "restoreRegistry()": {
        "details": "restores the previous contract-registry"
      },
      "restrictRegistryUpdate(bool)": {
        "details": "restricts the permission to update the contract-registry",
        "params": {
          "_onlyOwnerCanUpdateRegistry": "indicates whether or not permission is restricted to owner only"
        }
      },
      "setMaxAffiliateFee(uint256)": {
        "details": "allows the owner to update the maximum affiliate-fee",
        "params": {
          "_maxAffiliateFee": "maximum affiliate-fee"
        }
      },
      "transferOwnership(address)": {
        "details": "allows transferring the contract ownership the new owner still needs to accept the transfer can only be called by the contract owner",
        "params": {
          "_newOwner": "new contract owner"
        }
      },
      "updateRegistry()": {
        "details": "updates to the new contract-registry"
      },
      "withdrawTokens(address,address,uint256)": {
        "details": "withdraws tokens held by the contract and sends them to an account can only be called by the owner",
        "params": {
          "_amount": "amount to withdraw",
          "_to": "account to receive the new amount",
          "_token": "ERC20 token contract address"
        }
      },
      "xConvert(address[],uint256,uint256,bytes32,bytes32,uint256)": {
        "details": "converts any other token to BNT in the bancor network by following a predefined conversion path and transfers the result to an account on a different blockchain note that the network should already have been given allowance of the source token (if not ETH)",
        "params": {
          "_amount": "amount to convert from, in the source token",
          "_conversionId": "pre-determined unique (if non zero) id which refers to this transaction",
          "_minReturn": "if the conversion results in an amount smaller than the minimum return - it is cancelled, must be greater than zero",
          "_path": "conversion path, see conversion path format above",
          "_targetAccount": "address/account on the target blockchain to send the BNT to",
          "_targetBlockchain": "blockchain BNT will be issued on"
        },
        "returns": {
          "_0": "the amount of BNT received from this conversion"
        }
      },
      "xConvert2(address[],uint256,uint256,bytes32,bytes32,uint256,address,uint256)": {
        "details": "converts any other token to BNT in the bancor network by following a predefined conversion path and transfers the result to an account on a different blockchain note that the network should already have been given allowance of the source token (if not ETH)",
        "params": {
          "_affiliateAccount": "affiliate account",
          "_affiliateFee": "affiliate fee in PPM",
          "_amount": "amount to convert from, in the source token",
          "_conversionId": "pre-determined unique (if non zero) id which refers to this transaction",
          "_minReturn": "if the conversion results in an amount smaller than the minimum return - it is cancelled, must be greater than zero",
          "_path": "conversion path, see conversion path format above",
          "_targetAccount": "address/account on the target blockchain to send the BNT to",
          "_targetBlockchain": "blockchain BNT will be issued on"
        },
        "returns": {
          "_0": "the amount of BNT received from this conversion"
        }
      }
    },
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {},
    "version": 1
  }
}