{
  "contractName": "ConverterRegistry",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract IContractRegistry",
          "name": "_registry",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "contract IConverterAnchor",
          "name": "_anchor",
          "type": "address"
        }
      ],
      "name": "ConverterAnchorAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "contract IConverterAnchor",
          "name": "_anchor",
          "type": "address"
        }
      ],
      "name": "ConverterAnchorRemoved",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "contract IERC20Token",
          "name": "_convertibleToken",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "contract IConverterAnchor",
          "name": "_smartToken",
          "type": "address"
        }
      ],
      "name": "ConvertibleTokenAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "contract IERC20Token",
          "name": "_convertibleToken",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "contract IConverterAnchor",
          "name": "_smartToken",
          "type": "address"
        }
      ],
      "name": "ConvertibleTokenRemoved",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "contract IConverterAnchor",
          "name": "_liquidityPool",
          "type": "address"
        }
      ],
      "name": "LiquidityPoolAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "contract IConverterAnchor",
          "name": "_liquidityPool",
          "type": "address"
        }
      ],
      "name": "LiquidityPoolRemoved",
      "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"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "contract IConverterAnchor",
          "name": "_smartToken",
          "type": "address"
        }
      ],
      "name": "SmartTokenAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "contract IConverterAnchor",
          "name": "_smartToken",
          "type": "address"
        }
      ],
      "name": "SmartTokenRemoved",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "acceptOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "newOwner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [],
      "name": "onlyOwnerCanUpdateRegistry",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [],
      "name": "prevRegistry",
      "outputs": [
        {
          "internalType": "contract IContractRegistry",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [],
      "name": "registry",
      "outputs": [
        {
          "internalType": "contract IContractRegistry",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [],
      "name": "restoreRegistry",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bool",
          "name": "_onlyOwnerCanUpdateRegistry",
          "type": "bool"
        }
      ],
      "name": "restrictRegistryUpdate",
      "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": "uint16",
          "name": "_type",
          "type": "uint16"
        },
        {
          "internalType": "string",
          "name": "_name",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "_symbol",
          "type": "string"
        },
        {
          "internalType": "uint8",
          "name": "_decimals",
          "type": "uint8"
        },
        {
          "internalType": "uint32",
          "name": "_maxConversionFee",
          "type": "uint32"
        },
        {
          "internalType": "contract IERC20Token[]",
          "name": "_reserveTokens",
          "type": "address[]"
        },
        {
          "internalType": "uint32[]",
          "name": "_reserveWeights",
          "type": "uint32[]"
        }
      ],
      "name": "newConverter",
      "outputs": [
        {
          "internalType": "contract IConverter",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IConverter",
          "name": "_converter",
          "type": "address"
        }
      ],
      "name": "addConverter",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IConverter",
          "name": "_converter",
          "type": "address"
        }
      ],
      "name": "removeConverter",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getAnchorCount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [],
      "name": "getAnchors",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_index",
          "type": "uint256"
        }
      ],
      "name": "getAnchor",
      "outputs": [
        {
          "internalType": "contract IConverterAnchor",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_value",
          "type": "address"
        }
      ],
      "name": "isAnchor",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [],
      "name": "getLiquidityPoolCount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [],
      "name": "getLiquidityPools",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_index",
          "type": "uint256"
        }
      ],
      "name": "getLiquidityPool",
      "outputs": [
        {
          "internalType": "contract IConverterAnchor",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_value",
          "type": "address"
        }
      ],
      "name": "isLiquidityPool",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [],
      "name": "getConvertibleTokenCount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [],
      "name": "getConvertibleTokens",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_index",
          "type": "uint256"
        }
      ],
      "name": "getConvertibleToken",
      "outputs": [
        {
          "internalType": "contract IERC20Token",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_value",
          "type": "address"
        }
      ],
      "name": "isConvertibleToken",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "contract IERC20Token",
          "name": "_convertibleToken",
          "type": "address"
        }
      ],
      "name": "getConvertibleTokenAnchorCount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "contract IERC20Token",
          "name": "_convertibleToken",
          "type": "address"
        }
      ],
      "name": "getConvertibleTokenAnchors",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "contract IERC20Token",
          "name": "_convertibleToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_index",
          "type": "uint256"
        }
      ],
      "name": "getConvertibleTokenAnchor",
      "outputs": [
        {
          "internalType": "contract IConverterAnchor",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "contract IERC20Token",
          "name": "_convertibleToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_value",
          "type": "address"
        }
      ],
      "name": "isConvertibleTokenAnchor",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "_anchors",
          "type": "address[]"
        }
      ],
      "name": "getConvertersByAnchors",
      "outputs": [
        {
          "internalType": "contract IConverter[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "contract IConverter",
          "name": "_converter",
          "type": "address"
        }
      ],
      "name": "isConverterValid",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "contract IConverter",
          "name": "_converter",
          "type": "address"
        }
      ],
      "name": "isSimilarLiquidityPoolRegistered",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "uint16",
          "name": "_type",
          "type": "uint16"
        },
        {
          "internalType": "contract IERC20Token[]",
          "name": "_reserveTokens",
          "type": "address[]"
        },
        {
          "internalType": "uint32[]",
          "name": "_reserveWeights",
          "type": "uint32[]"
        }
      ],
      "name": "getLiquidityPoolByConfig",
      "outputs": [
        {
          "internalType": "contract IConverterAnchor",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [],
      "name": "getSmartTokenCount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [],
      "name": "getSmartTokens",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_index",
          "type": "uint256"
        }
      ],
      "name": "getSmartToken",
      "outputs": [
        {
          "internalType": "contract IConverterAnchor",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_value",
          "type": "address"
        }
      ],
      "name": "isSmartToken",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "contract IERC20Token",
          "name": "_convertibleToken",
          "type": "address"
        }
      ],
      "name": "getConvertibleTokenSmartTokenCount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "contract IERC20Token",
          "name": "_convertibleToken",
          "type": "address"
        }
      ],
      "name": "getConvertibleTokenSmartTokens",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "contract IERC20Token",
          "name": "_convertibleToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_index",
          "type": "uint256"
        }
      ],
      "name": "getConvertibleTokenSmartToken",
      "outputs": [
        {
          "internalType": "contract IConverterAnchor",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "contract IERC20Token",
          "name": "_convertibleToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_value",
          "type": "address"
        }
      ],
      "name": "isConvertibleTokenSmartToken",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "_smartTokens",
          "type": "address[]"
        }
      ],
      "name": "getConvertersBySmartTokens",
      "outputs": [
        {
          "internalType": "contract IConverter[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "contract IERC20Token[]",
          "name": "_reserveTokens",
          "type": "address[]"
        },
        {
          "internalType": "uint32[]",
          "name": "_reserveWeights",
          "type": "uint32[]"
        }
      ],
      "name": "getLiquidityPoolByReserveConfig",
      "outputs": [
        {
          "internalType": "contract IConverterAnchor",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IContractRegistry\",\"name\":\"_registry\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IConverterAnchor\",\"name\":\"_anchor\",\"type\":\"address\"}],\"name\":\"ConverterAnchorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IConverterAnchor\",\"name\":\"_anchor\",\"type\":\"address\"}],\"name\":\"ConverterAnchorRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC20Token\",\"name\":\"_convertibleToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IConverterAnchor\",\"name\":\"_smartToken\",\"type\":\"address\"}],\"name\":\"ConvertibleTokenAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC20Token\",\"name\":\"_convertibleToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IConverterAnchor\",\"name\":\"_smartToken\",\"type\":\"address\"}],\"name\":\"ConvertibleTokenRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IConverterAnchor\",\"name\":\"_liquidityPool\",\"type\":\"address\"}],\"name\":\"LiquidityPoolAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IConverterAnchor\",\"name\":\"_liquidityPool\",\"type\":\"address\"}],\"name\":\"LiquidityPoolRemoved\",\"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\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IConverterAnchor\",\"name\":\"_smartToken\",\"type\":\"address\"}],\"name\":\"SmartTokenAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IConverterAnchor\",\"name\":\"_smartToken\",\"type\":\"address\"}],\"name\":\"SmartTokenRemoved\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IConverter\",\"name\":\"_converter\",\"type\":\"address\"}],\"name\":\"addConverter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"getAnchor\",\"outputs\":[{\"internalType\":\"contract IConverterAnchor\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAnchorCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAnchors\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_anchors\",\"type\":\"address[]\"}],\"name\":\"getConvertersByAnchors\",\"outputs\":[{\"internalType\":\"contract IConverter[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_smartTokens\",\"type\":\"address[]\"}],\"name\":\"getConvertersBySmartTokens\",\"outputs\":[{\"internalType\":\"contract IConverter[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"getConvertibleToken\",\"outputs\":[{\"internalType\":\"contract IERC20Token\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20Token\",\"name\":\"_convertibleToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"getConvertibleTokenAnchor\",\"outputs\":[{\"internalType\":\"contract IConverterAnchor\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20Token\",\"name\":\"_convertibleToken\",\"type\":\"address\"}],\"name\":\"getConvertibleTokenAnchorCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20Token\",\"name\":\"_convertibleToken\",\"type\":\"address\"}],\"name\":\"getConvertibleTokenAnchors\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getConvertibleTokenCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20Token\",\"name\":\"_convertibleToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"getConvertibleTokenSmartToken\",\"outputs\":[{\"internalType\":\"contract IConverterAnchor\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20Token\",\"name\":\"_convertibleToken\",\"type\":\"address\"}],\"name\":\"getConvertibleTokenSmartTokenCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20Token\",\"name\":\"_convertibleToken\",\"type\":\"address\"}],\"name\":\"getConvertibleTokenSmartTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getConvertibleTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"getLiquidityPool\",\"outputs\":[{\"internalType\":\"contract IConverterAnchor\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_type\",\"type\":\"uint16\"},{\"internalType\":\"contract IERC20Token[]\",\"name\":\"_reserveTokens\",\"type\":\"address[]\"},{\"internalType\":\"uint32[]\",\"name\":\"_reserveWeights\",\"type\":\"uint32[]\"}],\"name\":\"getLiquidityPoolByConfig\",\"outputs\":[{\"internalType\":\"contract IConverterAnchor\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20Token[]\",\"name\":\"_reserveTokens\",\"type\":\"address[]\"},{\"internalType\":\"uint32[]\",\"name\":\"_reserveWeights\",\"type\":\"uint32[]\"}],\"name\":\"getLiquidityPoolByReserveConfig\",\"outputs\":[{\"internalType\":\"contract IConverterAnchor\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLiquidityPoolCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLiquidityPools\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"getSmartToken\",\"outputs\":[{\"internalType\":\"contract IConverterAnchor\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSmartTokenCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSmartTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_value\",\"type\":\"address\"}],\"name\":\"isAnchor\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IConverter\",\"name\":\"_converter\",\"type\":\"address\"}],\"name\":\"isConverterValid\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_value\",\"type\":\"address\"}],\"name\":\"isConvertibleToken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20Token\",\"name\":\"_convertibleToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_value\",\"type\":\"address\"}],\"name\":\"isConvertibleTokenAnchor\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20Token\",\"name\":\"_convertibleToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_value\",\"type\":\"address\"}],\"name\":\"isConvertibleTokenSmartToken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_value\",\"type\":\"address\"}],\"name\":\"isLiquidityPool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IConverter\",\"name\":\"_converter\",\"type\":\"address\"}],\"name\":\"isSimilarLiquidityPoolRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_value\",\"type\":\"address\"}],\"name\":\"isSmartToken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_type\",\"type\":\"uint16\"},{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"_decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"_maxConversionFee\",\"type\":\"uint32\"},{\"internalType\":\"contract IERC20Token[]\",\"name\":\"_reserveTokens\",\"type\":\"address[]\"},{\"internalType\":\"uint32[]\",\"name\":\"_reserveWeights\",\"type\":\"uint32[]\"}],\"name\":\"newConverter\",\"outputs\":[{\"internalType\":\"contract IConverter\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"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\":[],\"name\":\"registry\",\"outputs\":[{\"internalType\":\"contract IContractRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IConverter\",\"name\":\"_converter\",\"type\":\"address\"}],\"name\":\"removeConverter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":\"address\",\"name\":\"_newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"updateRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"The ConverterRegistry maintains a list of all active converters in the Bancor Network. Since converters can be upgraded and thus their address can change, the registry actually keeps converter anchors internally and not the converters themselves. The active converter for each anchor can be easily accessed by querying the anchor's owner. The registry exposes 3 differnet lists that can be accessed and iterated, based on the use-case of the caller: - Anchors - can be used to get all the latest / historical data in the network - Liquidity pools - can be used to get all liquidity pools for funding, liquidation etc. - Convertible tokens - can be used to get all tokens that can be converted in the network (excluding pool   tokens), and for each one - all anchors that hold it in their reserves The contract fires events whenever one of the primitives is added to or removed from the registry The contract is upgradable.\",\"events\":{\"ConverterAnchorAdded(address)\":{\"details\":\"triggered when a converter anchor is added to the registry\",\"params\":{\"_anchor\":\"smart token\"}},\"ConverterAnchorRemoved(address)\":{\"details\":\"triggered when a converter anchor is removed from the registry\",\"params\":{\"_anchor\":\"smart token\"}},\"ConvertibleTokenAdded(address,address)\":{\"details\":\"triggered when a convertible token is added to the registry\",\"params\":{\"_convertibleToken\":\"convertible token\",\"_smartToken\":\"associated smart token\"}},\"ConvertibleTokenRemoved(address,address)\":{\"details\":\"triggered when a convertible token is removed from the registry\",\"params\":{\"_convertibleToken\":\"convertible token\",\"_smartToken\":\"associated smart token\"}},\"LiquidityPoolAdded(address)\":{\"details\":\"triggered when a liquidity pool is added to the registry\",\"params\":{\"_liquidityPool\":\"liquidity pool\"}},\"LiquidityPoolRemoved(address)\":{\"details\":\"triggered when a liquidity pool is removed from the registry\",\"params\":{\"_liquidityPool\":\"liquidity pool\"}},\"SmartTokenAdded(address)\":{\"details\":\"deprecated, backward compatibility, use `ConverterAnchorAdded`\"},\"SmartTokenRemoved(address)\":{\"details\":\"deprecated, backward compatibility, use `ConverterAnchorRemoved`\"}},\"kind\":\"dev\",\"methods\":{\"acceptOwnership()\":{\"details\":\"used by a new owner to accept an ownership transfer\"},\"addConverter(address)\":{\"details\":\"adds an existing converter to the registry can only be called by the owner\",\"params\":{\"_converter\":\"converter\"}},\"constructor\":{\"details\":\"initializes a new ConverterRegistry instance\",\"params\":{\"_registry\":\"address of a contract registry contract\"}},\"getAnchor(uint256)\":{\"details\":\"returns the converter anchor at a given index\",\"params\":{\"_index\":\"index\"},\"returns\":{\"_0\":\"anchor at the given index\"}},\"getAnchorCount()\":{\"details\":\"returns the number of converter anchors in the registry\",\"returns\":{\"_0\":\"number of anchors\"}},\"getAnchors()\":{\"details\":\"returns the list of converter anchors in the registry\",\"returns\":{\"_0\":\"list of anchors\"}},\"getConvertersByAnchors(address[])\":{\"details\":\"returns a list of converters for a given list of anchors this is a utility function that can be used to reduce the number of calls to the contract\",\"params\":{\"_anchors\":\"list of converter anchors\"},\"returns\":{\"_0\":\"list of converters\"}},\"getConvertersBySmartTokens(address[])\":{\"details\":\"deprecated, backward compatibility, use `getConvertersByAnchors`\"},\"getConvertibleToken(uint256)\":{\"details\":\"returns the convertible token at a given index\",\"params\":{\"_index\":\"index\"},\"returns\":{\"_0\":\"convertible token at the given index\"}},\"getConvertibleTokenAnchor(address,uint256)\":{\"details\":\"returns the converter anchor associated with a given convertible token at a given index\",\"params\":{\"_index\":\"index\"},\"returns\":{\"_0\":\"anchor associated with the given convertible token at the given index\"}},\"getConvertibleTokenAnchorCount(address)\":{\"details\":\"returns the number of converter anchors associated with a given convertible token\",\"params\":{\"_convertibleToken\":\"convertible token\"},\"returns\":{\"_0\":\"number of anchors associated with the given convertible token\"}},\"getConvertibleTokenAnchors(address)\":{\"details\":\"returns the list of aoncerter anchors associated with a given convertible token\",\"params\":{\"_convertibleToken\":\"convertible token\"},\"returns\":{\"_0\":\"list of anchors associated with the given convertible token\"}},\"getConvertibleTokenCount()\":{\"details\":\"returns the number of convertible tokens in the registry\",\"returns\":{\"_0\":\"number of convertible tokens\"}},\"getConvertibleTokenSmartToken(address,uint256)\":{\"details\":\"deprecated, backward compatibility, use `getConvertibleTokenAnchor`\"},\"getConvertibleTokenSmartTokenCount(address)\":{\"details\":\"deprecated, backward compatibility, use `getConvertibleTokenAnchorCount`\"},\"getConvertibleTokenSmartTokens(address)\":{\"details\":\"deprecated, backward compatibility, use `getConvertibleTokenAnchors`\"},\"getConvertibleTokens()\":{\"details\":\"returns the list of convertible tokens in the registry\",\"returns\":{\"_0\":\"list of convertible tokens\"}},\"getLiquidityPool(uint256)\":{\"details\":\"returns the liquidity pool at a given index\",\"params\":{\"_index\":\"index\"},\"returns\":{\"_0\":\"liquidity pool at the given index\"}},\"getLiquidityPoolByConfig(uint16,address[],uint32[])\":{\"details\":\"searches for a liquidity pool with specific configuration\",\"params\":{\"_reserveTokens\":\"reserve tokens\",\"_reserveWeights\":\"reserve weights\",\"_type\":\"converter type, see ConverterBase contract main doc\"},\"returns\":{\"_0\":\"the liquidity pool, or zero if no such liquidity pool exists\"}},\"getLiquidityPoolByReserveConfig(address[],uint32[])\":{\"details\":\"deprecated, backward compatibility, use `getLiquidityPoolByConfig`\"},\"getLiquidityPoolCount()\":{\"details\":\"returns the number of liquidity pools in the registry\",\"returns\":{\"_0\":\"number of liquidity pools\"}},\"getLiquidityPools()\":{\"details\":\"returns the list of liquidity pools in the registry\",\"returns\":{\"_0\":\"list of liquidity pools\"}},\"getSmartToken(uint256)\":{\"details\":\"deprecated, backward compatibility, use `getAnchor`\"},\"getSmartTokenCount()\":{\"details\":\"deprecated, backward compatibility, use `getAnchorCount`\"},\"getSmartTokens()\":{\"details\":\"deprecated, backward compatibility, use `getAnchors`\"},\"isAnchor(address)\":{\"details\":\"checks whether or not a given value is a converter anchor\",\"params\":{\"_value\":\"value\"},\"returns\":{\"_0\":\"true if the given value is an anchor, false if not\"}},\"isConverterValid(address)\":{\"details\":\"checks whether or not a given converter is valid\",\"params\":{\"_converter\":\"converter\"},\"returns\":{\"_0\":\"true if the given converter is valid, false if not\"}},\"isConvertibleToken(address)\":{\"details\":\"checks whether or not a given value is a convertible token\",\"params\":{\"_value\":\"value\"},\"returns\":{\"_0\":\"true if the given value is a convertible token, false if not\"}},\"isConvertibleTokenAnchor(address,address)\":{\"details\":\"checks whether or not a given value is a converter anchor of a given convertible token\",\"params\":{\"_convertibleToken\":\"convertible token\",\"_value\":\"value\"},\"returns\":{\"_0\":\"true if the given value is an anchor of the given convertible token, false if not\"}},\"isConvertibleTokenSmartToken(address,address)\":{\"details\":\"deprecated, backward compatibility, use `isConvertibleTokenAnchor`\"},\"isLiquidityPool(address)\":{\"details\":\"checks whether or not a given value is a liquidity pool\",\"params\":{\"_value\":\"value\"},\"returns\":{\"_0\":\"true if the given value is a liquidity pool, false if not\"}},\"isSimilarLiquidityPoolRegistered(address)\":{\"details\":\"checks if a liquidity pool with given configuration is already registered\",\"params\":{\"_converter\":\"converter with specific configuration\"},\"returns\":{\"_0\":\"if a liquidity pool with the same configuration is already registered\"}},\"isSmartToken(address)\":{\"details\":\"deprecated, backward compatibility, use `isAnchor`\"},\"newConverter(uint16,string,string,uint8,uint32,address[],uint32[])\":{\"details\":\"creates a zero supply liquid token / empty liquidity pool and adds its converter to the registry\",\"params\":{\"_decimals\":\"token / pool decimals\",\"_maxConversionFee\":\"maximum conversion-fee\",\"_name\":\"token / pool name\",\"_reserveTokens\":\"reserve tokens\",\"_reserveWeights\":\"reserve weights\",\"_symbol\":\"token / pool symbol\",\"_type\":\"converter type, see ConverterBase contract main doc\"},\"returns\":{\"_0\":\"new converter\"}},\"removeConverter(address)\":{\"details\":\"removes a converter from the registry anyone can remove an existing converter from the registry, as long as the converter is invalid note that the owner can also remove valid converters\",\"params\":{\"_converter\":\"converter\"}},\"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\"}},\"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\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/ConverterRegistry.sol\":\"ConverterRegistry\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/ConverterRegistry.sol\":{\"keccak256\":\"0xee1e037bda67806cfe010a96d32b4cd56b7b1f9dbc2b13710e43aa376661096a\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://31a779ae265721924fb94991483fe0f42ec74c3794e1cb5eef2163f0f288f527\",\"dweb:/ipfs/QmNUNuNqBZYEyj8ABB1Xrx3HDFukdM4awv3oszUXnDURUf\"]},\"/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/converter/interfaces/IConverterFactory.sol\":{\"keccak256\":\"0x40a8b6a5dd24f48b0c51c9f784c2e5df5afbadad9459873c25163f13f68c99dd\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://6ad87f96e9e812869d79396d3415f89fabd1f068861f1c5c92bac09898938070\",\"dweb:/ipfs/QmaHUVyRsjUrQNtWnRhSnfPXMbwnFgpNwZvL9BMC5Xxagb\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/interfaces/IConverterRegistry.sol\":{\"keccak256\":\"0x827d22d6c52b3e5128595090a3694847e9c54a760abf0e47a8870a7235537723\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://edae6c2f9f6fde390032189dda1b7f720521a31df5eb98e001d04bbf44dcfa02\",\"dweb:/ipfs/QmRz2EG3tcKeKXwHizciEr19ZEH2SidtQ9rkprKc6iR5Tz\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/interfaces/IConverterRegistryData.sol\":{\"keccak256\":\"0xc2b8e75bf4d69b34f9687d90d8eb31e8462bfcf25565f5ca399151648624c73a\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://e3825b1ccce31117c984a7605376ec2e6f18b15cdd61e9d5624667332a935dd7\",\"dweb:/ipfs/QmeRHtWU1oZJtL8UxJQMbwmTyMhf8Z3DJz6XubFxbP5xQx\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/interfaces/ITypedConverterCustomFactory.sol\":{\"keccak256\":\"0xe9e91f22d45e1c39dd441bed511d5fa6acffe83910f42ea7abcfd300f59daaaf\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://621881bd2a74632b697d87e4c3253142f8758364122240d5cc18826b18bfef80\",\"dweb:/ipfs/QmcTPevgXAYM7Li4r3rKn8uqRF2hWpid2uNBwymysYjLWp\"]},\"/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/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/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/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, 26148 characters]",
  "deployedBytecode": "[encoded data, 25650 characters]",
  "immutableReferences": {},
  "sourceMap": "1414:24366:10:-:0;;;3479:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3479:90:10;619:5:57;:18;;-1:-1:-1;;;;;;619:18:57;627:10;619:18;;;3479:90:10;;594:23:64;3479:90:10;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;1414:24366:10;;692:128:64;-1:-1:-1;;;;;766:22:64;;758:54;;;;;-1:-1:-1;;;758:54:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;692:128;:::o;1414:24366:10:-;;;;;;;",
  "deployedSourceMap": "1414:24366:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3655:224:56;;;;;;;;;;;;;;;;-1:-1:-1;3655:224:56;;;;:::i;:::-;;23430:103:10;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11304:249;;;;;;;;;;;;;;;;-1:-1:-1;11304:249:10;-1:-1:-1;;;;;11304:249:10;;:::i;15233:1026::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;15233:1026:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;15233:1026:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15233:1026:10;;;;;;;;-1:-1:-1;15233:1026:10;;-1:-1:-1;;;;;15233:1026:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;15233:1026:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15233:1026:10;;-1:-1:-1;15233:1026:10;;-1:-1:-1;;;;;15233:1026:10:i;:::-;;;;-1:-1:-1;;;;;15233:1026:10;;;;;;;;;;;;;;25232:171;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;25232:171:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;25232:171:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25232:171:10;;-1:-1:-1;25232:171:10;;-1:-1:-1;;;;;25232:171:10:i;1333:38:56:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;10347:191:10;;;;;;;;;;;;;;;;-1:-1:-1;10347:191:10;-1:-1:-1;;;;;10347:191:10;;:::i;23835:107::-;;;;;;;;;;;;;;;;-1:-1:-1;23835:107:10;-1:-1:-1;;;;;23835:107:10;;:::i;10799:248::-;;;;;;;;;;;;;;;;-1:-1:-1;10799:248:10;-1:-1:-1;;;;;10799:248:10;;:::i;:::-;;;;;;;;;;;;;;;;2300:925:56;;;:::i;7106:189:10:-;;;;;;;;;;;;;;;;-1:-1:-1;7106:189:10;;:::i;4179:1300::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4179:1300:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4179:1300:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4179:1300:10;;;;;;;;-1:-1:-1;4179:1300:10;;-1:-1:-1;;;;;4179:1300:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4179:1300:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4179:1300:10;;;;;;;;;;;;;;;;-1:-1:-1;4179:1300:10;-1:-1:-1;4179:1300:10;;;;-1:-1:-1;4179:1300:10;;;-1:-1:-1;;;4179:1300:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4179:1300:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4179:1300:10;;;;;;;;-1:-1:-1;4179:1300:10;;-1:-1:-1;;;;;4179:1300:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4179:1300:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4179:1300:10;;-1:-1:-1;4179:1300:10;;-1:-1:-1;;;;;4179:1300:10:i;9568:187::-;;;:::i;11805:271::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;11805:271:10;;;;;;;;:::i;12939:362::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;12939:362:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;12939:362:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12939:362:10;;-1:-1:-1;12939:362:10;;-1:-1:-1;;;;;12939:362:10:i;1243:37:56:-;;;:::i;9235:186:10:-;;;:::i;5648:::-;;;;;;;;;;;;;;;;-1:-1:-1;5648:186:10;-1:-1:-1;;;;;5648:186:10;;:::i;24939:189::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;24939:189:10;;;;;;;;;;:::i;1422:217:57:-;;;:::i;7818:180:10:-;;;:::i;1154:33:56:-;;;:::i;8139:181:10:-;;;:::i;9933:200::-;;;;;;;;;;;;;;;;-1:-1:-1;9933:200:10;;:::i;219:29:57:-;;;:::i;13976:891:10:-;;;;;;;;;;;;;;;;-1:-1:-1;13976:891:10;-1:-1:-1;;;;;13976:891:10;;:::i;13503:199::-;;;;;;;;;;;;;;;;-1:-1:-1;13503:199:10;-1:-1:-1;;;;;13503:199:10;;:::i;6123:202::-;;;;;;;;;;;;;;;;-1:-1:-1;6123:202:10;-1:-1:-1;;;;;6123:202:10;;:::i;23624:121::-;;;;;;;;;;;;;;;;-1:-1:-1;23624:121:10;;:::i;24054:180::-;;;;;;;;;;;;;;;;-1:-1:-1;24054:180:10;-1:-1:-1;;;;;24054:180:10;;:::i;8492:199::-;;;;;;;;;;;;;;;;-1:-1:-1;8492:199:10;;:::i;3304:137:56:-;;;:::i;12391:257:10:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;12391:257:10;;;;;;;;;;:::i;25509:268::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;25509:268:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;25509:268:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25509:268:10;;;;;;;;-1:-1:-1;25509:268:10;;-1:-1:-1;;;;;25509:268:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;25509:268:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25509:268:10;;-1:-1:-1;25509:268:10;;-1:-1:-1;;;;;25509:268:10:i;6464:170::-;;;:::i;255:23:57:-;;;:::i;24630:203:10:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;24630:203:10;;;;;;;;:::i;7498:175::-;;;;;;;;;;;;;;;;-1:-1:-1;7498:175:10;-1:-1:-1;;;;;7498:175:10;;:::i;23236:102::-;;;:::i;8899:185::-;;;;;;;;;;;;;;;;-1:-1:-1;8899:185:10;-1:-1:-1;;;;;8899:185:10;;:::i;6769:171::-;;;:::i;1164:167:57:-;;;;;;;;;;;;;;;;-1:-1:-1;1164:167:57;-1:-1:-1;;;;;1164:167:57;;:::i;24342:181:10:-;;;;;;;;;;;;;;;;-1:-1:-1;24342:181:10;-1:-1:-1;;;;;24342:181:10;;:::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;23430:103:10:-;23477:16;23513:12;:10;:12::i;:::-;23506:19;;23430:103;:::o;11304:249::-;11401:16;11460:34;-1:-1:-1;;;;;;;;;;;11460:9:10;:34::i;:::-;-1:-1:-1;;;;;11437:89:10;;11527:17;11437:108;;;;;;;;;;;;;-1:-1:-1;;;;;11437:108:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11437:108:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11437:108:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11437:108:10;;;;;;;;;;;;-1:-1:-1;11437:108:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11430:115;;11304:249;;;:::o;15233:1026::-;15372:16;15508:15;:22;15483:14;:21;:47;:76;;;;;15558:1;15534:14;:21;:25;15483:76;15479:734;;;15651:40;15694:44;15723:14;15694:28;:44::i;:::-;15651:87;;15825:9;15820:382;15844:23;:30;15840:1;:34;15820:382;;;15900:23;15943;15967:1;15943:26;;;;;;;;;;;;;;15900:70;;15989:20;16031:6;-1:-1:-1;;;;;16031:12:10;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16031:14:10;;-1:-1:-1;16070:80:10;16031:14;16111:5;16118:14;16134:15;16070:29;:80::i;:::-;16066:120;;;-1:-1:-1;16180:6:10;-1:-1:-1;16173:13:10;;-1:-1:-1;;16173:13:10;16066:120;-1:-1:-1;;15876:3:10;;15820:382;;;;15479:734;;-1:-1:-1;16249:1:10;15233:1026;;;;;;:::o;25232:171::-;25320:19;25359:36;25382:12;25359:22;:36::i;:::-;25352:43;25232:171;-1:-1:-1;;25232:171:10:o;1333:38:56:-;;;-1:-1:-1;;;1333:38:56;;;;;:::o;10347:191:10:-;10421:4;10468:34;-1:-1:-1;;;;;;;;;;;10468:9:10;:34::i;:::-;-1:-1:-1;;;;;10445:77:10;;10523:6;10445:85;;;;;;;;;;;;;-1:-1:-1;;;;;10445:85:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10445:85:10;;10347:191;-1:-1:-1;;10347:191:10:o;23835:107::-;23894:4;23918:16;23927:6;23918:8;:16::i;10799:248::-;10900:7;10950:34;-1:-1:-1;;;;;;;;;;;10950:9:10;:34::i;:::-;-1:-1:-1;;;;;10927:93:10;;11021:17;10927:112;;;;;;;;;;;;;-1:-1:-1;;;;;10927:112:10;;;;;;;;;;;;;;;;;;;;;;;;;;2300:925:56;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;7106:189:10:-;7171:16;7230:34;-1:-1:-1;;;;;;;;;;;7230:9:10;:34::i;:::-;-1:-1:-1;;;;;7207:72:10;;7280:6;7207:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4179:1300;4516:21;;4566:22;;4471:10;;4516:21;4556:32;;4548:65;;;;;-1:-1:-1;;;4548:65:10;;;;;;;;;;;;-1:-1:-1;;;4548:65:10;;;;;;;;;;;;;;;4717:1;4632:64;4657:5;4664:14;4680:15;4632:24;:64::i;:::-;-1:-1:-1;;;;;4632:87:10;;4624:118;;;;;-1:-1:-1;;;4624:118:10;;;;;;;;;;;;-1:-1:-1;;;4624:118:10;;;;;;;;;;;;;;;4755:25;4801:28;-1:-1:-1;;;4801:9:10;:28::i;:::-;4755:75;;4841:23;4884:7;-1:-1:-1;;;;;4884:20:10;;4905:5;4912;4919:7;4928:9;4884:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4884:54:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4884:54:10;5023:8;;4984:67;;;-1:-1:-1;;;4984:67:10;;;;;;;;;-1:-1:-1;;;;;4984:67:10;;;;;;;5023:8;;;4984:67;;;;;;;;;;;;;4884:54;;-1:-1:-1;4950:20:10;;4984:23;;;;;;:67;;;;;4884:54;;4984:67;;;;;;;;4950:20;4984:23;:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4984:67:10;5065:24;;;-1:-1:-1;;;5065:24:10;;;;4984:67;;-1:-1:-1;;;;;;5065:22:10;;;;;:24;;;;;;;;;;;;;;;;:22;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5100:9;-1:-1:-1;;;;;5100:25:10;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5145:9;5140:109;5164:6;5160:1;:10;5140:109;;;5190:9;-1:-1:-1;;;;;5190:20:10;;5211:14;5226:1;5211:17;;;;;;;;;;;;;;5230:15;5246:1;5230:18;;;;;;;;;;;;;;5190:59;;;;;;;;;;;;;-1:-1:-1;;;;;5190:59:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5172:3:10;;;;;-1:-1:-1;5140:109:10;;-1:-1:-1;5140:109:10;;;5262:6;-1:-1:-1;;;;;5262:24:10;;5295:9;5262:44;;;;;;;;;;;;;-1:-1:-1;;;;;5262:44:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5317:9;-1:-1:-1;;;;;5317:31:10;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5361:39:10;;;-1:-1:-1;;;5361:39:10;;5389:10;5361:39;;;;;;-1:-1:-1;;;;;5361:27:10;;;-1:-1:-1;5361:27:10;;-1:-1:-1;5361:39:10;;;;;-1:-1:-1;;5361:39:10;;;;;;;-1:-1:-1;5361:27:10;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5413:31;5434:9;5413:20;:31::i;:::-;5462:9;4179:1300;-1:-1:-1;;;;;;;;;;;4179:1300:10:o;9568:187::-;9630:16;9689:34;-1:-1:-1;;;;;;;;;;;9689:9:10;:34::i;:::-;-1:-1:-1;;;;;9666:79:10;;:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9666:81:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;9666:81:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;9666:81:10;;;;;;;;;;;;-1:-1:-1;9666:81:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9659:88;;9568:187;:::o;11805:271::-;11917:16;11976:34;-1:-1:-1;;;;;;;;;;;11976:9:10;:34::i;:::-;-1:-1:-1;;;;;11953:88:10;;12042:17;12061:6;11953:115;;;;;;;;;;;;;-1:-1:-1;;;;;11953:115:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11953:115:10;;11805:271;-1:-1:-1;;;11805:271:10:o;12939:362::-;13019:19;13051:30;13101:8;:15;13084:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13084:33:10;;13051:66;;13135:9;13130:133;13154:8;:15;13150:1;:19;13130:133;;;13241:8;13250:1;13241:11;;;;;;;;;;;;;;-1:-1:-1;;;;;13224:35:10;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13224:37:10;13189:13;;:10;;13200:1;;13189:13;;;;;;-1:-1:-1;;;;;13189:74:10;;;:13;;;;;;;;;;;:74;13171:3;;13130:133;;;-1:-1:-1;13283:10:10;12939:362;-1:-1:-1;;12939:362:10:o;1243:37:56:-;;;-1:-1:-1;;;;;1243:37:56;;:::o;9235:186:10:-;9301:7;9351:34;-1:-1:-1;;;;;;;;;;;9351:9:10;:34::i;:::-;-1:-1:-1;;;;;9328:83:10;;:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9328:85:10;;-1:-1:-1;9235:186:10;:::o;5648:::-;726:12:57;:10;:12::i;:::-;5729:28:10::1;5746:10;5729:16;:28::i;:::-;5721:62;;;::::0;;-1:-1:-1;;;5721:62:10;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;5721:62:10;;;;;;;;;;;;;::::1;;5794:32;5815:10;5794:20;:32::i;:::-;5648:186:::0;:::o;24939:189::-;25045:4;25069:51;25094:17;25113:6;25069:24;:51::i;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;7818:180:10:-;7881:7;7931:34;-1:-1:-1;;;;;;;;;;;7931:9:10;:34::i;:::-;-1:-1:-1;;;;;7908:80:10;;:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1154:33:56;;;-1:-1:-1;;;;;1154:33:56;;:::o;8139:181:10:-;8198:16;8257:34;-1:-1:-1;;;;;;;;;;;8257:9:10;:34::i;:::-;-1:-1:-1;;;;;8234:76:10;;:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9933:200;10008:11;10062:34;-1:-1:-1;;;;;;;;;;;10062:9:10;:34::i;:::-;-1:-1:-1;;;;;10039:78:10;;10118:6;10039:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;219:29:57;;;-1:-1:-1;;;;;219:29:57;;:::o;13976:891:10:-;14062:4;14079:25;14107:10;-1:-1:-1;;;;;14107:30:10;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14107:32:10;14079:60;;;-1:-1:-1;14150:34:10;14079:60;14187:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14187:36:10;;14150:73;;14234:30;14280:17;14267:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14267:31:10;;14234:64;;14375:9;14370:254;14394:17;14390:1;:21;14370:254;;;14433:24;14460:10;-1:-1:-1;;;;;14460:26:10;;14487:1;14460:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14460:29:10;14504:16;;14460:29;;-1:-1:-1;14460:29:10;;14504:13;;14518:1;;14504:16;;;;;;;;;;;:31;-1:-1:-1;;;;;14504:31:10;;;-1:-1:-1;;;;;14504:31:10;;;;;14570:42;14587:10;14599:12;14570:16;:42::i;:::-;14550:14;14565:1;14550:17;;;;;;;;:62;;;;:17;;;;;;;;;;;:62;-1:-1:-1;14413:3:10;;14370:254;;;-1:-1:-1;14857:1:10;14732:104;14757:47;14774:10;14786:17;14757:16;:47::i;:::-;14806:13;14821:14;14732:24;:104::i;:::-;-1:-1:-1;;;;;14732:127:10;;;;13976:891;-1:-1:-1;;;;;13976:891:10:o;13503:199::-;13573:4;13683:10;-1:-1:-1;;;;;13645:49:10;:10;-1:-1:-1;;;;;13645:16:10;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13645:18:10;:26;;;-1:-1:-1;;;13645:26:10;;;;-1:-1:-1;;;;;13645:24:10;;;;;;:26;;;;;:18;;:26;;;;;;;;:24;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13645:26:10;-1:-1:-1;;;;;13645:49:10;;;13503:199;-1:-1:-1;;13503:199:10:o;6123:202::-;6211:5;;-1:-1:-1;;;;;6211:5:10;6197:10;:19;;:52;;;6221:28;6238:10;6221:16;:28::i;:::-;6220:29;6197:52;6189:82;;;;;-1:-1:-1;;;6189:82:10;;;;;;;;;;;;-1:-1:-1;;;6189:82:10;;;;;;;;;;;;;;;6282:35;6306:10;6282:23;:35::i;23624:121::-;23684:16;23720:17;23730:6;23720:9;:17::i;24054:180::-;24150:7;24177:49;24208:17;24177:30;:49::i;8492:199::-;8564:16;8623:34;-1:-1:-1;;;;;;;;;;;8623:9:10;:34::i;:::-;-1:-1:-1;;;;;8600:75:10;;8676:6;8600:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;12391:257:10:-;12502:4;12549:34;-1:-1:-1;;;;;;;;;;;12549:9:10;:34::i;:::-;-1:-1:-1;;;;;12526:87:10;;12614:17;12633:6;12526:114;;;;;;;;;;;;;-1:-1:-1;;;;;12526:114:10;;;;;;-1:-1:-1;;;;;12526:114:10;;;;;;;;;;;;;;;;;;;;;;;;;;;25509:268;25641:16;25677:92;25726:1;25702:14;:21;:25;:33;;25734:1;25702:33;;;25730:1;25702:33;25677:92;;25737:14;25753:15;25677:24;:92::i;6464:170::-;6520:7;6570:34;-1:-1:-1;;;;;;;;;;;6570:9:10;:34::i;:::-;-1:-1:-1;;;;;6547:77:10;;:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;255:23:57;;;-1:-1:-1;;;;;255:23:57;;:::o;24630:203:10:-;24737:16;24773:52;24799:17;24818:6;24773:25;:52::i;7498:175::-;7562:4;7609:34;-1:-1:-1;;;;;;;;;;;7609:9:10;:34::i;:::-;-1:-1:-1;;;;;7586:71:10;;7658:6;7586:79;;;;;;;;;;;;;-1:-1:-1;;;;;7586:79:10;;;;;;;;;;;;;;;;;;;;;;;;;;23236:102;23287:7;23314:16;:14;:16::i;8899:185::-;8970:4;9017:34;-1:-1:-1;;;;;;;;;;;9017:9:10;:34::i;:::-;-1:-1:-1;;;;;8994:74:10;;9069:6;8994:82;;;;;;;;;;;;;-1:-1:-1;;;;;8994:82:10;;;;;;;;;;;;;;;;;;;;;;;;;;6769:171;6821:16;6880:34;-1:-1:-1;;;;;;;;;;;6880:9:10;:34::i;:::-;-1:-1:-1;;;;;6857:73:10;;:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;24342:181:10:-;24434:16;24470:45;24497:17;24470:26;:45::i;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;4077:133:56:-;4169:8;;:33;;;-1:-1:-1;;;4169:33:56;;;;;;;;;;4142:7;;-1:-1:-1;;;;;4169:8:56;;:18;;:33;;;;;;;;;;;;;;:8;:33;;;;;;;;;;20557:934:10;20654:16;20683:44;20753:34;-1:-1:-1;;;;;;;;;;;20753:9:10;:34::i;:::-;20683:105;;20799:22;20824:21;-1:-1:-1;;;;;20824:56:10;;20881:14;20896:1;20881:17;;;;;;;;;;;;;;20824:75;;;;;;;;;;;;;-1:-1:-1;;;;;20824:75:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20824:75:10;;-1:-1:-1;20910:13:10;21043:1;21026:363;21050:14;:21;21046:1;:25;21026:363;;;21093:35;21131:21;-1:-1:-1;;;;;21131:56:10;;21188:14;21203:1;21188:17;;;;;;;;;;;;;;21131:75;;;;;;;;;;;;;-1:-1:-1;;;;;21131:75:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21131:75:10;;-1:-1:-1;21225:44:10;;;21221:157;;;21307:27;21290:44;;21361:1;21353:9;;21221:157;-1:-1:-1;21073:3:10;;21026:363;;;;21408:21;-1:-1:-1;;;;;21408:52:10;;21461:14;21476:5;21461:21;;;;;;;;;;;;;;21408:75;;;;;;;;;;;;;-1:-1:-1;;;;;21408:75:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21408:75:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;21408:75:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;21408:75:10;;;;;;;;;;;;-1:-1:-1;21408:75:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21401:82;;;;;20557:934;;;:::o;21499:658::-;21667:4;21684:25;21712:10;-1:-1:-1;;;;;21712:30:10;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21712:32:10;21684:60;;;-1:-1:-1;21770:47:10;21787:10;21684:60;21770:16;:47::i;:::-;21761:56;;:5;:56;;;21757:87;;21839:5;21832:12;;;;;21757:87;21886:17;21861:14;:21;:42;21857:73;;21925:5;21918:12;;;;;21857:73;21948:9;21943:183;21967:14;:21;21963:1;:25;21943:183;;;22036:47;22053:10;22065:14;22080:1;22065:17;;;;;;;;;;;;;;22036:16;:47::i;:::-;22014:69;;:15;22030:1;22014:18;;;;;;;;;;;;;;:69;;;22010:104;;22109:5;22102:12;;;;;;22010:104;21990:3;;21943:183;;;;22145:4;22138:11;;;21499:658;;;;;;;:::o;18900:810::-;18972:44;19042:34;-1:-1:-1;;;;;;;;;;;19042:9:10;:34::i;:::-;18972:105;;19088:23;19125:10;-1:-1:-1;;;;;19114:28:10;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19114:30:10;19183:32;;;-1:-1:-1;;;19183:32:10;;;;19114:30;;-1:-1:-1;19155:25:10;;-1:-1:-1;;;;;19183:30:10;;;;;:32;;;;;19114:30;;19183:32;;;;;;;:30;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19183:32:10;19155:60;;;-1:-1:-1;19265:40:10;19275:21;19298:6;19265:9;:40::i;:::-;19340:1;19320:17;:21;19316:196;;;19356:47;19373:21;19396:6;19356:16;:47::i;:::-;19316:196;;;19432:80;19452:21;19495:6;19505;19432:19;:80::i;:::-;19565:9;19560:142;19584:17;19580:1;:21;19560:142;;;19621:81;19641:21;19664:10;-1:-1:-1;;;;;19664:26:10;;19691:1;19664:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19664:29:10;19695:6;19621:19;:81::i;:::-;19603:3;;19560:142;;;;18900:810;;;;:::o;22294:208::-;22392:6;22414:13;22434:10;-1:-1:-1;;;;;22434:21:10;;22456:13;22434:36;;;;;;;;;;;;;-1:-1:-1;;;;;22434:36:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22434:36:10;;;;22294:208;-1:-1:-1;;;;22294:208:10:o;22736:404::-;22927:52;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22927:52:10;-1:-1:-1;;;22927:52:10;;;22896:84;;;;22835:6;;;;22869:23;;-1:-1:-1;;;;;22896:30:10;;;22927:52;;22896:84;;;;22927:52;22896:84;;22927:52;22896:84;;;;;;;;;;-1:-1:-1;;22896:84:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22854:126;;;;22995:7;:34;;;;;23006:10;:17;23027:2;23006:23;22995:34;22991:93;;;23063:10;23052:32;;;;;;;;;;;;;;;-1:-1:-1;23052:32:10;;-1:-1:-1;23045:39:10;;-1:-1:-1;;23045:39:10;22991:93;23123:1;23102:18;:22;:30;;23131:1;23102:30;;;23127:1;23102:30;23095:37;;;22736:404;-1:-1:-1;;;;;22736:404:10:o;19718:831::-;19793:44;19863:34;-1:-1:-1;;;;;;;;;;;19863:9:10;:34::i;:::-;19793:105;;19909:23;19946:10;-1:-1:-1;;;;;19935:28:10;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19935:30:10;20004:32;;;-1:-1:-1;;;20004:32:10;;;;19935:30;;-1:-1:-1;19976:25:10;;-1:-1:-1;;;;;20004:30:10;;;;;:32;;;;;19935:30;;20004:32;;;;;;;:30;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20004:32:10;19976:60;;;-1:-1:-1;20089:43:10;20102:21;20125:6;20089:12;:43::i;:::-;20167:1;20147:17;:21;20143:202;;;20183:50;20203:21;20226:6;20183:19;:50::i;:::-;20143:202;;;20262:83;20285:21;20328:6;20338;20262:22;:83::i;:::-;20401:9;20396:145;20420:17;20416:1;:21;20396:145;;;20457:84;20480:21;20503:10;-1:-1:-1;;;;;20503:26:10;;20530:1;20503:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20503:29:10;20534:6;20457:22;:84::i;:::-;20439:3;;20396:145;;16388:250;16500:22;-1:-1:-1;;;;;16500:36:10;;16537:7;16500:45;;;;;;;;;;;;;-1:-1:-1;;;;;16500:45:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16561:29:10;;-1:-1:-1;;;;;16561:29:10;;;-1:-1:-1;16561:29:10;;-1:-1:-1;16561:29:10;;;16606:24;;-1:-1:-1;;;;;16606:24:10;;;;;;;;16388:250;;:::o;17187:257::-;17319:22;-1:-1:-1;;;;;17319:39:10;;17359:20;17319:61;;;;;;;;;;;;;-1:-1:-1;;;;;17319:61:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17396:40:10;;-1:-1:-1;;;;;17396:40:10;;;-1:-1:-1;17396:40:10;;-1:-1:-1;17396:40:10;;;17187:257;;:::o;18078:296::-;18231:22;-1:-1:-1;;;;;18231:42:10;;18274:17;18293:7;18231:70;;;;;;;;;;;;;-1:-1:-1;;;;;18231:70:10;;;;;;-1:-1:-1;;;;;18231:70:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18317:49:10;;-1:-1:-1;;;;;18317:49:10;;;;-1:-1:-1;18317:49:10;;;-1:-1:-1;18317:49:10;;;;;18078:296;;;:::o;16772:260::-;16887:22;-1:-1:-1;;;;;16887:39:10;;16927:7;16887:48;;;;;;;;;;;;;-1:-1:-1;;;;;16887:48:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16951:31:10;;-1:-1:-1;;;;;16951:31:10;;;-1:-1:-1;16951:31:10;;-1:-1:-1;16951:31:10;;;16998:26;;-1:-1:-1;;;;;16998:26:10;;;;;;;;16772:260;;:::o;17604:265::-;17739:22;-1:-1:-1;;;;;17739:42:10;;17782:20;17739:64;;;;;;;;;;;;;-1:-1:-1;;;;;17739:64:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17819:42:10;;-1:-1:-1;;;;;17819:42:10;;;-1:-1:-1;17819:42:10;;-1:-1:-1;17819:42:10;;;17604:265;;:::o;18588:304::-;18744:22;-1:-1:-1;;;;;18744:45:10;;18790:17;18809:7;18744:73;;;;;;;;;;;;;-1:-1:-1;;;;;18744:73:10;;;;;;-1:-1:-1;;;;;18744:73:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18833:51:10;;-1:-1:-1;;;;;18833:51:10;;;;-1:-1:-1;18833:51:10;;;-1:-1:-1;18833:51:10;;;;;18588:304;;;:::o",
  "source": "// SPDX-License-Identifier: SEE LICENSE IN LICENSE\r\npragma solidity 0.6.12;\r\nimport \"../utility/TokenHandler.sol\";\r\nimport \"../utility/ContractRegistryClient.sol\";\r\nimport \"./interfaces/IConverter.sol\";\r\nimport \"./interfaces/IConverterFactory.sol\";\r\nimport \"./interfaces/IConverterRegistry.sol\";\r\nimport \"./interfaces/IConverterRegistryData.sol\";\r\nimport \"../token/interfaces/ISmartToken.sol\";\r\n\r\n/**\r\n  * @dev The ConverterRegistry maintains a list of all active converters in the Bancor Network.\r\n  *\r\n  * Since converters can be upgraded and thus their address can change, the registry actually keeps\r\n  * converter anchors internally and not the converters themselves.\r\n  * The active converter for each anchor can be easily accessed by querying the anchor's owner.\r\n  *\r\n  * The registry exposes 3 differnet lists that can be accessed and iterated, based on the use-case of the caller:\r\n  * - Anchors - can be used to get all the latest / historical data in the network\r\n  * - Liquidity pools - can be used to get all liquidity pools for funding, liquidation etc.\r\n  * - Convertible tokens - can be used to get all tokens that can be converted in the network (excluding pool\r\n  *   tokens), and for each one - all anchors that hold it in their reserves\r\n  *\r\n  *\r\n  * The contract fires events whenever one of the primitives is added to or removed from the registry\r\n  *\r\n  * The contract is upgradable.\r\n*/\r\ncontract ConverterRegistry is IConverterRegistry, ContractRegistryClient, TokenHandler {\r\n    /**\r\n      * @dev triggered when a converter anchor is added to the registry\r\n      *\r\n      * @param _anchor smart token\r\n    */\r\n    event ConverterAnchorAdded(IConverterAnchor indexed _anchor);\r\n\r\n    /**\r\n      * @dev triggered when a converter anchor is removed from the registry\r\n      *\r\n      * @param _anchor smart token\r\n    */\r\n    event ConverterAnchorRemoved(IConverterAnchor indexed _anchor);\r\n\r\n    /**\r\n      * @dev triggered when a liquidity pool is added to the registry\r\n      *\r\n      * @param _liquidityPool liquidity pool\r\n    */\r\n    event LiquidityPoolAdded(IConverterAnchor indexed _liquidityPool);\r\n\r\n    /**\r\n      * @dev triggered when a liquidity pool is removed from the registry\r\n      *\r\n      * @param _liquidityPool liquidity pool\r\n    */\r\n    event LiquidityPoolRemoved(IConverterAnchor indexed _liquidityPool);\r\n\r\n    /**\r\n      * @dev triggered when a convertible token is added to the registry\r\n      *\r\n      * @param _convertibleToken convertible token\r\n      * @param _smartToken associated smart token\r\n    */\r\n    event ConvertibleTokenAdded(IERC20Token indexed _convertibleToken, IConverterAnchor indexed _smartToken);\r\n\r\n    /**\r\n      * @dev triggered when a convertible token is removed from the registry\r\n      *\r\n      * @param _convertibleToken convertible token\r\n      * @param _smartToken associated smart token\r\n    */\r\n    event ConvertibleTokenRemoved(IERC20Token indexed _convertibleToken, IConverterAnchor indexed _smartToken);\r\n\r\n    /**\r\n      * @dev deprecated, backward compatibility, use `ConverterAnchorAdded`\r\n    */\r\n    event SmartTokenAdded(IConverterAnchor indexed _smartToken);\r\n\r\n    /**\r\n      * @dev deprecated, backward compatibility, use `ConverterAnchorRemoved`\r\n    */\r\n    event SmartTokenRemoved(IConverterAnchor indexed _smartToken);\r\n\r\n    /**\r\n      * @dev initializes a new ConverterRegistry instance\r\n      *\r\n      * @param _registry address of a contract registry contract\r\n    */\r\n    constructor(IContractRegistry _registry) ContractRegistryClient(_registry) public {\r\n    }\r\n\r\n    /**\r\n      * @dev creates a zero supply liquid token / empty liquidity pool and adds its converter to the registry\r\n      *\r\n      * @param _type                converter type, see ConverterBase contract main doc\r\n      * @param _name                token / pool name\r\n      * @param _symbol              token / pool symbol\r\n      * @param _decimals            token / pool decimals\r\n      * @param _maxConversionFee    maximum conversion-fee\r\n      * @param _reserveTokens       reserve tokens\r\n      * @param _reserveWeights      reserve weights\r\n      *\r\n      * @return new converter\r\n    */\r\n    function newConverter(\r\n        uint16 _type,\r\n        string memory _name,\r\n        string memory _symbol,\r\n        uint8 _decimals,\r\n        uint32 _maxConversionFee,\r\n        IERC20Token[] memory _reserveTokens,\r\n        uint32[] memory _reserveWeights\r\n    )\r\n    public virtual returns (IConverter)\r\n    {\r\n        uint256 length = _reserveTokens.length;\r\n        require(length == _reserveWeights.length, \"ERR_INVALID_RESERVES\");\r\n        require(getLiquidityPoolByConfig(_type, _reserveTokens, _reserveWeights) == IConverterAnchor(0), \"ERR_ALREADY_EXISTS\");\r\n\r\n        IConverterFactory factory = IConverterFactory(addressOf(CONVERTER_FACTORY));\r\n        IConverterAnchor anchor = IConverterAnchor(factory.createAnchor(_type, _name, _symbol, _decimals));\r\n        IConverter converter = IConverter(factory.createConverter(_type, anchor, registry, _maxConversionFee));\r\n\r\n        anchor.acceptOwnership();\r\n        converter.acceptOwnership();\r\n\r\n        for (uint256 i = 0; i < length; i++)\r\n            converter.addReserve(_reserveTokens[i], _reserveWeights[i]);\r\n\r\n        anchor.transferOwnership(address(converter));\r\n        converter.acceptAnchorOwnership();\r\n        converter.transferOwnership(msg.sender);\r\n\r\n        addConverterInternal(converter);\r\n        return converter;\r\n    }\r\n\r\n    /**\r\n      * @dev adds an existing converter to the registry\r\n      * can only be called by the owner\r\n      *\r\n      * @param _converter converter\r\n    */\r\n    function addConverter(IConverter _converter) public ownerOnly {\r\n        require(isConverterValid(_converter), \"ERR_INVALID_CONVERTER\");\r\n        addConverterInternal(_converter);\r\n    }\r\n\r\n    /**\r\n      * @dev removes a converter from the registry\r\n      * anyone can remove an existing converter from the registry, as long as the converter is invalid\r\n      * note that the owner can also remove valid converters\r\n      *\r\n      * @param _converter converter\r\n    */\r\n    function removeConverter(IConverter _converter) public {\r\n        require(msg.sender == owner || !isConverterValid(_converter), \"ERR_ACCESS_DENIED\");\r\n        removeConverterInternal(_converter);\r\n    }\r\n\r\n    /**\r\n      * @dev returns the number of converter anchors in the registry\r\n      *\r\n      * @return number of anchors\r\n    */\r\n    function getAnchorCount() public view override returns (uint256) {\r\n        return IConverterRegistryData(addressOf(CONVERTER_REGISTRY_DATA)).getSmartTokenCount();\r\n    }\r\n\r\n    /**\r\n      * @dev returns the list of converter anchors in the registry\r\n      *\r\n      * @return list of anchors\r\n    */\r\n    function getAnchors() public view override returns (address[] memory) {\r\n        return IConverterRegistryData(addressOf(CONVERTER_REGISTRY_DATA)).getSmartTokens();\r\n    }\r\n\r\n    /**\r\n      * @dev returns the converter anchor at a given index\r\n      *\r\n      * @param _index index\r\n      * @return anchor at the given index\r\n    */\r\n    function getAnchor(uint256 _index) public view override returns (IConverterAnchor) {\r\n        return IConverterRegistryData(addressOf(CONVERTER_REGISTRY_DATA)).getSmartToken(_index);\r\n    }\r\n\r\n    /**\r\n      * @dev checks whether or not a given value is a converter anchor\r\n      *\r\n      * @param _value value\r\n      * @return true if the given value is an anchor, false if not\r\n    */\r\n    function isAnchor(address _value) public view override returns (bool) {\r\n        return IConverterRegistryData(addressOf(CONVERTER_REGISTRY_DATA)).isSmartToken(_value);\r\n    }\r\n\r\n    /**\r\n      * @dev returns the number of liquidity pools in the registry\r\n      *\r\n      * @return number of liquidity pools\r\n    */\r\n    function getLiquidityPoolCount() public view override returns (uint256) {\r\n        return IConverterRegistryData(addressOf(CONVERTER_REGISTRY_DATA)).getLiquidityPoolCount();\r\n    }\r\n\r\n    /**\r\n      * @dev returns the list of liquidity pools in the registry\r\n      *\r\n      * @return list of liquidity pools\r\n    */\r\n    function getLiquidityPools() public view override returns (address[] memory) {\r\n        return IConverterRegistryData(addressOf(CONVERTER_REGISTRY_DATA)).getLiquidityPools();\r\n    }\r\n\r\n    /**\r\n      * @dev returns the liquidity pool at a given index\r\n      *\r\n      * @param _index index\r\n      * @return liquidity pool at the given index\r\n    */\r\n    function getLiquidityPool(uint256 _index) public view override returns (IConverterAnchor) {\r\n        return IConverterRegistryData(addressOf(CONVERTER_REGISTRY_DATA)).getLiquidityPool(_index);\r\n    }\r\n\r\n    /**\r\n      * @dev checks whether or not a given value is a liquidity pool\r\n      *\r\n      * @param _value value\r\n      * @return true if the given value is a liquidity pool, false if not\r\n    */\r\n    function isLiquidityPool(address _value) public view override returns (bool) {\r\n        return IConverterRegistryData(addressOf(CONVERTER_REGISTRY_DATA)).isLiquidityPool(_value);\r\n    }\r\n\r\n    /**\r\n      * @dev returns the number of convertible tokens in the registry\r\n      *\r\n      * @return number of convertible tokens\r\n    */\r\n    function getConvertibleTokenCount() public view override returns (uint256) {\r\n        return IConverterRegistryData(addressOf(CONVERTER_REGISTRY_DATA)).getConvertibleTokenCount();\r\n    }\r\n\r\n    /**\r\n      * @dev returns the list of convertible tokens in the registry\r\n      *\r\n      * @return list of convertible tokens\r\n    */\r\n    function getConvertibleTokens() public view override returns (address[] memory) {\r\n        return IConverterRegistryData(addressOf(CONVERTER_REGISTRY_DATA)).getConvertibleTokens();\r\n    }\r\n\r\n    /**\r\n      * @dev returns the convertible token at a given index\r\n      *\r\n      * @param _index index\r\n      * @return convertible token at the given index\r\n    */\r\n    function getConvertibleToken(uint256 _index) public view override returns (IERC20Token) {\r\n        return IConverterRegistryData(addressOf(CONVERTER_REGISTRY_DATA)).getConvertibleToken(_index);\r\n    }\r\n\r\n    /**\r\n      * @dev checks whether or not a given value is a convertible token\r\n      *\r\n      * @param _value value\r\n      * @return true if the given value is a convertible token, false if not\r\n    */\r\n    function isConvertibleToken(address _value) public view override returns (bool) {\r\n        return IConverterRegistryData(addressOf(CONVERTER_REGISTRY_DATA)).isConvertibleToken(_value);\r\n    }\r\n\r\n    /**\r\n      * @dev returns the number of converter anchors associated with a given convertible token\r\n      *\r\n      * @param _convertibleToken convertible token\r\n      * @return number of anchors associated with the given convertible token\r\n    */\r\n    function getConvertibleTokenAnchorCount(IERC20Token _convertibleToken) public view override returns (uint256) {\r\n        return IConverterRegistryData(addressOf(CONVERTER_REGISTRY_DATA)).getConvertibleTokenSmartTokenCount(_convertibleToken);\r\n    }\r\n\r\n    /**\r\n      * @dev returns the list of aoncerter anchors associated with a given convertible token\r\n      *\r\n      * @param _convertibleToken convertible token\r\n      * @return list of anchors associated with the given convertible token\r\n    */\r\n    function getConvertibleTokenAnchors(IERC20Token _convertibleToken) public view override returns (address[] memory) {\r\n        return IConverterRegistryData(addressOf(CONVERTER_REGISTRY_DATA)).getConvertibleTokenSmartTokens(_convertibleToken);\r\n    }\r\n\r\n    /**\r\n      * @dev returns the converter anchor associated with a given convertible token at a given index\r\n      *\r\n      * @param _index index\r\n      * @return anchor associated with the given convertible token at the given index\r\n    */\r\n    function getConvertibleTokenAnchor(IERC20Token _convertibleToken, uint256 _index) public view override returns (IConverterAnchor) {\r\n        return IConverterRegistryData(addressOf(CONVERTER_REGISTRY_DATA)).getConvertibleTokenSmartToken(_convertibleToken, _index);\r\n    }\r\n\r\n    /**\r\n      * @dev checks whether or not a given value is a converter anchor of a given convertible token\r\n      *\r\n      * @param _convertibleToken convertible token\r\n      * @param _value value\r\n      * @return true if the given value is an anchor of the given convertible token, false if not\r\n    */\r\n    function isConvertibleTokenAnchor(IERC20Token _convertibleToken, address _value) public view override returns (bool) {\r\n        return IConverterRegistryData(addressOf(CONVERTER_REGISTRY_DATA)).isConvertibleTokenSmartToken(_convertibleToken, _value);\r\n    }\r\n\r\n    /**\r\n      * @dev returns a list of converters for a given list of anchors\r\n      * this is a utility function that can be used to reduce the number of calls to the contract\r\n      *\r\n      * @param _anchors list of converter anchors\r\n      * @return list of converters\r\n    */\r\n    function getConvertersByAnchors(address[] memory _anchors) public view returns (IConverter[] memory) {\r\n        IConverter[] memory converters = new IConverter[](_anchors.length);\r\n\r\n        for (uint256 i = 0; i < _anchors.length; i++)\r\n            converters[i] = IConverter(payable(IConverterAnchor(_anchors[i]).owner()));\r\n\r\n        return converters;\r\n    }\r\n\r\n    /**\r\n      * @dev checks whether or not a given converter is valid\r\n      *\r\n      * @param _converter converter\r\n      * @return true if the given converter is valid, false if not\r\n    */\r\n    function isConverterValid(IConverter _converter) public view returns (bool) {\r\n        // verify that the converter is active\r\n        return _converter.token().owner() == address(_converter);\r\n    }\r\n\r\n    /**\r\n      * @dev checks if a liquidity pool with given configuration is already registered\r\n      *\r\n      * @param _converter converter with specific configuration\r\n      * @return if a liquidity pool with the same configuration is already registered\r\n    */\r\n    function isSimilarLiquidityPoolRegistered(IConverter _converter) public view returns (bool) {\r\n        uint256 reserveTokenCount = _converter.connectorTokenCount();\r\n        IERC20Token[] memory reserveTokens = new IERC20Token[](reserveTokenCount);\r\n        uint32[] memory reserveWeights = new uint32[](reserveTokenCount);\r\n\r\n        // get the reserve-configuration of the converter\r\n        for (uint256 i = 0; i < reserveTokenCount; i++) {\r\n            IERC20Token reserveToken = _converter.connectorTokens(i);\r\n            reserveTokens[i] = reserveToken;\r\n            reserveWeights[i] = getReserveWeight(_converter, reserveToken);\r\n        }\r\n\r\n        // return if a liquidity pool with the same configuration is already registered\r\n        return getLiquidityPoolByConfig(getConverterType(_converter, reserveTokenCount), reserveTokens, reserveWeights) != IConverterAnchor(0);\r\n    }\r\n\r\n    /**\r\n      * @dev searches for a liquidity pool with specific configuration\r\n      *\r\n      * @param _type            converter type, see ConverterBase contract main doc\r\n      * @param _reserveTokens   reserve tokens\r\n      * @param _reserveWeights  reserve weights\r\n      * @return the liquidity pool, or zero if no such liquidity pool exists\r\n    */\r\n    function getLiquidityPoolByConfig(uint16 _type, IERC20Token[] memory _reserveTokens, uint32[] memory _reserveWeights) public view returns (IConverterAnchor) {\r\n        // verify that the input parameters represent a valid liquidity pool\r\n        if (_reserveTokens.length == _reserveWeights.length && _reserveTokens.length > 1) {\r\n            // get the anchors of the least frequent token (optimization)\r\n            address[] memory convertibleTokenAnchors = getLeastFrequentTokenAnchors(_reserveTokens);\r\n            // search for a converter with the same configuration\r\n            for (uint256 i = 0; i < convertibleTokenAnchors.length; i++) {\r\n                IConverterAnchor anchor = IConverterAnchor(convertibleTokenAnchors[i]);\r\n                IConverter converter = IConverter(payable(anchor.owner()));\r\n                if (isConverterReserveConfigEqual(converter, _type, _reserveTokens, _reserveWeights))\r\n                    return anchor;\r\n            }\r\n        }\r\n\r\n        return IConverterAnchor(0);\r\n    }\r\n\r\n    /**\r\n      * @dev adds a converter anchor to the registry\r\n      *\r\n      * @param _anchor converter anchor\r\n    */\r\n    function addAnchor(IConverterRegistryData _converterRegistryData, IConverterAnchor _anchor) internal {\r\n        _converterRegistryData.addSmartToken(_anchor);\r\n        emit ConverterAnchorAdded(_anchor);\r\n        emit SmartTokenAdded(_anchor);\r\n    }\r\n\r\n    /**\r\n      * @dev removes a converter anchor from the registry\r\n      *\r\n      * @param _anchor converter anchor\r\n    */\r\n    function removeAnchor(IConverterRegistryData _converterRegistryData, IConverterAnchor _anchor) internal {\r\n        _converterRegistryData.removeSmartToken(_anchor);\r\n        emit ConverterAnchorRemoved(_anchor);\r\n        emit SmartTokenRemoved(_anchor);\r\n    }\r\n\r\n    /**\r\n      * @dev adds a liquidity pool to the registry\r\n      *\r\n      * @param _liquidityPoolAnchor liquidity pool converter anchor\r\n    */\r\n    function addLiquidityPool(IConverterRegistryData _converterRegistryData, IConverterAnchor _liquidityPoolAnchor) internal {\r\n        _converterRegistryData.addLiquidityPool(_liquidityPoolAnchor);\r\n        emit LiquidityPoolAdded(_liquidityPoolAnchor);\r\n    }\r\n\r\n    /**\r\n      * @dev removes a liquidity pool from the registry\r\n      *\r\n      * @param _liquidityPoolAnchor liquidity pool converter anchor\r\n    */\r\n    function removeLiquidityPool(IConverterRegistryData _converterRegistryData, IConverterAnchor _liquidityPoolAnchor) internal {\r\n        _converterRegistryData.removeLiquidityPool(_liquidityPoolAnchor);\r\n        emit LiquidityPoolRemoved(_liquidityPoolAnchor);\r\n    }\r\n\r\n    /**\r\n      * @dev adds a convertible token to the registry\r\n      *\r\n      * @param _convertibleToken    convertible token\r\n      * @param _anchor              associated converter anchor\r\n    */\r\n    function addConvertibleToken(IConverterRegistryData _converterRegistryData, IERC20Token _convertibleToken, IConverterAnchor _anchor) internal {\r\n        _converterRegistryData.addConvertibleToken(_convertibleToken, _anchor);\r\n        emit ConvertibleTokenAdded(_convertibleToken, _anchor);\r\n    }\r\n\r\n    /**\r\n      * @dev removes a convertible token from the registry\r\n      *\r\n      * @param _convertibleToken    convertible token\r\n      * @param _anchor              associated converter anchor\r\n    */\r\n    function removeConvertibleToken(IConverterRegistryData _converterRegistryData, IERC20Token _convertibleToken, IConverterAnchor _anchor) internal {\r\n        _converterRegistryData.removeConvertibleToken(_convertibleToken, _anchor);\r\n        emit ConvertibleTokenRemoved(_convertibleToken, _anchor);\r\n    }\r\n\r\n    function addConverterInternal(IConverter _converter) private {\r\n        IConverterRegistryData converterRegistryData = IConverterRegistryData(addressOf(CONVERTER_REGISTRY_DATA));\r\n        IConverterAnchor anchor = IConverter(_converter).token();\r\n        uint256 reserveTokenCount = _converter.connectorTokenCount();\r\n\r\n        // add the converter anchor\r\n        addAnchor(converterRegistryData, anchor);\r\n        if (reserveTokenCount > 1)\r\n            addLiquidityPool(converterRegistryData, anchor);\r\n        else\r\n            addConvertibleToken(converterRegistryData, ISmartToken(address(anchor)), anchor);\r\n\r\n        // add all reserve tokens\r\n        for (uint256 i = 0; i < reserveTokenCount; i++)\r\n            addConvertibleToken(converterRegistryData, _converter.connectorTokens(i), anchor);\r\n    }\r\n\r\n    function removeConverterInternal(IConverter _converter) private {\r\n        IConverterRegistryData converterRegistryData = IConverterRegistryData(addressOf(CONVERTER_REGISTRY_DATA));\r\n        IConverterAnchor anchor = IConverter(_converter).token();\r\n        uint256 reserveTokenCount = _converter.connectorTokenCount();\r\n\r\n        // remove the converter anchor\r\n        removeAnchor(converterRegistryData, anchor);\r\n        if (reserveTokenCount > 1)\r\n            removeLiquidityPool(converterRegistryData, anchor);\r\n        else\r\n            removeConvertibleToken(converterRegistryData, ISmartToken(address(anchor)), anchor);\r\n\r\n        // remove all reserve tokens\r\n        for (uint256 i = 0; i < reserveTokenCount; i++)\r\n            removeConvertibleToken(converterRegistryData, _converter.connectorTokens(i), anchor);\r\n    }\r\n\r\n    function getLeastFrequentTokenAnchors(IERC20Token[] memory _reserveTokens) private view returns (address[] memory) {\r\n        IConverterRegistryData converterRegistryData = IConverterRegistryData(addressOf(CONVERTER_REGISTRY_DATA));\r\n        uint256 minAnchorCount = converterRegistryData.getConvertibleTokenSmartTokenCount(_reserveTokens[0]);\r\n        uint256 index = 0;\r\n\r\n        // find the reserve token which has the smallest number of converter anchors\r\n        for (uint256 i = 1; i < _reserveTokens.length; i++) {\r\n            uint256 convertibleTokenAnchorCount = converterRegistryData.getConvertibleTokenSmartTokenCount(_reserveTokens[i]);\r\n            if (minAnchorCount > convertibleTokenAnchorCount) {\r\n                minAnchorCount = convertibleTokenAnchorCount;\r\n                index = i;\r\n            }\r\n        }\r\n\r\n        return converterRegistryData.getConvertibleTokenSmartTokens(_reserveTokens[index]);\r\n    }\r\n\r\n    function isConverterReserveConfigEqual(IConverter _converter, uint16 _type, IERC20Token[] memory _reserveTokens, uint32[] memory _reserveWeights) private view returns (bool) {\r\n        uint256 reserveTokenCount = _converter.connectorTokenCount();\r\n\r\n        if (_type != getConverterType(_converter, reserveTokenCount))\r\n            return false;\r\n\r\n        if (_reserveTokens.length != reserveTokenCount)\r\n            return false;\r\n\r\n        for (uint256 i = 0; i < _reserveTokens.length; i++) {\r\n            if (_reserveWeights[i] != getReserveWeight(_converter, _reserveTokens[i]))\r\n                return false;\r\n        }\r\n\r\n        return true;\r\n    }\r\n\r\n    // utility to get the reserve weight (including from older converters that don't support the new getReserveWeight function)\r\n    function getReserveWeight(IConverter _converter, IERC20Token _reserveToken) private view returns (uint32) {\r\n        (, uint32 weight,,,) = _converter.connectors(_reserveToken);\r\n        return weight;\r\n    }\r\n\r\n    bytes4 private constant CONVERTER_TYPE_FUNC_SELECTOR = bytes4(keccak256(\"converterType()\"));\r\n\r\n    // utility to get the converter type (including from older converters that don't support the new converterType function)\r\n    function getConverterType(IConverter _converter, uint256 _reserveTokenCount) private view returns (uint16) {\r\n        (bool success, bytes memory returnData) = address(_converter).staticcall(abi.encodeWithSelector(CONVERTER_TYPE_FUNC_SELECTOR));\r\n        if (success && returnData.length == 32) \r\n            return abi.decode(returnData, (uint16));\r\n        return _reserveTokenCount > 1 ? 1 : 0;\r\n    }\r\n\r\n    /**\r\n      * @dev deprecated, backward compatibility, use `getAnchorCount`\r\n    */\r\n    function getSmartTokenCount() public view returns (uint256) {\r\n        return getAnchorCount();\r\n    }\r\n\r\n    /**\r\n      * @dev deprecated, backward compatibility, use `getAnchors`\r\n    */\r\n    function getSmartTokens() public view returns (address[] memory) {\r\n        return getAnchors();\r\n    }\r\n\r\n    /**\r\n      * @dev deprecated, backward compatibility, use `getAnchor`\r\n    */\r\n    function getSmartToken(uint256 _index) public view returns (IConverterAnchor) {\r\n        return getAnchor(_index);\r\n    }\r\n\r\n    /**\r\n      * @dev deprecated, backward compatibility, use `isAnchor`\r\n    */\r\n    function isSmartToken(address _value) public view returns (bool) {\r\n        return isAnchor(_value);\r\n    }\r\n\r\n    /**\r\n      * @dev deprecated, backward compatibility, use `getConvertibleTokenAnchorCount`\r\n    */\r\n    function getConvertibleTokenSmartTokenCount(IERC20Token _convertibleToken) public view returns (uint256) {\r\n        return getConvertibleTokenAnchorCount(_convertibleToken);\r\n    }\r\n\r\n    /**\r\n      * @dev deprecated, backward compatibility, use `getConvertibleTokenAnchors`\r\n    */\r\n    function getConvertibleTokenSmartTokens(IERC20Token _convertibleToken) public view returns (address[] memory) {\r\n        return getConvertibleTokenAnchors(_convertibleToken);\r\n    }\r\n\r\n    /**\r\n      * @dev deprecated, backward compatibility, use `getConvertibleTokenAnchor`\r\n    */\r\n    function getConvertibleTokenSmartToken(IERC20Token _convertibleToken, uint256 _index) public view returns (IConverterAnchor) {\r\n        return getConvertibleTokenAnchor(_convertibleToken, _index);\r\n    }\r\n\r\n    /**\r\n      * @dev deprecated, backward compatibility, use `isConvertibleTokenAnchor`\r\n    */\r\n    function isConvertibleTokenSmartToken(IERC20Token _convertibleToken, address _value) public view returns (bool) {\r\n        return isConvertibleTokenAnchor(_convertibleToken, _value);\r\n    }\r\n\r\n    /**\r\n      * @dev deprecated, backward compatibility, use `getConvertersByAnchors`\r\n    */\r\n    function getConvertersBySmartTokens(address[] memory _smartTokens) public view returns (IConverter[] memory) {\r\n        return getConvertersByAnchors(_smartTokens);\r\n    }\r\n\r\n    /**\r\n      * @dev deprecated, backward compatibility, use `getLiquidityPoolByConfig`\r\n    */\r\n    function getLiquidityPoolByReserveConfig(IERC20Token[] memory _reserveTokens, uint32[] memory _reserveWeights) public view returns (IConverterAnchor) {\r\n        return getLiquidityPoolByConfig(_reserveTokens.length > 1 ? 1 : 0, _reserveTokens, _reserveWeights);\r\n    }\r\n}\r\n",
  "sourcePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/ConverterRegistry.sol",
  "ast": {
    "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/ConverterRegistry.sol",
    "exportedSymbols": {
      "ConverterRegistry": [
        11667
      ]
    },
    "id": 11668,
    "license": "SEE LICENSE IN LICENSE",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 10246,
        "literals": [
          "solidity",
          "0.6",
          ".12"
        ],
        "nodeType": "PragmaDirective",
        "src": "52:23:10"
      },
      {
        "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/TokenHandler.sol",
        "file": "../utility/TokenHandler.sol",
        "id": 10247,
        "nodeType": "ImportDirective",
        "scope": 11668,
        "sourceUnit": 22527,
        "src": "77:37:10",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/ContractRegistryClient.sol",
        "file": "../utility/ContractRegistryClient.sol",
        "id": 10248,
        "nodeType": "ImportDirective",
        "scope": 11668,
        "sourceUnit": 21720,
        "src": "116:47:10",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/interfaces/IConverter.sol",
        "file": "./interfaces/IConverter.sol",
        "id": 10249,
        "nodeType": "ImportDirective",
        "scope": 11668,
        "sourceUnit": 13341,
        "src": "165:37:10",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/interfaces/IConverterFactory.sol",
        "file": "./interfaces/IConverterFactory.sol",
        "id": 10250,
        "nodeType": "ImportDirective",
        "scope": 11668,
        "sourceUnit": 13390,
        "src": "204:44:10",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/interfaces/IConverterRegistry.sol",
        "file": "./interfaces/IConverterRegistry.sol",
        "id": 10251,
        "nodeType": "ImportDirective",
        "scope": 11668,
        "sourceUnit": 13502,
        "src": "250:45:10",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/interfaces/IConverterRegistryData.sol",
        "file": "./interfaces/IConverterRegistryData.sol",
        "id": 10252,
        "nodeType": "ImportDirective",
        "scope": 11668,
        "sourceUnit": 13648,
        "src": "297:49:10",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/token/interfaces/ISmartToken.sol",
        "file": "../token/interfaces/ISmartToken.sol",
        "id": 10253,
        "nodeType": "ImportDirective",
        "scope": 11668,
        "sourceUnit": 21183,
        "src": "348:45:10",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 10255,
              "name": "IConverterRegistry",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 13501,
              "src": "1444:18:10",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IConverterRegistry_$13501",
                "typeString": "contract IConverterRegistry"
              }
            },
            "id": 10256,
            "nodeType": "InheritanceSpecifier",
            "src": "1444:18:10"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 10257,
              "name": "ContractRegistryClient",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 21719,
              "src": "1464:22:10",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ContractRegistryClient_$21719",
                "typeString": "contract ContractRegistryClient"
              }
            },
            "id": 10258,
            "nodeType": "InheritanceSpecifier",
            "src": "1464:22:10"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 10259,
              "name": "TokenHandler",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 22526,
              "src": "1488:12:10",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_TokenHandler_$22526",
                "typeString": "contract TokenHandler"
              }
            },
            "id": 10260,
            "nodeType": "InheritanceSpecifier",
            "src": "1488:12:10"
          }
        ],
        "contractDependencies": [
          13501,
          21719,
          21818,
          22526,
          22661,
          22847
        ],
        "contractKind": "contract",
        "documentation": {
          "id": 10254,
          "nodeType": "StructuredDocumentation",
          "src": "397:1015:10",
          "text": " @dev The ConverterRegistry maintains a list of all active converters in the Bancor Network.\n Since converters can be upgraded and thus their address can change, the registry actually keeps\n converter anchors internally and not the converters themselves.\n The active converter for each anchor can be easily accessed by querying the anchor's owner.\n The registry exposes 3 differnet lists that can be accessed and iterated, based on the use-case of the caller:\n - Anchors - can be used to get all the latest / historical data in the network\n - Liquidity pools - can be used to get all liquidity pools for funding, liquidation etc.\n - Convertible tokens - can be used to get all tokens that can be converted in the network (excluding pool\n   tokens), and for each one - all anchors that hold it in their reserves\n The contract fires events whenever one of the primitives is added to or removed from the registry\n The contract is upgradable."
        },
        "fullyImplemented": true,
        "id": 11667,
        "linearizedBaseContracts": [
          11667,
          22526,
          21719,
          22661,
          21818,
          22847,
          13501
        ],
        "name": "ConverterRegistry",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "anonymous": false,
            "documentation": {
              "id": 10261,
              "nodeType": "StructuredDocumentation",
              "src": "1508:129:10",
              "text": " @dev triggered when a converter anchor is added to the registry\n @param _anchor smart token"
            },
            "id": 10265,
            "name": "ConverterAnchorAdded",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 10264,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10263,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "_anchor",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10265,
                  "src": "1670:32:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                    "typeString": "contract IConverterAnchor"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10262,
                    "name": "IConverterAnchor",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13349,
                    "src": "1670:16:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1669:34:10"
            },
            "src": "1643:61:10"
          },
          {
            "anonymous": false,
            "documentation": {
              "id": 10266,
              "nodeType": "StructuredDocumentation",
              "src": "1712:133:10",
              "text": " @dev triggered when a converter anchor is removed from the registry\n @param _anchor smart token"
            },
            "id": 10270,
            "name": "ConverterAnchorRemoved",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 10269,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10268,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "_anchor",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10270,
                  "src": "1880:32:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                    "typeString": "contract IConverterAnchor"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10267,
                    "name": "IConverterAnchor",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13349,
                    "src": "1880:16:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1879:34:10"
            },
            "src": "1851:63:10"
          },
          {
            "anonymous": false,
            "documentation": {
              "id": 10271,
              "nodeType": "StructuredDocumentation",
              "src": "1922:137:10",
              "text": " @dev triggered when a liquidity pool is added to the registry\n @param _liquidityPool liquidity pool"
            },
            "id": 10275,
            "name": "LiquidityPoolAdded",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 10274,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10273,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "_liquidityPool",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10275,
                  "src": "2090:39:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                    "typeString": "contract IConverterAnchor"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10272,
                    "name": "IConverterAnchor",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13349,
                    "src": "2090:16:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2089:41:10"
            },
            "src": "2065:66:10"
          },
          {
            "anonymous": false,
            "documentation": {
              "id": 10276,
              "nodeType": "StructuredDocumentation",
              "src": "2139:141:10",
              "text": " @dev triggered when a liquidity pool is removed from the registry\n @param _liquidityPool liquidity pool"
            },
            "id": 10280,
            "name": "LiquidityPoolRemoved",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 10279,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10278,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "_liquidityPool",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10280,
                  "src": "2313:39:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                    "typeString": "contract IConverterAnchor"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10277,
                    "name": "IConverterAnchor",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13349,
                    "src": "2313:16:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2312:41:10"
            },
            "src": "2286:68:10"
          },
          {
            "anonymous": false,
            "documentation": {
              "id": 10281,
              "nodeType": "StructuredDocumentation",
              "src": "2362:197:10",
              "text": " @dev triggered when a convertible token is added to the registry\n @param _convertibleToken convertible token\n @param _smartToken associated smart token"
            },
            "id": 10287,
            "name": "ConvertibleTokenAdded",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 10286,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10283,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "_convertibleToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10287,
                  "src": "2593:37:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20Token_$21127",
                    "typeString": "contract IERC20Token"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10282,
                    "name": "IERC20Token",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 21127,
                    "src": "2593:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                      "typeString": "contract IERC20Token"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10285,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "_smartToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10287,
                  "src": "2632:36:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                    "typeString": "contract IConverterAnchor"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10284,
                    "name": "IConverterAnchor",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13349,
                    "src": "2632:16:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2592:77:10"
            },
            "src": "2565:105:10"
          },
          {
            "anonymous": false,
            "documentation": {
              "id": 10288,
              "nodeType": "StructuredDocumentation",
              "src": "2678:201:10",
              "text": " @dev triggered when a convertible token is removed from the registry\n @param _convertibleToken convertible token\n @param _smartToken associated smart token"
            },
            "id": 10294,
            "name": "ConvertibleTokenRemoved",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 10293,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10290,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "_convertibleToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10294,
                  "src": "2915:37:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20Token_$21127",
                    "typeString": "contract IERC20Token"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10289,
                    "name": "IERC20Token",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 21127,
                    "src": "2915:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                      "typeString": "contract IERC20Token"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10292,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "_smartToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10294,
                  "src": "2954:36:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                    "typeString": "contract IConverterAnchor"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10291,
                    "name": "IConverterAnchor",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13349,
                    "src": "2954:16:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2914:77:10"
            },
            "src": "2885:107:10"
          },
          {
            "anonymous": false,
            "documentation": {
              "id": 10295,
              "nodeType": "StructuredDocumentation",
              "src": "3000:88:10",
              "text": " @dev deprecated, backward compatibility, use `ConverterAnchorAdded`"
            },
            "id": 10299,
            "name": "SmartTokenAdded",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 10298,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10297,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "_smartToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10299,
                  "src": "3116:36:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                    "typeString": "contract IConverterAnchor"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10296,
                    "name": "IConverterAnchor",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13349,
                    "src": "3116:16:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3115:38:10"
            },
            "src": "3094:60:10"
          },
          {
            "anonymous": false,
            "documentation": {
              "id": 10300,
              "nodeType": "StructuredDocumentation",
              "src": "3162:90:10",
              "text": " @dev deprecated, backward compatibility, use `ConverterAnchorRemoved`"
            },
            "id": 10304,
            "name": "SmartTokenRemoved",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 10303,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10302,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "_smartToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10304,
                  "src": "3282:36:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                    "typeString": "contract IConverterAnchor"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10301,
                    "name": "IConverterAnchor",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13349,
                    "src": "3282:16:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3281:38:10"
            },
            "src": "3258:62:10"
          },
          {
            "body": {
              "id": 10313,
              "nodeType": "Block",
              "src": "3561:8:10",
              "statements": []
            },
            "documentation": {
              "id": 10305,
              "nodeType": "StructuredDocumentation",
              "src": "3328:145:10",
              "text": " @dev initializes a new ConverterRegistry instance\n @param _registry address of a contract registry contract"
            },
            "id": 10314,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 10310,
                    "name": "_registry",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 10307,
                    "src": "3543:9:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IContractRegistry_$22831",
                      "typeString": "contract IContractRegistry"
                    }
                  }
                ],
                "id": 10311,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 10309,
                  "name": "ContractRegistryClient",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 21719,
                  "src": "3520:22:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_ContractRegistryClient_$21719_$",
                    "typeString": "type(contract ContractRegistryClient)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3520:33:10"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 10308,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10307,
                  "mutability": "mutable",
                  "name": "_registry",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10314,
                  "src": "3491:27:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IContractRegistry_$22831",
                    "typeString": "contract IContractRegistry"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10306,
                    "name": "IContractRegistry",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22831,
                    "src": "3491:17:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IContractRegistry_$22831",
                      "typeString": "contract IContractRegistry"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3490:29:10"
            },
            "returnParameters": {
              "id": 10312,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3561:0:10"
            },
            "scope": 11667,
            "src": "3479:90:10",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10453,
              "nodeType": "Block",
              "src": "4488:991:10",
              "statements": [
                {
                  "assignments": [
                    10337
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 10337,
                      "mutability": "mutable",
                      "name": "length",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10453,
                      "src": "4499:14:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 10336,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4499:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 10340,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 10338,
                      "name": "_reserveTokens",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10328,
                      "src": "4516:14:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
                        "typeString": "contract IERC20Token[] memory"
                      }
                    },
                    "id": 10339,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "4516:21:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4499:38:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 10345,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 10342,
                          "name": "length",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10337,
                          "src": "4556:6:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 10343,
                            "name": "_reserveWeights",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10331,
                            "src": "4566:15:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
                              "typeString": "uint32[] memory"
                            }
                          },
                          "id": 10344,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "4566:22:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "4556:32:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4552525f494e56414c49445f5245534552564553",
                        "id": 10346,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4590:22:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_d9402087dd8193cd0dfdf2ea32d5d892390e5da6cfb95c2d9c82b55c80bcce77",
                          "typeString": "literal_string \"ERR_INVALID_RESERVES\""
                        },
                        "value": "ERR_INVALID_RESERVES"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_d9402087dd8193cd0dfdf2ea32d5d892390e5da6cfb95c2d9c82b55c80bcce77",
                          "typeString": "literal_string \"ERR_INVALID_RESERVES\""
                        }
                      ],
                      "id": 10341,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "4548:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 10347,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4548:65:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10348,
                  "nodeType": "ExpressionStatement",
                  "src": "4548:65:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        },
                        "id": 10358,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10351,
                              "name": "_type",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10317,
                              "src": "4657:5:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10352,
                              "name": "_reserveTokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10328,
                              "src": "4664:14:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
                                "typeString": "contract IERC20Token[] memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10353,
                              "name": "_reserveWeights",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10331,
                              "src": "4680:15:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
                                "typeString": "uint32[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              },
                              {
                                "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
                                "typeString": "contract IERC20Token[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
                                "typeString": "uint32[] memory"
                              }
                            ],
                            "id": 10350,
                            "name": "getLiquidityPoolByConfig",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11031,
                            "src": "4632:24:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint16_$_t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr_$_t_array$_t_uint32_$dyn_memory_ptr_$returns$_t_contract$_IConverterAnchor_$13349_$",
                              "typeString": "function (uint16,contract IERC20Token[] memory,uint32[] memory) view returns (contract IConverterAnchor)"
                            }
                          },
                          "id": 10354,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4632:64:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                            "typeString": "contract IConverterAnchor"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 10356,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4717:1:10",
                              "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": 10355,
                            "name": "IConverterAnchor",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13349,
                            "src": "4700:16:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_IConverterAnchor_$13349_$",
                              "typeString": "type(contract IConverterAnchor)"
                            }
                          },
                          "id": 10357,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4700:19:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                            "typeString": "contract IConverterAnchor"
                          }
                        },
                        "src": "4632:87:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4552525f414c52454144595f455849535453",
                        "id": 10359,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4721:20:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_dee3679442264532ea8006772293a0d73a73c45dea71a562b7f372acad036a5c",
                          "typeString": "literal_string \"ERR_ALREADY_EXISTS\""
                        },
                        "value": "ERR_ALREADY_EXISTS"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_dee3679442264532ea8006772293a0d73a73c45dea71a562b7f372acad036a5c",
                          "typeString": "literal_string \"ERR_ALREADY_EXISTS\""
                        }
                      ],
                      "id": 10349,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "4624:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 10360,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4624:118:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10361,
                  "nodeType": "ExpressionStatement",
                  "src": "4624:118:10"
                },
                {
                  "assignments": [
                    10363
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 10363,
                      "mutability": "mutable",
                      "name": "factory",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10453,
                      "src": "4755:25:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IConverterFactory_$13389",
                        "typeString": "contract IConverterFactory"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 10362,
                        "name": "IConverterFactory",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 13389,
                        "src": "4755:17:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterFactory_$13389",
                          "typeString": "contract IConverterFactory"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 10369,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 10366,
                            "name": "CONVERTER_FACTORY",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21536,
                            "src": "4811:17:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 10365,
                          "name": "addressOf",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21718,
                          "src": "4801:9:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                            "typeString": "function (bytes32) view returns (address)"
                          }
                        },
                        "id": 10367,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4801:28:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 10364,
                      "name": "IConverterFactory",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13389,
                      "src": "4783:17:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_IConverterFactory_$13389_$",
                        "typeString": "type(contract IConverterFactory)"
                      }
                    },
                    "id": 10368,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4783:47:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterFactory_$13389",
                      "typeString": "contract IConverterFactory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4755:75:10"
                },
                {
                  "assignments": [
                    10371
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 10371,
                      "mutability": "mutable",
                      "name": "anchor",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10453,
                      "src": "4841:23:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                        "typeString": "contract IConverterAnchor"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 10370,
                        "name": "IConverterAnchor",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 13349,
                        "src": "4841:16:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 10381,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 10375,
                            "name": "_type",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10317,
                            "src": "4905:5:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 10376,
                            "name": "_name",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10319,
                            "src": "4912:5:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 10377,
                            "name": "_symbol",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10321,
                            "src": "4919:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 10378,
                            "name": "_decimals",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10323,
                            "src": "4928:9:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 10373,
                            "name": "factory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10363,
                            "src": "4884:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IConverterFactory_$13389",
                              "typeString": "contract IConverterFactory"
                            }
                          },
                          "id": 10374,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "createAnchor",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 13368,
                          "src": "4884:20:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_uint16_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint8_$returns$_t_contract$_IConverterAnchor_$13349_$",
                            "typeString": "function (uint16,string memory,string memory,uint8) external returns (contract IConverterAnchor)"
                          }
                        },
                        "id": 10379,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4884:54:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      ],
                      "id": 10372,
                      "name": "IConverterAnchor",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13349,
                      "src": "4867:16:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_IConverterAnchor_$13349_$",
                        "typeString": "type(contract IConverterAnchor)"
                      }
                    },
                    "id": 10380,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4867:72:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4841:98:10"
                },
                {
                  "assignments": [
                    10383
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 10383,
                      "mutability": "mutable",
                      "name": "converter",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10453,
                      "src": "4950:20:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IConverter_$13340",
                        "typeString": "contract IConverter"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 10382,
                        "name": "IConverter",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 13340,
                        "src": "4950:10:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 10393,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 10387,
                            "name": "_type",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10317,
                            "src": "5008:5:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 10388,
                            "name": "anchor",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10371,
                            "src": "5015:6:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                              "typeString": "contract IConverterAnchor"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 10389,
                            "name": "registry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21562,
                            "src": "5023:8:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IContractRegistry_$22831",
                              "typeString": "contract IContractRegistry"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 10390,
                            "name": "_maxConversionFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10325,
                            "src": "5033:17:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            },
                            {
                              "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                              "typeString": "contract IConverterAnchor"
                            },
                            {
                              "typeIdentifier": "t_contract$_IContractRegistry_$22831",
                              "typeString": "contract IContractRegistry"
                            },
                            {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 10385,
                            "name": "factory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10363,
                            "src": "4984:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IConverterFactory_$13389",
                              "typeString": "contract IConverterFactory"
                            }
                          },
                          "id": 10386,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "createConverter",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 13381,
                          "src": "4984:23:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_uint16_$_t_contract$_IConverterAnchor_$13349_$_t_contract$_IContractRegistry_$22831_$_t_uint32_$returns$_t_contract$_IConverter_$13340_$",
                            "typeString": "function (uint16,contract IConverterAnchor,contract IContractRegistry,uint32) external returns (contract IConverter)"
                          }
                        },
                        "id": 10391,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4984:67:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      ],
                      "id": 10384,
                      "name": "IConverter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13340,
                      "src": "4973:10:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_IConverter_$13340_$",
                        "typeString": "type(contract IConverter)"
                      }
                    },
                    "id": 10392,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4973:79:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverter_$13340",
                      "typeString": "contract IConverter"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4950:102:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 10394,
                        "name": "anchor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10371,
                        "src": "5065:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      },
                      "id": 10396,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "acceptOwnership",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22846,
                      "src": "5065:22:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$__$returns$__$",
                        "typeString": "function () external"
                      }
                    },
                    "id": 10397,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5065:24:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10398,
                  "nodeType": "ExpressionStatement",
                  "src": "5065:24:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 10399,
                        "name": "converter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10383,
                        "src": "5100:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      "id": 10401,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "acceptOwnership",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22846,
                      "src": "5100:25:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$__$returns$__$",
                        "typeString": "function () external"
                      }
                    },
                    "id": 10402,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5100:27:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10403,
                  "nodeType": "ExpressionStatement",
                  "src": "5100:27:10"
                },
                {
                  "body": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 10417,
                            "name": "_reserveTokens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10328,
                            "src": "5211:14:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
                              "typeString": "contract IERC20Token[] memory"
                            }
                          },
                          "id": 10419,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 10418,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10405,
                            "src": "5226:1:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5211:17:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20Token_$21127",
                            "typeString": "contract IERC20Token"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 10420,
                            "name": "_reserveWeights",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10331,
                            "src": "5230:15:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
                              "typeString": "uint32[] memory"
                            }
                          },
                          "id": 10422,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 10421,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10405,
                            "src": "5246:1:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5230:18:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_IERC20Token_$21127",
                            "typeString": "contract IERC20Token"
                          },
                          {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 10414,
                          "name": "converter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10383,
                          "src": "5190:9:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IConverter_$13340",
                            "typeString": "contract IConverter"
                          }
                        },
                        "id": 10416,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "addReserve",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 13292,
                        "src": "5190:20:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_nonpayable$_t_contract$_IERC20Token_$21127_$_t_uint32_$returns$__$",
                          "typeString": "function (contract IERC20Token,uint32) external"
                        }
                      },
                      "id": 10423,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5190:59:10",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 10424,
                    "nodeType": "ExpressionStatement",
                    "src": "5190:59:10"
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 10410,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 10408,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10405,
                      "src": "5160:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 10409,
                      "name": "length",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10337,
                      "src": "5164:6:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5160:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 10425,
                  "initializationExpression": {
                    "assignments": [
                      10405
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 10405,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10425,
                        "src": "5145:9:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10404,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5145:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 10407,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 10406,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5157:1:10",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "5145:13:10"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 10412,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "5172:3:10",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 10411,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10405,
                        "src": "5172:1:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 10413,
                    "nodeType": "ExpressionStatement",
                    "src": "5172:3:10"
                  },
                  "nodeType": "ForStatement",
                  "src": "5140:109:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 10431,
                            "name": "converter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10383,
                            "src": "5295:9:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IConverter_$13340",
                              "typeString": "contract IConverter"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IConverter_$13340",
                              "typeString": "contract IConverter"
                            }
                          ],
                          "id": 10430,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "5287:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 10429,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "5287:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 10432,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5287:18:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 10426,
                        "name": "anchor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10371,
                        "src": "5262:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      },
                      "id": 10428,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transferOwnership",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22843,
                      "src": "5262:24:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 10433,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5262:44:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10434,
                  "nodeType": "ExpressionStatement",
                  "src": "5262:44:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 10435,
                        "name": "converter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10383,
                        "src": "5317:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      "id": 10437,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "acceptAnchorOwnership",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13261,
                      "src": "5317:31:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$__$returns$__$",
                        "typeString": "function () external"
                      }
                    },
                    "id": 10438,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5317:33:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10439,
                  "nodeType": "ExpressionStatement",
                  "src": "5317:33:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 10443,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "5389:3:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 10444,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "5389:10:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 10440,
                        "name": "converter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10383,
                        "src": "5361:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      "id": 10442,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transferOwnership",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22843,
                      "src": "5361:27:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 10445,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5361:39:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10446,
                  "nodeType": "ExpressionStatement",
                  "src": "5361:39:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10448,
                        "name": "converter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10383,
                        "src": "5434:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      ],
                      "id": 10447,
                      "name": "addConverterInternal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11234,
                      "src": "5413:20:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IConverter_$13340_$returns$__$",
                        "typeString": "function (contract IConverter)"
                      }
                    },
                    "id": 10449,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5413:31:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10450,
                  "nodeType": "ExpressionStatement",
                  "src": "5413:31:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10451,
                    "name": "converter",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 10383,
                    "src": "5462:9:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverter_$13340",
                      "typeString": "contract IConverter"
                    }
                  },
                  "functionReturnParameters": 10335,
                  "id": 10452,
                  "nodeType": "Return",
                  "src": "5455:16:10"
                }
              ]
            },
            "documentation": {
              "id": 10315,
              "nodeType": "StructuredDocumentation",
              "src": "3577:596:10",
              "text": " @dev creates a zero supply liquid token / empty liquidity pool and adds its converter to the registry\n @param _type                converter type, see ConverterBase contract main doc\n @param _name                token / pool name\n @param _symbol              token / pool symbol\n @param _decimals            token / pool decimals\n @param _maxConversionFee    maximum conversion-fee\n @param _reserveTokens       reserve tokens\n @param _reserveWeights      reserve weights\n @return new converter"
            },
            "functionSelector": "5a0a6618",
            "id": 10454,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "newConverter",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 10332,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10317,
                  "mutability": "mutable",
                  "name": "_type",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10454,
                  "src": "4211:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 10316,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "4211:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10319,
                  "mutability": "mutable",
                  "name": "_name",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10454,
                  "src": "4234:19:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 10318,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4234:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10321,
                  "mutability": "mutable",
                  "name": "_symbol",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10454,
                  "src": "4264:21:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 10320,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4264:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10323,
                  "mutability": "mutable",
                  "name": "_decimals",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10454,
                  "src": "4296:15:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 10322,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "4296:5:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10325,
                  "mutability": "mutable",
                  "name": "_maxConversionFee",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10454,
                  "src": "4322:24:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 10324,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4322:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10328,
                  "mutability": "mutable",
                  "name": "_reserveTokens",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10454,
                  "src": "4357:35:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
                    "typeString": "contract IERC20Token[]"
                  },
                  "typeName": {
                    "baseType": {
                      "contractScope": null,
                      "id": 10326,
                      "name": "IERC20Token",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 21127,
                      "src": "4357:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IERC20Token_$21127",
                        "typeString": "contract IERC20Token"
                      }
                    },
                    "id": 10327,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "4357:13:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_storage_ptr",
                      "typeString": "contract IERC20Token[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10331,
                  "mutability": "mutable",
                  "name": "_reserveWeights",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10454,
                  "src": "4403:31:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
                    "typeString": "uint32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 10329,
                      "name": "uint32",
                      "nodeType": "ElementaryTypeName",
                      "src": "4403:6:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      }
                    },
                    "id": 10330,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "4403:8:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint32_$dyn_storage_ptr",
                      "typeString": "uint32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4200:241:10"
            },
            "returnParameters": {
              "id": 10335,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10334,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10454,
                  "src": "4471:10:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverter_$13340",
                    "typeString": "contract IConverter"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10333,
                    "name": "IConverter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13340,
                    "src": "4471:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverter_$13340",
                      "typeString": "contract IConverter"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4470:12:10"
            },
            "scope": 11667,
            "src": "4179:1300:10",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10473,
              "nodeType": "Block",
              "src": "5710:124:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 10464,
                            "name": "_converter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10457,
                            "src": "5746:10:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IConverter_$13340",
                              "typeString": "contract IConverter"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IConverter_$13340",
                              "typeString": "contract IConverter"
                            }
                          ],
                          "id": 10463,
                          "name": "isConverterValid",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10867,
                          "src": "5729:16:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_contract$_IConverter_$13340_$returns$_t_bool_$",
                            "typeString": "function (contract IConverter) view returns (bool)"
                          }
                        },
                        "id": 10465,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5729:28:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4552525f494e56414c49445f434f4e564552544552",
                        "id": 10466,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5759:23:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_29b07c9e09ddb3e03f778b1e41e2a2ddb5432c5f4862b4c497de9268b6aaf6bf",
                          "typeString": "literal_string \"ERR_INVALID_CONVERTER\""
                        },
                        "value": "ERR_INVALID_CONVERTER"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_29b07c9e09ddb3e03f778b1e41e2a2ddb5432c5f4862b4c497de9268b6aaf6bf",
                          "typeString": "literal_string \"ERR_INVALID_CONVERTER\""
                        }
                      ],
                      "id": 10462,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "5721:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 10467,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5721:62:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10468,
                  "nodeType": "ExpressionStatement",
                  "src": "5721:62:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10470,
                        "name": "_converter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10457,
                        "src": "5815:10:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      ],
                      "id": 10469,
                      "name": "addConverterInternal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11234,
                      "src": "5794:20:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IConverter_$13340_$returns$__$",
                        "typeString": "function (contract IConverter)"
                      }
                    },
                    "id": 10471,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5794:32:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10472,
                  "nodeType": "ExpressionStatement",
                  "src": "5794:32:10"
                }
              ]
            },
            "documentation": {
              "id": 10455,
              "nodeType": "StructuredDocumentation",
              "src": "5487:155:10",
              "text": " @dev adds an existing converter to the registry\n can only be called by the owner\n @param _converter converter"
            },
            "functionSelector": "6ce1c4dc",
            "id": 10474,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 10460,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 10459,
                  "name": "ownerOnly",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 21754,
                  "src": "5700:9:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5700:9:10"
              }
            ],
            "name": "addConverter",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 10458,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10457,
                  "mutability": "mutable",
                  "name": "_converter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10474,
                  "src": "5670:21:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverter_$13340",
                    "typeString": "contract IConverter"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10456,
                    "name": "IConverter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13340,
                    "src": "5670:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverter_$13340",
                      "typeString": "contract IConverter"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5669:23:10"
            },
            "returnParameters": {
              "id": 10461,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5710:0:10"
            },
            "scope": 11667,
            "src": "5648:186:10",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10497,
              "nodeType": "Block",
              "src": "6178:147:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 10489,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 10484,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 10481,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "6197:3:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 10482,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "6197:10:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 10483,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21728,
                            "src": "6211:5:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "6197:19:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 10488,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "6220:29:10",
                          "subExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 10486,
                                "name": "_converter",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10477,
                                "src": "6238:10:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IConverter_$13340",
                                  "typeString": "contract IConverter"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IConverter_$13340",
                                  "typeString": "contract IConverter"
                                }
                              ],
                              "id": 10485,
                              "name": "isConverterValid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10867,
                              "src": "6221:16:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_contract$_IConverter_$13340_$returns$_t_bool_$",
                                "typeString": "function (contract IConverter) view returns (bool)"
                              }
                            },
                            "id": 10487,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6221:28:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "6197:52:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4552525f4143434553535f44454e494544",
                        "id": 10490,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6251:19:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_f5894269650d3e1726ed81a4f48c5b62c7dd6fa025b89d639952a7012960d666",
                          "typeString": "literal_string \"ERR_ACCESS_DENIED\""
                        },
                        "value": "ERR_ACCESS_DENIED"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_f5894269650d3e1726ed81a4f48c5b62c7dd6fa025b89d639952a7012960d666",
                          "typeString": "literal_string \"ERR_ACCESS_DENIED\""
                        }
                      ],
                      "id": 10480,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "6189:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 10491,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6189:82:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10492,
                  "nodeType": "ExpressionStatement",
                  "src": "6189:82:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10494,
                        "name": "_converter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10477,
                        "src": "6306:10:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      ],
                      "id": 10493,
                      "name": "removeConverterInternal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11307,
                      "src": "6282:23:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IConverter_$13340_$returns$__$",
                        "typeString": "function (contract IConverter)"
                      }
                    },
                    "id": 10495,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6282:35:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10496,
                  "nodeType": "ExpressionStatement",
                  "src": "6282:35:10"
                }
              ]
            },
            "documentation": {
              "id": 10475,
              "nodeType": "StructuredDocumentation",
              "src": "5842:275:10",
              "text": " @dev removes a converter from the registry\n anyone can remove an existing converter from the registry, as long as the converter is invalid\n note that the owner can also remove valid converters\n @param _converter converter"
            },
            "functionSelector": "9e76a007",
            "id": 10498,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "removeConverter",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 10478,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10477,
                  "mutability": "mutable",
                  "name": "_converter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10498,
                  "src": "6148:21:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverter_$13340",
                    "typeString": "contract IConverter"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10476,
                    "name": "IConverter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13340,
                    "src": "6148:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverter_$13340",
                      "typeString": "contract IConverter"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6147:23:10"
            },
            "returnParameters": {
              "id": 10479,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6178:0:10"
            },
            "scope": 11667,
            "src": "6123:202:10",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              13397
            ],
            "body": {
              "id": 10513,
              "nodeType": "Block",
              "src": "6529:105:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 10507,
                                "name": "CONVERTER_REGISTRY_DATA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21548,
                                "src": "6580:23:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 10506,
                              "name": "addressOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21718,
                              "src": "6570:9:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                                "typeString": "function (bytes32) view returns (address)"
                              }
                            },
                            "id": 10508,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6570:34:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 10505,
                          "name": "IConverterRegistryData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13647,
                          "src": "6547:22:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
                            "typeString": "type(contract IConverterRegistryData)"
                          }
                        },
                        "id": 10509,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6547:58:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                          "typeString": "contract IConverterRegistryData"
                        }
                      },
                      "id": 10510,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getSmartTokenCount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13543,
                      "src": "6547:77:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                        "typeString": "function () view external returns (uint256)"
                      }
                    },
                    "id": 10511,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6547:79:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 10504,
                  "id": 10512,
                  "nodeType": "Return",
                  "src": "6540:86:10"
                }
              ]
            },
            "documentation": {
              "id": 10499,
              "nodeType": "StructuredDocumentation",
              "src": "6333:125:10",
              "text": " @dev returns the number of converter anchors in the registry\n @return number of anchors"
            },
            "functionSelector": "d3182bed",
            "id": 10514,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getAnchorCount",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 10501,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "6502:8:10"
            },
            "parameters": {
              "id": 10500,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6487:2:10"
            },
            "returnParameters": {
              "id": 10504,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10503,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10514,
                  "src": "6520:7:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10502,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6520:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6519:9:10"
            },
            "scope": 11667,
            "src": "6464:170:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              13403
            ],
            "body": {
              "id": 10530,
              "nodeType": "Block",
              "src": "6839:101:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 10524,
                                "name": "CONVERTER_REGISTRY_DATA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21548,
                                "src": "6890:23:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 10523,
                              "name": "addressOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21718,
                              "src": "6880:9:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                                "typeString": "function (bytes32) view returns (address)"
                              }
                            },
                            "id": 10525,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6880:34:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 10522,
                          "name": "IConverterRegistryData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13647,
                          "src": "6857:22:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
                            "typeString": "type(contract IConverterRegistryData)"
                          }
                        },
                        "id": 10526,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6857:58:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                          "typeString": "contract IConverterRegistryData"
                        }
                      },
                      "id": 10527,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getSmartTokens",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13549,
                      "src": "6857:73:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                        "typeString": "function () view external returns (address[] memory)"
                      }
                    },
                    "id": 10528,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6857:75:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                      "typeString": "address[] memory"
                    }
                  },
                  "functionReturnParameters": 10521,
                  "id": 10529,
                  "nodeType": "Return",
                  "src": "6850:82:10"
                }
              ]
            },
            "documentation": {
              "id": 10515,
              "nodeType": "StructuredDocumentation",
              "src": "6642:121:10",
              "text": " @dev returns the list of converter anchors in the registry\n @return list of anchors"
            },
            "functionSelector": "effb3c6e",
            "id": 10531,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getAnchors",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 10517,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "6803:8:10"
            },
            "parameters": {
              "id": 10516,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6788:2:10"
            },
            "returnParameters": {
              "id": 10521,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10520,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10531,
                  "src": "6821:16:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 10518,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "6821:7:10",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 10519,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "6821:9:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6820:18:10"
            },
            "scope": 11667,
            "src": "6769:171:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              13410
            ],
            "body": {
              "id": 10549,
              "nodeType": "Block",
              "src": "7189:106:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10546,
                        "name": "_index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10534,
                        "src": "7280:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 10542,
                                "name": "CONVERTER_REGISTRY_DATA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21548,
                                "src": "7240:23:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 10541,
                              "name": "addressOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21718,
                              "src": "7230:9:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                                "typeString": "function (bytes32) view returns (address)"
                              }
                            },
                            "id": 10543,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7230:34:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 10540,
                          "name": "IConverterRegistryData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13647,
                          "src": "7207:22:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
                            "typeString": "type(contract IConverterRegistryData)"
                          }
                        },
                        "id": 10544,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7207:58:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                          "typeString": "contract IConverterRegistryData"
                        }
                      },
                      "id": 10545,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getSmartToken",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13556,
                      "src": "7207:72:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_contract$_IConverterAnchor_$13349_$",
                        "typeString": "function (uint256) view external returns (contract IConverterAnchor)"
                      }
                    },
                    "id": 10547,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7207:80:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "functionReturnParameters": 10539,
                  "id": 10548,
                  "nodeType": "Return",
                  "src": "7200:87:10"
                }
              ]
            },
            "documentation": {
              "id": 10532,
              "nodeType": "StructuredDocumentation",
              "src": "6948:152:10",
              "text": " @dev returns the converter anchor at a given index\n @param _index index\n @return anchor at the given index"
            },
            "functionSelector": "4c7df18f",
            "id": 10550,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getAnchor",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 10536,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "7153:8:10"
            },
            "parameters": {
              "id": 10535,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10534,
                  "mutability": "mutable",
                  "name": "_index",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10550,
                  "src": "7125:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10533,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7125:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7124:16:10"
            },
            "returnParameters": {
              "id": 10539,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10538,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10550,
                  "src": "7171:16:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                    "typeString": "contract IConverterAnchor"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10537,
                    "name": "IConverterAnchor",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13349,
                    "src": "7171:16:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7170:18:10"
            },
            "scope": 11667,
            "src": "7106:189:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              13417
            ],
            "body": {
              "id": 10568,
              "nodeType": "Block",
              "src": "7568:105:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10565,
                        "name": "_value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10553,
                        "src": "7658:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 10561,
                                "name": "CONVERTER_REGISTRY_DATA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21548,
                                "src": "7619:23:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 10560,
                              "name": "addressOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21718,
                              "src": "7609:9:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                                "typeString": "function (bytes32) view returns (address)"
                              }
                            },
                            "id": 10562,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7609:34:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 10559,
                          "name": "IConverterRegistryData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13647,
                          "src": "7586:22:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
                            "typeString": "type(contract IConverterRegistryData)"
                          }
                        },
                        "id": 10563,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7586:58:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                          "typeString": "contract IConverterRegistryData"
                        }
                      },
                      "id": 10564,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "isSmartToken",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13563,
                      "src": "7586:71:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$",
                        "typeString": "function (address) view external returns (bool)"
                      }
                    },
                    "id": 10566,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7586:79:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 10558,
                  "id": 10567,
                  "nodeType": "Return",
                  "src": "7579:86:10"
                }
              ]
            },
            "documentation": {
              "id": 10551,
              "nodeType": "StructuredDocumentation",
              "src": "7303:189:10",
              "text": " @dev checks whether or not a given value is a converter anchor\n @param _value value\n @return true if the given value is an anchor, false if not"
            },
            "functionSelector": "d8cced2a",
            "id": 10569,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isAnchor",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 10555,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "7544:8:10"
            },
            "parameters": {
              "id": 10554,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10553,
                  "mutability": "mutable",
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10569,
                  "src": "7516:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10552,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7516:7:10",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7515:16:10"
            },
            "returnParameters": {
              "id": 10558,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10557,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10569,
                  "src": "7562:4:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 10556,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "7562:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7561:6:10"
            },
            "scope": 11667,
            "src": "7498:175:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              13422
            ],
            "body": {
              "id": 10584,
              "nodeType": "Block",
              "src": "7890:108:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 10578,
                                "name": "CONVERTER_REGISTRY_DATA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21548,
                                "src": "7941:23:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 10577,
                              "name": "addressOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21718,
                              "src": "7931:9:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                                "typeString": "function (bytes32) view returns (address)"
                              }
                            },
                            "id": 10579,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7931:34:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 10576,
                          "name": "IConverterRegistryData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13647,
                          "src": "7908:22:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
                            "typeString": "type(contract IConverterRegistryData)"
                          }
                        },
                        "id": 10580,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7908:58:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                          "typeString": "contract IConverterRegistryData"
                        }
                      },
                      "id": 10581,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getLiquidityPoolCount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13568,
                      "src": "7908:80:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                        "typeString": "function () view external returns (uint256)"
                      }
                    },
                    "id": 10582,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7908:82:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 10575,
                  "id": 10583,
                  "nodeType": "Return",
                  "src": "7901:89:10"
                }
              ]
            },
            "documentation": {
              "id": 10570,
              "nodeType": "StructuredDocumentation",
              "src": "7681:131:10",
              "text": " @dev returns the number of liquidity pools in the registry\n @return number of liquidity pools"
            },
            "functionSelector": "7a5f0ffd",
            "id": 10585,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getLiquidityPoolCount",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 10572,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "7863:8:10"
            },
            "parameters": {
              "id": 10571,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7848:2:10"
            },
            "returnParameters": {
              "id": 10575,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10574,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10585,
                  "src": "7881:7:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10573,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7881:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7880:9:10"
            },
            "scope": 11667,
            "src": "7818:180:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              13428
            ],
            "body": {
              "id": 10601,
              "nodeType": "Block",
              "src": "8216:104:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 10595,
                                "name": "CONVERTER_REGISTRY_DATA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21548,
                                "src": "8267:23:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 10594,
                              "name": "addressOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21718,
                              "src": "8257:9:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                                "typeString": "function (bytes32) view returns (address)"
                              }
                            },
                            "id": 10596,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8257:34:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 10593,
                          "name": "IConverterRegistryData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13647,
                          "src": "8234:22:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
                            "typeString": "type(contract IConverterRegistryData)"
                          }
                        },
                        "id": 10597,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8234:58:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                          "typeString": "contract IConverterRegistryData"
                        }
                      },
                      "id": 10598,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getLiquidityPools",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13574,
                      "src": "8234:76:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                        "typeString": "function () view external returns (address[] memory)"
                      }
                    },
                    "id": 10599,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8234:78:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                      "typeString": "address[] memory"
                    }
                  },
                  "functionReturnParameters": 10592,
                  "id": 10600,
                  "nodeType": "Return",
                  "src": "8227:85:10"
                }
              ]
            },
            "documentation": {
              "id": 10586,
              "nodeType": "StructuredDocumentation",
              "src": "8006:127:10",
              "text": " @dev returns the list of liquidity pools in the registry\n @return list of liquidity pools"
            },
            "functionSelector": "7f45c4c3",
            "id": 10602,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getLiquidityPools",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 10588,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "8180:8:10"
            },
            "parameters": {
              "id": 10587,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8165:2:10"
            },
            "returnParameters": {
              "id": 10592,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10591,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10602,
                  "src": "8198:16:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 10589,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "8198:7:10",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 10590,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "8198:9:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8197:18:10"
            },
            "scope": 11667,
            "src": "8139:181:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              13435
            ],
            "body": {
              "id": 10620,
              "nodeType": "Block",
              "src": "8582:109:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10617,
                        "name": "_index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10605,
                        "src": "8676:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 10613,
                                "name": "CONVERTER_REGISTRY_DATA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21548,
                                "src": "8633:23:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 10612,
                              "name": "addressOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21718,
                              "src": "8623:9:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                                "typeString": "function (bytes32) view returns (address)"
                              }
                            },
                            "id": 10614,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8623:34:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 10611,
                          "name": "IConverterRegistryData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13647,
                          "src": "8600:22:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
                            "typeString": "type(contract IConverterRegistryData)"
                          }
                        },
                        "id": 10615,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8600:58:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                          "typeString": "contract IConverterRegistryData"
                        }
                      },
                      "id": 10616,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getLiquidityPool",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13581,
                      "src": "8600:75:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_contract$_IConverterAnchor_$13349_$",
                        "typeString": "function (uint256) view external returns (contract IConverterAnchor)"
                      }
                    },
                    "id": 10618,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8600:83:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "functionReturnParameters": 10610,
                  "id": 10619,
                  "nodeType": "Return",
                  "src": "8593:90:10"
                }
              ]
            },
            "documentation": {
              "id": 10603,
              "nodeType": "StructuredDocumentation",
              "src": "8328:158:10",
              "text": " @dev returns the liquidity pool at a given index\n @param _index index\n @return liquidity pool at the given index"
            },
            "functionSelector": "a74498aa",
            "id": 10621,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getLiquidityPool",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 10607,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "8546:8:10"
            },
            "parameters": {
              "id": 10606,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10605,
                  "mutability": "mutable",
                  "name": "_index",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10621,
                  "src": "8518:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10604,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8518:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8517:16:10"
            },
            "returnParameters": {
              "id": 10610,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10609,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10621,
                  "src": "8564:16:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                    "typeString": "contract IConverterAnchor"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10608,
                    "name": "IConverterAnchor",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13349,
                    "src": "8564:16:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8563:18:10"
            },
            "scope": 11667,
            "src": "8492:199:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              13442
            ],
            "body": {
              "id": 10639,
              "nodeType": "Block",
              "src": "8976:108:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10636,
                        "name": "_value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10624,
                        "src": "9069:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 10632,
                                "name": "CONVERTER_REGISTRY_DATA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21548,
                                "src": "9027:23:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 10631,
                              "name": "addressOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21718,
                              "src": "9017:9:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                                "typeString": "function (bytes32) view returns (address)"
                              }
                            },
                            "id": 10633,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9017:34:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 10630,
                          "name": "IConverterRegistryData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13647,
                          "src": "8994:22:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
                            "typeString": "type(contract IConverterRegistryData)"
                          }
                        },
                        "id": 10634,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8994:58:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                          "typeString": "contract IConverterRegistryData"
                        }
                      },
                      "id": 10635,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "isLiquidityPool",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13588,
                      "src": "8994:74:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$",
                        "typeString": "function (address) view external returns (bool)"
                      }
                    },
                    "id": 10637,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8994:82:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 10629,
                  "id": 10638,
                  "nodeType": "Return",
                  "src": "8987:89:10"
                }
              ]
            },
            "documentation": {
              "id": 10622,
              "nodeType": "StructuredDocumentation",
              "src": "8699:194:10",
              "text": " @dev checks whether or not a given value is a liquidity pool\n @param _value value\n @return true if the given value is a liquidity pool, false if not"
            },
            "functionSelector": "e85455d7",
            "id": 10640,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isLiquidityPool",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 10626,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "8952:8:10"
            },
            "parameters": {
              "id": 10625,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10624,
                  "mutability": "mutable",
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10640,
                  "src": "8924:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10623,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8924:7:10",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8923:16:10"
            },
            "returnParameters": {
              "id": 10629,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10628,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10640,
                  "src": "8970:4:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 10627,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "8970:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8969:6:10"
            },
            "scope": 11667,
            "src": "8899:185:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              13447
            ],
            "body": {
              "id": 10655,
              "nodeType": "Block",
              "src": "9310:111:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 10649,
                                "name": "CONVERTER_REGISTRY_DATA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21548,
                                "src": "9361:23:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 10648,
                              "name": "addressOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21718,
                              "src": "9351:9:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                                "typeString": "function (bytes32) view returns (address)"
                              }
                            },
                            "id": 10650,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9351:34:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 10647,
                          "name": "IConverterRegistryData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13647,
                          "src": "9328:22:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
                            "typeString": "type(contract IConverterRegistryData)"
                          }
                        },
                        "id": 10651,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9328:58:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                          "typeString": "contract IConverterRegistryData"
                        }
                      },
                      "id": 10652,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getConvertibleTokenCount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13593,
                      "src": "9328:83:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                        "typeString": "function () view external returns (uint256)"
                      }
                    },
                    "id": 10653,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9328:85:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 10646,
                  "id": 10654,
                  "nodeType": "Return",
                  "src": "9321:92:10"
                }
              ]
            },
            "documentation": {
              "id": 10641,
              "nodeType": "StructuredDocumentation",
              "src": "9092:137:10",
              "text": " @dev returns the number of convertible tokens in the registry\n @return number of convertible tokens"
            },
            "functionSelector": "69be4784",
            "id": 10656,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getConvertibleTokenCount",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 10643,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "9283:8:10"
            },
            "parameters": {
              "id": 10642,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9268:2:10"
            },
            "returnParameters": {
              "id": 10646,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10645,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10656,
                  "src": "9301:7:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10644,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9301:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9300:9:10"
            },
            "scope": 11667,
            "src": "9235:186:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              13453
            ],
            "body": {
              "id": 10672,
              "nodeType": "Block",
              "src": "9648:107:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 10666,
                                "name": "CONVERTER_REGISTRY_DATA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21548,
                                "src": "9699:23:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 10665,
                              "name": "addressOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21718,
                              "src": "9689:9:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                                "typeString": "function (bytes32) view returns (address)"
                              }
                            },
                            "id": 10667,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9689:34:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 10664,
                          "name": "IConverterRegistryData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13647,
                          "src": "9666:22:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
                            "typeString": "type(contract IConverterRegistryData)"
                          }
                        },
                        "id": 10668,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9666:58:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                          "typeString": "contract IConverterRegistryData"
                        }
                      },
                      "id": 10669,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getConvertibleTokens",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13599,
                      "src": "9666:79:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                        "typeString": "function () view external returns (address[] memory)"
                      }
                    },
                    "id": 10670,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9666:81:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                      "typeString": "address[] memory"
                    }
                  },
                  "functionReturnParameters": 10663,
                  "id": 10671,
                  "nodeType": "Return",
                  "src": "9659:88:10"
                }
              ]
            },
            "documentation": {
              "id": 10657,
              "nodeType": "StructuredDocumentation",
              "src": "9429:133:10",
              "text": " @dev returns the list of convertible tokens in the registry\n @return list of convertible tokens"
            },
            "functionSelector": "5f1b50fe",
            "id": 10673,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getConvertibleTokens",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 10659,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "9612:8:10"
            },
            "parameters": {
              "id": 10658,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9597:2:10"
            },
            "returnParameters": {
              "id": 10663,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10662,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10673,
                  "src": "9630:16:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 10660,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "9630:7:10",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 10661,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "9630:9:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9629:18:10"
            },
            "scope": 11667,
            "src": "9568:187:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              13460
            ],
            "body": {
              "id": 10691,
              "nodeType": "Block",
              "src": "10021:112:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10688,
                        "name": "_index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10676,
                        "src": "10118:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 10684,
                                "name": "CONVERTER_REGISTRY_DATA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21548,
                                "src": "10072:23:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 10683,
                              "name": "addressOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21718,
                              "src": "10062:9:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                                "typeString": "function (bytes32) view returns (address)"
                              }
                            },
                            "id": 10685,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10062:34:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 10682,
                          "name": "IConverterRegistryData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13647,
                          "src": "10039:22:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
                            "typeString": "type(contract IConverterRegistryData)"
                          }
                        },
                        "id": 10686,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10039:58:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                          "typeString": "contract IConverterRegistryData"
                        }
                      },
                      "id": 10687,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getConvertibleToken",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13606,
                      "src": "10039:78:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_contract$_IERC20Token_$21127_$",
                        "typeString": "function (uint256) view external returns (contract IERC20Token)"
                      }
                    },
                    "id": 10689,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10039:86:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                      "typeString": "contract IERC20Token"
                    }
                  },
                  "functionReturnParameters": 10681,
                  "id": 10690,
                  "nodeType": "Return",
                  "src": "10032:93:10"
                }
              ]
            },
            "documentation": {
              "id": 10674,
              "nodeType": "StructuredDocumentation",
              "src": "9763:164:10",
              "text": " @dev returns the convertible token at a given index\n @param _index index\n @return convertible token at the given index"
            },
            "functionSelector": "865cf194",
            "id": 10692,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getConvertibleToken",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 10678,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "9990:8:10"
            },
            "parameters": {
              "id": 10677,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10676,
                  "mutability": "mutable",
                  "name": "_index",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10692,
                  "src": "9962:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10675,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9962:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9961:16:10"
            },
            "returnParameters": {
              "id": 10681,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10680,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10692,
                  "src": "10008:11:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20Token_$21127",
                    "typeString": "contract IERC20Token"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10679,
                    "name": "IERC20Token",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 21127,
                    "src": "10008:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                      "typeString": "contract IERC20Token"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10007:13:10"
            },
            "scope": 11667,
            "src": "9933:200:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              13467
            ],
            "body": {
              "id": 10710,
              "nodeType": "Block",
              "src": "10427:111:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10707,
                        "name": "_value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10695,
                        "src": "10523:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 10703,
                                "name": "CONVERTER_REGISTRY_DATA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21548,
                                "src": "10478:23:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 10702,
                              "name": "addressOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21718,
                              "src": "10468:9:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                                "typeString": "function (bytes32) view returns (address)"
                              }
                            },
                            "id": 10704,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10468:34:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 10701,
                          "name": "IConverterRegistryData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13647,
                          "src": "10445:22:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
                            "typeString": "type(contract IConverterRegistryData)"
                          }
                        },
                        "id": 10705,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10445:58:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                          "typeString": "contract IConverterRegistryData"
                        }
                      },
                      "id": 10706,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "isConvertibleToken",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13613,
                      "src": "10445:77:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$",
                        "typeString": "function (address) view external returns (bool)"
                      }
                    },
                    "id": 10708,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10445:85:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 10700,
                  "id": 10709,
                  "nodeType": "Return",
                  "src": "10438:92:10"
                }
              ]
            },
            "documentation": {
              "id": 10693,
              "nodeType": "StructuredDocumentation",
              "src": "10141:200:10",
              "text": " @dev checks whether or not a given value is a convertible token\n @param _value value\n @return true if the given value is a convertible token, false if not"
            },
            "functionSelector": "3ab8857c",
            "id": 10711,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isConvertibleToken",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 10697,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "10403:8:10"
            },
            "parameters": {
              "id": 10696,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10695,
                  "mutability": "mutable",
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10711,
                  "src": "10375:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10694,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10375:7:10",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10374:16:10"
            },
            "returnParameters": {
              "id": 10700,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10699,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10711,
                  "src": "10421:4:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 10698,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "10421:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10420:6:10"
            },
            "scope": 11667,
            "src": "10347:191:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              13474
            ],
            "body": {
              "id": 10729,
              "nodeType": "Block",
              "src": "10909:138:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10726,
                        "name": "_convertibleToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10714,
                        "src": "11021:17:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 10722,
                                "name": "CONVERTER_REGISTRY_DATA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21548,
                                "src": "10960:23:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 10721,
                              "name": "addressOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21718,
                              "src": "10950:9:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                                "typeString": "function (bytes32) view returns (address)"
                              }
                            },
                            "id": 10723,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10950:34:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 10720,
                          "name": "IConverterRegistryData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13647,
                          "src": "10927:22:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
                            "typeString": "type(contract IConverterRegistryData)"
                          }
                        },
                        "id": 10724,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10927:58:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                          "typeString": "contract IConverterRegistryData"
                        }
                      },
                      "id": 10725,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getConvertibleTokenSmartTokenCount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13620,
                      "src": "10927:93:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_contract$_IERC20Token_$21127_$returns$_t_uint256_$",
                        "typeString": "function (contract IERC20Token) view external returns (uint256)"
                      }
                    },
                    "id": 10727,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10927:112:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 10719,
                  "id": 10728,
                  "nodeType": "Return",
                  "src": "10920:119:10"
                }
              ]
            },
            "documentation": {
              "id": 10712,
              "nodeType": "StructuredDocumentation",
              "src": "10546:247:10",
              "text": " @dev returns the number of converter anchors associated with a given convertible token\n @param _convertibleToken convertible token\n @return number of anchors associated with the given convertible token"
            },
            "functionSelector": "49c5f32b",
            "id": 10730,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getConvertibleTokenAnchorCount",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 10716,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "10882:8:10"
            },
            "parameters": {
              "id": 10715,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10714,
                  "mutability": "mutable",
                  "name": "_convertibleToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10730,
                  "src": "10839:29:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20Token_$21127",
                    "typeString": "contract IERC20Token"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10713,
                    "name": "IERC20Token",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 21127,
                    "src": "10839:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                      "typeString": "contract IERC20Token"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10838:31:10"
            },
            "returnParameters": {
              "id": 10719,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10718,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10730,
                  "src": "10900:7:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10717,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10900:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10899:9:10"
            },
            "scope": 11667,
            "src": "10799:248:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              13482
            ],
            "body": {
              "id": 10749,
              "nodeType": "Block",
              "src": "11419:134:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10746,
                        "name": "_convertibleToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10733,
                        "src": "11527:17:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 10742,
                                "name": "CONVERTER_REGISTRY_DATA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21548,
                                "src": "11470:23:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 10741,
                              "name": "addressOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21718,
                              "src": "11460:9:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                                "typeString": "function (bytes32) view returns (address)"
                              }
                            },
                            "id": 10743,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11460:34:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 10740,
                          "name": "IConverterRegistryData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13647,
                          "src": "11437:22:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
                            "typeString": "type(contract IConverterRegistryData)"
                          }
                        },
                        "id": 10744,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11437:58:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                          "typeString": "contract IConverterRegistryData"
                        }
                      },
                      "id": 10745,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getConvertibleTokenSmartTokens",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13628,
                      "src": "11437:89:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_contract$_IERC20Token_$21127_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                        "typeString": "function (contract IERC20Token) view external returns (address[] memory)"
                      }
                    },
                    "id": 10747,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11437:108:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                      "typeString": "address[] memory"
                    }
                  },
                  "functionReturnParameters": 10739,
                  "id": 10748,
                  "nodeType": "Return",
                  "src": "11430:115:10"
                }
              ]
            },
            "documentation": {
              "id": 10731,
              "nodeType": "StructuredDocumentation",
              "src": "11055:243:10",
              "text": " @dev returns the list of aoncerter anchors associated with a given convertible token\n @param _convertibleToken convertible token\n @return list of anchors associated with the given convertible token"
            },
            "functionSelector": "11839064",
            "id": 10750,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getConvertibleTokenAnchors",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 10735,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "11383:8:10"
            },
            "parameters": {
              "id": 10734,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10733,
                  "mutability": "mutable",
                  "name": "_convertibleToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10750,
                  "src": "11340:29:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20Token_$21127",
                    "typeString": "contract IERC20Token"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10732,
                    "name": "IERC20Token",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 21127,
                    "src": "11340:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                      "typeString": "contract IERC20Token"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11339:31:10"
            },
            "returnParameters": {
              "id": 10739,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10738,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10750,
                  "src": "11401:16:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 10736,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "11401:7:10",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 10737,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "11401:9:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11400:18:10"
            },
            "scope": 11667,
            "src": "11304:249:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              13491
            ],
            "body": {
              "id": 10771,
              "nodeType": "Block",
              "src": "11935:141:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10767,
                        "name": "_convertibleToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10753,
                        "src": "12042:17:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10768,
                        "name": "_index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10755,
                        "src": "12061:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 10763,
                                "name": "CONVERTER_REGISTRY_DATA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21548,
                                "src": "11986:23:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 10762,
                              "name": "addressOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21718,
                              "src": "11976:9:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                                "typeString": "function (bytes32) view returns (address)"
                              }
                            },
                            "id": 10764,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11976:34:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 10761,
                          "name": "IConverterRegistryData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13647,
                          "src": "11953:22:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
                            "typeString": "type(contract IConverterRegistryData)"
                          }
                        },
                        "id": 10765,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11953:58:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                          "typeString": "contract IConverterRegistryData"
                        }
                      },
                      "id": 10766,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getConvertibleTokenSmartToken",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13637,
                      "src": "11953:88:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_contract$_IERC20Token_$21127_$_t_uint256_$returns$_t_contract$_IConverterAnchor_$13349_$",
                        "typeString": "function (contract IERC20Token,uint256) view external returns (contract IConverterAnchor)"
                      }
                    },
                    "id": 10769,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11953:115:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "functionReturnParameters": 10760,
                  "id": 10770,
                  "nodeType": "Return",
                  "src": "11946:122:10"
                }
              ]
            },
            "documentation": {
              "id": 10751,
              "nodeType": "StructuredDocumentation",
              "src": "11561:238:10",
              "text": " @dev returns the converter anchor associated with a given convertible token at a given index\n @param _index index\n @return anchor associated with the given convertible token at the given index"
            },
            "functionSelector": "603f51e4",
            "id": 10772,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getConvertibleTokenAnchor",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 10757,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "11899:8:10"
            },
            "parameters": {
              "id": 10756,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10753,
                  "mutability": "mutable",
                  "name": "_convertibleToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10772,
                  "src": "11840:29:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20Token_$21127",
                    "typeString": "contract IERC20Token"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10752,
                    "name": "IERC20Token",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 21127,
                    "src": "11840:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                      "typeString": "contract IERC20Token"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10755,
                  "mutability": "mutable",
                  "name": "_index",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10772,
                  "src": "11871:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10754,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11871:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11839:47:10"
            },
            "returnParameters": {
              "id": 10760,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10759,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10772,
                  "src": "11917:16:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                    "typeString": "contract IConverterAnchor"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10758,
                    "name": "IConverterAnchor",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13349,
                    "src": "11917:16:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11916:18:10"
            },
            "scope": 11667,
            "src": "11805:271:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              13500
            ],
            "body": {
              "id": 10793,
              "nodeType": "Block",
              "src": "12508:140:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10789,
                        "name": "_convertibleToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10775,
                        "src": "12614:17:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10790,
                        "name": "_value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10777,
                        "src": "12633:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 10785,
                                "name": "CONVERTER_REGISTRY_DATA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21548,
                                "src": "12559:23:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 10784,
                              "name": "addressOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21718,
                              "src": "12549:9:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                                "typeString": "function (bytes32) view returns (address)"
                              }
                            },
                            "id": 10786,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12549:34:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 10783,
                          "name": "IConverterRegistryData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13647,
                          "src": "12526:22:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
                            "typeString": "type(contract IConverterRegistryData)"
                          }
                        },
                        "id": 10787,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12526:58:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                          "typeString": "contract IConverterRegistryData"
                        }
                      },
                      "id": 10788,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "isConvertibleTokenSmartToken",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13646,
                      "src": "12526:87:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_contract$_IERC20Token_$21127_$_t_address_$returns$_t_bool_$",
                        "typeString": "function (contract IERC20Token,address) view external returns (bool)"
                      }
                    },
                    "id": 10791,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12526:114:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 10782,
                  "id": 10792,
                  "nodeType": "Return",
                  "src": "12519:121:10"
                }
              ]
            },
            "documentation": {
              "id": 10773,
              "nodeType": "StructuredDocumentation",
              "src": "12084:301:10",
              "text": " @dev checks whether or not a given value is a converter anchor of a given convertible token\n @param _convertibleToken convertible token\n @param _value value\n @return true if the given value is an anchor of the given convertible token, false if not"
            },
            "functionSelector": "b4c4197a",
            "id": 10794,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isConvertibleTokenAnchor",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 10779,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "12484:8:10"
            },
            "parameters": {
              "id": 10778,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10775,
                  "mutability": "mutable",
                  "name": "_convertibleToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10794,
                  "src": "12425:29:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20Token_$21127",
                    "typeString": "contract IERC20Token"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10774,
                    "name": "IERC20Token",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 21127,
                    "src": "12425:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                      "typeString": "contract IERC20Token"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10777,
                  "mutability": "mutable",
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10794,
                  "src": "12456:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10776,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "12456:7:10",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12424:47:10"
            },
            "returnParameters": {
              "id": 10782,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10781,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10794,
                  "src": "12502:4:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 10780,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "12502:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12501:6:10"
            },
            "scope": 11667,
            "src": "12391:257:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10846,
              "nodeType": "Block",
              "src": "13040:261:10",
              "statements": [
                {
                  "assignments": [
                    10807
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 10807,
                      "mutability": "mutable",
                      "name": "converters",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10846,
                      "src": "13051:30:10",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_contract$_IConverter_$13340_$dyn_memory_ptr",
                        "typeString": "contract IConverter[]"
                      },
                      "typeName": {
                        "baseType": {
                          "contractScope": null,
                          "id": 10805,
                          "name": "IConverter",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 13340,
                          "src": "13051:10:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IConverter_$13340",
                            "typeString": "contract IConverter"
                          }
                        },
                        "id": 10806,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "13051:12:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_contract$_IConverter_$13340_$dyn_storage_ptr",
                          "typeString": "contract IConverter[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 10814,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 10811,
                          "name": "_anchors",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10798,
                          "src": "13101:8:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "id": 10812,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "13101:15:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 10810,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "13084:16:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_IConverter_$13340_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (contract IConverter[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "contractScope": null,
                          "id": 10808,
                          "name": "IConverter",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 13340,
                          "src": "13088:10:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IConverter_$13340",
                            "typeString": "contract IConverter"
                          }
                        },
                        "id": 10809,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "13088:12:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_contract$_IConverter_$13340_$dyn_storage_ptr",
                          "typeString": "contract IConverter[]"
                        }
                      }
                    },
                    "id": 10813,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13084:33:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_contract$_IConverter_$13340_$dyn_memory_ptr",
                      "typeString": "contract IConverter[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13051:66:10"
                },
                {
                  "body": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 10841,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 10826,
                          "name": "converters",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10807,
                          "src": "13189:10:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_contract$_IConverter_$13340_$dyn_memory_ptr",
                            "typeString": "contract IConverter[] memory"
                          }
                        },
                        "id": 10828,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 10827,
                          "name": "i",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10816,
                          "src": "13200:1:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": true,
                        "nodeType": "IndexAccess",
                        "src": "13189:13:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 10833,
                                          "name": "_anchors",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10798,
                                          "src": "13241:8:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                            "typeString": "address[] memory"
                                          }
                                        },
                                        "id": 10835,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 10834,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10816,
                                          "src": "13250:1:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "13241:11:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 10832,
                                      "name": "IConverterAnchor",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13349,
                                      "src": "13224:16:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IConverterAnchor_$13349_$",
                                        "typeString": "type(contract IConverterAnchor)"
                                      }
                                    },
                                    "id": 10836,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "13224:29:10",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                                      "typeString": "contract IConverterAnchor"
                                    }
                                  },
                                  "id": 10837,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "owner",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22838,
                                  "src": "13224:35:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                    "typeString": "function () view external returns (address)"
                                  }
                                },
                                "id": 10838,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13224:37:10",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 10831,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "13216:8:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_payable_$",
                                "typeString": "type(address payable)"
                              },
                              "typeName": {
                                "id": 10830,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "13216:8:10",
                                "stateMutability": "payable",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 10839,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13216:46:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          ],
                          "id": 10829,
                          "name": "IConverter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13340,
                          "src": "13205:10:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IConverter_$13340_$",
                            "typeString": "type(contract IConverter)"
                          }
                        },
                        "id": 10840,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "13205:58:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      "src": "13189:74:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IConverter_$13340",
                        "typeString": "contract IConverter"
                      }
                    },
                    "id": 10842,
                    "nodeType": "ExpressionStatement",
                    "src": "13189:74:10"
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 10822,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 10819,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10816,
                      "src": "13150:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 10820,
                        "name": "_anchors",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10798,
                        "src": "13154:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      "id": 10821,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "13154:15:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "13150:19:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 10843,
                  "initializationExpression": {
                    "assignments": [
                      10816
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 10816,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10843,
                        "src": "13135:9:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10815,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13135:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 10818,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 10817,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "13147:1:10",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "13135:13:10"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 10824,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "13171:3:10",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 10823,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10816,
                        "src": "13171:1:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 10825,
                    "nodeType": "ExpressionStatement",
                    "src": "13171:3:10"
                  },
                  "nodeType": "ForStatement",
                  "src": "13130:133:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10844,
                    "name": "converters",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 10807,
                    "src": "13283:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_contract$_IConverter_$13340_$dyn_memory_ptr",
                      "typeString": "contract IConverter[] memory"
                    }
                  },
                  "functionReturnParameters": 10803,
                  "id": 10845,
                  "nodeType": "Return",
                  "src": "13276:17:10"
                }
              ]
            },
            "documentation": {
              "id": 10795,
              "nodeType": "StructuredDocumentation",
              "src": "12656:277:10",
              "text": " @dev returns a list of converters for a given list of anchors\n this is a utility function that can be used to reduce the number of calls to the contract\n @param _anchors list of converter anchors\n @return list of converters"
            },
            "functionSelector": "610c0b05",
            "id": 10847,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getConvertersByAnchors",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 10799,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10798,
                  "mutability": "mutable",
                  "name": "_anchors",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10847,
                  "src": "12971:25:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 10796,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "12971:7:10",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 10797,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "12971:9:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12970:27:10"
            },
            "returnParameters": {
              "id": 10803,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10802,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10847,
                  "src": "13019:19:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_contract$_IConverter_$13340_$dyn_memory_ptr",
                    "typeString": "contract IConverter[]"
                  },
                  "typeName": {
                    "baseType": {
                      "contractScope": null,
                      "id": 10800,
                      "name": "IConverter",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 13340,
                      "src": "13019:10:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IConverter_$13340",
                        "typeString": "contract IConverter"
                      }
                    },
                    "id": 10801,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "13019:12:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_contract$_IConverter_$13340_$dyn_storage_ptr",
                      "typeString": "contract IConverter[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13018:21:10"
            },
            "scope": 11667,
            "src": "12939:362:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10866,
              "nodeType": "Block",
              "src": "13579:123:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 10864,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 10855,
                              "name": "_converter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10850,
                              "src": "13645:10:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IConverter_$13340",
                                "typeString": "contract IConverter"
                              }
                            },
                            "id": 10856,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "token",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 13297,
                            "src": "13645:16:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IConverterAnchor_$13349_$",
                              "typeString": "function () view external returns (contract IConverterAnchor)"
                            }
                          },
                          "id": 10857,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13645:18:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                            "typeString": "contract IConverterAnchor"
                          }
                        },
                        "id": 10858,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "owner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22838,
                        "src": "13645:24:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                          "typeString": "function () view external returns (address)"
                        }
                      },
                      "id": 10859,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "13645:26:10",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 10862,
                          "name": "_converter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10850,
                          "src": "13683:10:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IConverter_$13340",
                            "typeString": "contract IConverter"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_IConverter_$13340",
                            "typeString": "contract IConverter"
                          }
                        ],
                        "id": 10861,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "13675:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": {
                          "id": 10860,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13675:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": null,
                            "typeString": null
                          }
                        }
                      },
                      "id": 10863,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "13675:19:10",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "13645:49:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 10854,
                  "id": 10865,
                  "nodeType": "Return",
                  "src": "13638:56:10"
                }
              ]
            },
            "documentation": {
              "id": 10848,
              "nodeType": "StructuredDocumentation",
              "src": "13309:188:10",
              "text": " @dev checks whether or not a given converter is valid\n @param _converter converter\n @return true if the given converter is valid, false if not"
            },
            "functionSelector": "954254f5",
            "id": 10867,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isConverterValid",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 10851,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10850,
                  "mutability": "mutable",
                  "name": "_converter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10867,
                  "src": "13529:21:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverter_$13340",
                    "typeString": "contract IConverter"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10849,
                    "name": "IConverter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13340,
                    "src": "13529:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverter_$13340",
                      "typeString": "contract IConverter"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13528:23:10"
            },
            "returnParameters": {
              "id": 10854,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10853,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10867,
                  "src": "13573:4:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 10852,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "13573:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13572:6:10"
            },
            "scope": 11667,
            "src": "13503:199:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10949,
              "nodeType": "Block",
              "src": "14068:799:10",
              "statements": [
                {
                  "assignments": [
                    10876
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 10876,
                      "mutability": "mutable",
                      "name": "reserveTokenCount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10949,
                      "src": "14079:25:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 10875,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "14079:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 10880,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 10877,
                        "name": "_converter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10870,
                        "src": "14107:10:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      "id": 10878,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "connectorTokenCount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13339,
                      "src": "14107:30:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint16_$",
                        "typeString": "function () view external returns (uint16)"
                      }
                    },
                    "id": 10879,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14107:32:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14079:60:10"
                },
                {
                  "assignments": [
                    10884
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 10884,
                      "mutability": "mutable",
                      "name": "reserveTokens",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10949,
                      "src": "14150:34:10",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
                        "typeString": "contract IERC20Token[]"
                      },
                      "typeName": {
                        "baseType": {
                          "contractScope": null,
                          "id": 10882,
                          "name": "IERC20Token",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 21127,
                          "src": "14150:11:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20Token_$21127",
                            "typeString": "contract IERC20Token"
                          }
                        },
                        "id": 10883,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "14150:13:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_storage_ptr",
                          "typeString": "contract IERC20Token[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 10890,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10888,
                        "name": "reserveTokenCount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10876,
                        "src": "14205:17:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 10887,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "14187:17:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (contract IERC20Token[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "contractScope": null,
                          "id": 10885,
                          "name": "IERC20Token",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 21127,
                          "src": "14191:11:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20Token_$21127",
                            "typeString": "contract IERC20Token"
                          }
                        },
                        "id": 10886,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "14191:13:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_storage_ptr",
                          "typeString": "contract IERC20Token[]"
                        }
                      }
                    },
                    "id": 10889,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14187:36:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
                      "typeString": "contract IERC20Token[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14150:73:10"
                },
                {
                  "assignments": [
                    10895
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 10895,
                      "mutability": "mutable",
                      "name": "reserveWeights",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10949,
                      "src": "14234:30:10",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
                        "typeString": "uint32[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 10893,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "14234:6:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "id": 10894,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "14234:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint32_$dyn_storage_ptr",
                          "typeString": "uint32[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 10901,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10899,
                        "name": "reserveTokenCount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10876,
                        "src": "14280:17:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 10898,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "14267:12:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint32_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (uint32[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 10896,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "14271:6:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "id": 10897,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "14271:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint32_$dyn_storage_ptr",
                          "typeString": "uint32[]"
                        }
                      }
                    },
                    "id": 10900,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14267:31:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
                      "typeString": "uint32[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14234:64:10"
                },
                {
                  "body": {
                    "id": 10934,
                    "nodeType": "Block",
                    "src": "14418:206:10",
                    "statements": [
                      {
                        "assignments": [
                          10913
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10913,
                            "mutability": "mutable",
                            "name": "reserveToken",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 10934,
                            "src": "14433:24:10",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20Token_$21127",
                              "typeString": "contract IERC20Token"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 10912,
                              "name": "IERC20Token",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 21127,
                              "src": "14433:11:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                "typeString": "contract IERC20Token"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 10918,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10916,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10903,
                              "src": "14487:1:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 10914,
                              "name": "_converter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10870,
                              "src": "14460:10:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IConverter_$13340",
                                "typeString": "contract IConverter"
                              }
                            },
                            "id": 10915,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "connectorTokens",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 13334,
                            "src": "14460:26:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_contract$_IERC20Token_$21127_$",
                              "typeString": "function (uint256) view external returns (contract IERC20Token)"
                            }
                          },
                          "id": 10917,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14460:29:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20Token_$21127",
                            "typeString": "contract IERC20Token"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14433:56:10"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10923,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 10919,
                              "name": "reserveTokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10884,
                              "src": "14504:13:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
                                "typeString": "contract IERC20Token[] memory"
                              }
                            },
                            "id": 10921,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 10920,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10903,
                              "src": "14518:1:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "14504:16:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20Token_$21127",
                              "typeString": "contract IERC20Token"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 10922,
                            "name": "reserveToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10913,
                            "src": "14523:12:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20Token_$21127",
                              "typeString": "contract IERC20Token"
                            }
                          },
                          "src": "14504:31:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20Token_$21127",
                            "typeString": "contract IERC20Token"
                          }
                        },
                        "id": 10924,
                        "nodeType": "ExpressionStatement",
                        "src": "14504:31:10"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10932,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 10925,
                              "name": "reserveWeights",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10895,
                              "src": "14550:14:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
                                "typeString": "uint32[] memory"
                              }
                            },
                            "id": 10927,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 10926,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10903,
                              "src": "14565:1:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "14550:17:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 10929,
                                "name": "_converter",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10870,
                                "src": "14587:10:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IConverter_$13340",
                                  "typeString": "contract IConverter"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 10930,
                                "name": "reserveToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10913,
                                "src": "14599:12:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                  "typeString": "contract IERC20Token"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IConverter_$13340",
                                  "typeString": "contract IConverter"
                                },
                                {
                                  "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                  "typeString": "contract IERC20Token"
                                }
                              ],
                              "id": 10928,
                              "name": "getReserveWeight",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11465,
                              "src": "14570:16:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_contract$_IConverter_$13340_$_t_contract$_IERC20Token_$21127_$returns$_t_uint32_$",
                                "typeString": "function (contract IConverter,contract IERC20Token) view returns (uint32)"
                              }
                            },
                            "id": 10931,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14570:42:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "src": "14550:62:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "id": 10933,
                        "nodeType": "ExpressionStatement",
                        "src": "14550:62:10"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 10908,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 10906,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10903,
                      "src": "14390:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 10907,
                      "name": "reserveTokenCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10876,
                      "src": "14394:17:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "14390:21:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 10935,
                  "initializationExpression": {
                    "assignments": [
                      10903
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 10903,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10935,
                        "src": "14375:9:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10902,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14375:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 10905,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 10904,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "14387:1:10",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "14375:13:10"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 10910,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "14413:3:10",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 10909,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10903,
                        "src": "14413:1:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 10911,
                    "nodeType": "ExpressionStatement",
                    "src": "14413:3:10"
                  },
                  "nodeType": "ForStatement",
                  "src": "14370:254:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    },
                    "id": 10947,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10938,
                              "name": "_converter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10870,
                              "src": "14774:10:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IConverter_$13340",
                                "typeString": "contract IConverter"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10939,
                              "name": "reserveTokenCount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10876,
                              "src": "14786:17:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IConverter_$13340",
                                "typeString": "contract IConverter"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 10937,
                            "name": "getConverterType",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11520,
                            "src": "14757:16:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_contract$_IConverter_$13340_$_t_uint256_$returns$_t_uint16_$",
                              "typeString": "function (contract IConverter,uint256) view returns (uint16)"
                            }
                          },
                          "id": 10940,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14757:47:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 10941,
                          "name": "reserveTokens",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10884,
                          "src": "14806:13:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
                            "typeString": "contract IERC20Token[] memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 10942,
                          "name": "reserveWeights",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10895,
                          "src": "14821:14:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
                            "typeString": "uint32[] memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          },
                          {
                            "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
                            "typeString": "contract IERC20Token[] memory"
                          },
                          {
                            "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
                            "typeString": "uint32[] memory"
                          }
                        ],
                        "id": 10936,
                        "name": "getLiquidityPoolByConfig",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11031,
                        "src": "14732:24:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_uint16_$_t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr_$_t_array$_t_uint32_$dyn_memory_ptr_$returns$_t_contract$_IConverterAnchor_$13349_$",
                          "typeString": "function (uint16,contract IERC20Token[] memory,uint32[] memory) view returns (contract IConverterAnchor)"
                        }
                      },
                      "id": 10943,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "14732:104:10",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                        "typeString": "contract IConverterAnchor"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 10945,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "14857:1:10",
                          "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": 10944,
                        "name": "IConverterAnchor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13349,
                        "src": "14840:16:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_IConverterAnchor_$13349_$",
                          "typeString": "type(contract IConverterAnchor)"
                        }
                      },
                      "id": 10946,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "14840:19:10",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                        "typeString": "contract IConverterAnchor"
                      }
                    },
                    "src": "14732:127:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 10874,
                  "id": 10948,
                  "nodeType": "Return",
                  "src": "14725:134:10"
                }
              ]
            },
            "documentation": {
              "id": 10868,
              "nodeType": "StructuredDocumentation",
              "src": "13710:260:10",
              "text": " @dev checks if a liquidity pool with given configuration is already registered\n @param _converter converter with specific configuration\n @return if a liquidity pool with the same configuration is already registered"
            },
            "functionSelector": "8f1d0e1a",
            "id": 10950,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isSimilarLiquidityPoolRegistered",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 10871,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10870,
                  "mutability": "mutable",
                  "name": "_converter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10950,
                  "src": "14018:21:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverter_$13340",
                    "typeString": "contract IConverter"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10869,
                    "name": "IConverter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13340,
                    "src": "14018:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverter_$13340",
                      "typeString": "contract IConverter"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14017:23:10"
            },
            "returnParameters": {
              "id": 10874,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10873,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10950,
                  "src": "14062:4:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 10872,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "14062:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14061:6:10"
            },
            "scope": 11667,
            "src": "13976:891:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 11030,
              "nodeType": "Block",
              "src": "15390:869:10",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 10973,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 10968,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 10964,
                          "name": "_reserveTokens",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10956,
                          "src": "15483:14:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
                            "typeString": "contract IERC20Token[] memory"
                          }
                        },
                        "id": 10965,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "15483:21:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 10966,
                          "name": "_reserveWeights",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10959,
                          "src": "15508:15:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
                            "typeString": "uint32[] memory"
                          }
                        },
                        "id": 10967,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "15508:22:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "15483:47:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 10972,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 10969,
                          "name": "_reserveTokens",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10956,
                          "src": "15534:14:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
                            "typeString": "contract IERC20Token[] memory"
                          }
                        },
                        "id": 10970,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "15534:21:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 10971,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "15558:1:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "src": "15534:25:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "15483:76:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 11025,
                  "nodeType": "IfStatement",
                  "src": "15479:734:10",
                  "trueBody": {
                    "id": 11024,
                    "nodeType": "Block",
                    "src": "15561:652:10",
                    "statements": [
                      {
                        "assignments": [
                          10978
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10978,
                            "mutability": "mutable",
                            "name": "convertibleTokenAnchors",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 11024,
                            "src": "15651:40:10",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 10976,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "15651:7:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 10977,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "15651:9:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 10982,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10980,
                              "name": "_reserveTokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10956,
                              "src": "15723:14:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
                                "typeString": "contract IERC20Token[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
                                "typeString": "contract IERC20Token[] memory"
                              }
                            ],
                            "id": 10979,
                            "name": "getLeastFrequentTokenAnchors",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11380,
                            "src": "15694:28:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                              "typeString": "function (contract IERC20Token[] memory) view returns (address[] memory)"
                            }
                          },
                          "id": 10981,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15694:44:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15651:87:10"
                      },
                      {
                        "body": {
                          "id": 11022,
                          "nodeType": "Block",
                          "src": "15881:321:10",
                          "statements": [
                            {
                              "assignments": [
                                10995
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 10995,
                                  "mutability": "mutable",
                                  "name": "anchor",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 11022,
                                  "src": "15900:23:10",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                                    "typeString": "contract IConverterAnchor"
                                  },
                                  "typeName": {
                                    "contractScope": null,
                                    "id": 10994,
                                    "name": "IConverterAnchor",
                                    "nodeType": "UserDefinedTypeName",
                                    "referencedDeclaration": 13349,
                                    "src": "15900:16:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                                      "typeString": "contract IConverterAnchor"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 11001,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 10997,
                                      "name": "convertibleTokenAnchors",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10978,
                                      "src": "15943:23:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 10999,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 10998,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10984,
                                      "src": "15967:1:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "15943:26:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 10996,
                                  "name": "IConverterAnchor",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13349,
                                  "src": "15926:16:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IConverterAnchor_$13349_$",
                                    "typeString": "type(contract IConverterAnchor)"
                                  }
                                },
                                "id": 11000,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15926:44:10",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                                  "typeString": "contract IConverterAnchor"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "15900:70:10"
                            },
                            {
                              "assignments": [
                                11003
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 11003,
                                  "mutability": "mutable",
                                  "name": "converter",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 11022,
                                  "src": "15989:20:10",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IConverter_$13340",
                                    "typeString": "contract IConverter"
                                  },
                                  "typeName": {
                                    "contractScope": null,
                                    "id": 11002,
                                    "name": "IConverter",
                                    "nodeType": "UserDefinedTypeName",
                                    "referencedDeclaration": 13340,
                                    "src": "15989:10:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IConverter_$13340",
                                      "typeString": "contract IConverter"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 11012,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "arguments": [],
                                        "expression": {
                                          "argumentTypes": [],
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 11007,
                                            "name": "anchor",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 10995,
                                            "src": "16031:6:10",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                                              "typeString": "contract IConverterAnchor"
                                            }
                                          },
                                          "id": 11008,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "owner",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 22838,
                                          "src": "16031:12:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                            "typeString": "function () view external returns (address)"
                                          }
                                        },
                                        "id": 11009,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "16031:14:10",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 11006,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "16023:8:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_payable_$",
                                        "typeString": "type(address payable)"
                                      },
                                      "typeName": {
                                        "id": 11005,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "16023:8:10",
                                        "stateMutability": "payable",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 11010,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "16023:23:10",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  ],
                                  "id": 11004,
                                  "name": "IConverter",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13340,
                                  "src": "16012:10:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IConverter_$13340_$",
                                    "typeString": "type(contract IConverter)"
                                  }
                                },
                                "id": 11011,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "16012:35:10",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IConverter_$13340",
                                  "typeString": "contract IConverter"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "15989:58:10"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 11014,
                                    "name": "converter",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11003,
                                    "src": "16100:9:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IConverter_$13340",
                                      "typeString": "contract IConverter"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 11015,
                                    "name": "_type",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10953,
                                    "src": "16111:5:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 11016,
                                    "name": "_reserveTokens",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10956,
                                    "src": "16118:14:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
                                      "typeString": "contract IERC20Token[] memory"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 11017,
                                    "name": "_reserveWeights",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10959,
                                    "src": "16134:15:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
                                      "typeString": "uint32[] memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_IConverter_$13340",
                                      "typeString": "contract IConverter"
                                    },
                                    {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
                                      "typeString": "contract IERC20Token[] memory"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
                                      "typeString": "uint32[] memory"
                                    }
                                  ],
                                  "id": 11013,
                                  "name": "isConverterReserveConfigEqual",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11446,
                                  "src": "16070:29:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_contract$_IConverter_$13340_$_t_uint16_$_t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr_$_t_array$_t_uint32_$dyn_memory_ptr_$returns$_t_bool_$",
                                    "typeString": "function (contract IConverter,uint16,contract IERC20Token[] memory,uint32[] memory) view returns (bool)"
                                  }
                                },
                                "id": 11018,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "16070:80:10",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 11021,
                              "nodeType": "IfStatement",
                              "src": "16066:120:10",
                              "trueBody": {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 11019,
                                  "name": "anchor",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10995,
                                  "src": "16180:6:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                                    "typeString": "contract IConverterAnchor"
                                  }
                                },
                                "functionReturnParameters": 10963,
                                "id": 11020,
                                "nodeType": "Return",
                                "src": "16173:13:10"
                              }
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 10990,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 10987,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10984,
                            "src": "15840:1:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 10988,
                              "name": "convertibleTokenAnchors",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10978,
                              "src": "15844:23:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 10989,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "15844:30:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "15840:34:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 11023,
                        "initializationExpression": {
                          "assignments": [
                            10984
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 10984,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 11023,
                              "src": "15825:9:10",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 10983,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "15825:7:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 10986,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 10985,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "15837:1:10",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "15825:13:10"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 10992,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "15876:3:10",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 10991,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10984,
                              "src": "15876:1:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 10993,
                          "nodeType": "ExpressionStatement",
                          "src": "15876:3:10"
                        },
                        "nodeType": "ForStatement",
                        "src": "15820:382:10"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 11027,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "16249:1:10",
                        "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": 11026,
                      "name": "IConverterAnchor",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13349,
                      "src": "16232:16:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_IConverterAnchor_$13349_$",
                        "typeString": "type(contract IConverterAnchor)"
                      }
                    },
                    "id": 11028,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16232:19:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "functionReturnParameters": 10963,
                  "id": 11029,
                  "nodeType": "Return",
                  "src": "16225:26:10"
                }
              ]
            },
            "documentation": {
              "id": 10951,
              "nodeType": "StructuredDocumentation",
              "src": "14875:352:10",
              "text": " @dev searches for a liquidity pool with specific configuration\n @param _type            converter type, see ConverterBase contract main doc\n @param _reserveTokens   reserve tokens\n @param _reserveWeights  reserve weights\n @return the liquidity pool, or zero if no such liquidity pool exists"
            },
            "functionSelector": "1d3fccd5",
            "id": 11031,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getLiquidityPoolByConfig",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 10960,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10953,
                  "mutability": "mutable",
                  "name": "_type",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11031,
                  "src": "15267:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 10952,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "15267:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10956,
                  "mutability": "mutable",
                  "name": "_reserveTokens",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11031,
                  "src": "15281:35:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
                    "typeString": "contract IERC20Token[]"
                  },
                  "typeName": {
                    "baseType": {
                      "contractScope": null,
                      "id": 10954,
                      "name": "IERC20Token",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 21127,
                      "src": "15281:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IERC20Token_$21127",
                        "typeString": "contract IERC20Token"
                      }
                    },
                    "id": 10955,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "15281:13:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_storage_ptr",
                      "typeString": "contract IERC20Token[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10959,
                  "mutability": "mutable",
                  "name": "_reserveWeights",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11031,
                  "src": "15318:31:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
                    "typeString": "uint32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 10957,
                      "name": "uint32",
                      "nodeType": "ElementaryTypeName",
                      "src": "15318:6:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      }
                    },
                    "id": 10958,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "15318:8:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint32_$dyn_storage_ptr",
                      "typeString": "uint32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "15266:84:10"
            },
            "returnParameters": {
              "id": 10963,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10962,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11031,
                  "src": "15372:16:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                    "typeString": "contract IConverterAnchor"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10961,
                    "name": "IConverterAnchor",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13349,
                    "src": "15372:16:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "15371:18:10"
            },
            "scope": 11667,
            "src": "15233:1026:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 11053,
              "nodeType": "Block",
              "src": "16489:149:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11042,
                        "name": "_anchor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11036,
                        "src": "16537:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 11039,
                        "name": "_converterRegistryData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11034,
                        "src": "16500:22:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                          "typeString": "contract IConverterRegistryData"
                        }
                      },
                      "id": 11041,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "addSmartToken",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13509,
                      "src": "16500:36:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_contract$_IConverterAnchor_$13349_$returns$__$",
                        "typeString": "function (contract IConverterAnchor) external"
                      }
                    },
                    "id": 11043,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16500:45:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11044,
                  "nodeType": "ExpressionStatement",
                  "src": "16500:45:10"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11046,
                        "name": "_anchor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11036,
                        "src": "16582:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      ],
                      "id": 11045,
                      "name": "ConverterAnchorAdded",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10265,
                      "src": "16561:20:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_contract$_IConverterAnchor_$13349_$returns$__$",
                        "typeString": "function (contract IConverterAnchor)"
                      }
                    },
                    "id": 11047,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16561:29:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11048,
                  "nodeType": "EmitStatement",
                  "src": "16556:34:10"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11050,
                        "name": "_anchor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11036,
                        "src": "16622:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      ],
                      "id": 11049,
                      "name": "SmartTokenAdded",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10299,
                      "src": "16606:15:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_contract$_IConverterAnchor_$13349_$returns$__$",
                        "typeString": "function (contract IConverterAnchor)"
                      }
                    },
                    "id": 11051,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16606:24:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11052,
                  "nodeType": "EmitStatement",
                  "src": "16601:29:10"
                }
              ]
            },
            "documentation": {
              "id": 11032,
              "nodeType": "StructuredDocumentation",
              "src": "16267:115:10",
              "text": " @dev adds a converter anchor to the registry\n @param _anchor converter anchor"
            },
            "id": 11054,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "addAnchor",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 11037,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11034,
                  "mutability": "mutable",
                  "name": "_converterRegistryData",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11054,
                  "src": "16407:45:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                    "typeString": "contract IConverterRegistryData"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11033,
                    "name": "IConverterRegistryData",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13647,
                    "src": "16407:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                      "typeString": "contract IConverterRegistryData"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11036,
                  "mutability": "mutable",
                  "name": "_anchor",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11054,
                  "src": "16454:24:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                    "typeString": "contract IConverterAnchor"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11035,
                    "name": "IConverterAnchor",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13349,
                    "src": "16454:16:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "16406:73:10"
            },
            "returnParameters": {
              "id": 11038,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "16489:0:10"
            },
            "scope": 11667,
            "src": "16388:250:10",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 11076,
              "nodeType": "Block",
              "src": "16876:156:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11065,
                        "name": "_anchor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11059,
                        "src": "16927:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 11062,
                        "name": "_converterRegistryData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11057,
                        "src": "16887:22:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                          "typeString": "contract IConverterRegistryData"
                        }
                      },
                      "id": 11064,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "removeSmartToken",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13514,
                      "src": "16887:39:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_contract$_IConverterAnchor_$13349_$returns$__$",
                        "typeString": "function (contract IConverterAnchor) external"
                      }
                    },
                    "id": 11066,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16887:48:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11067,
                  "nodeType": "ExpressionStatement",
                  "src": "16887:48:10"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11069,
                        "name": "_anchor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11059,
                        "src": "16974:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      ],
                      "id": 11068,
                      "name": "ConverterAnchorRemoved",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10270,
                      "src": "16951:22:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_contract$_IConverterAnchor_$13349_$returns$__$",
                        "typeString": "function (contract IConverterAnchor)"
                      }
                    },
                    "id": 11070,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16951:31:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11071,
                  "nodeType": "EmitStatement",
                  "src": "16946:36:10"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11073,
                        "name": "_anchor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11059,
                        "src": "17016:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      ],
                      "id": 11072,
                      "name": "SmartTokenRemoved",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10304,
                      "src": "16998:17:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_contract$_IConverterAnchor_$13349_$returns$__$",
                        "typeString": "function (contract IConverterAnchor)"
                      }
                    },
                    "id": 11074,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16998:26:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11075,
                  "nodeType": "EmitStatement",
                  "src": "16993:31:10"
                }
              ]
            },
            "documentation": {
              "id": 11055,
              "nodeType": "StructuredDocumentation",
              "src": "16646:120:10",
              "text": " @dev removes a converter anchor from the registry\n @param _anchor converter anchor"
            },
            "id": 11077,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "removeAnchor",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 11060,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11057,
                  "mutability": "mutable",
                  "name": "_converterRegistryData",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11077,
                  "src": "16794:45:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                    "typeString": "contract IConverterRegistryData"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11056,
                    "name": "IConverterRegistryData",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13647,
                    "src": "16794:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                      "typeString": "contract IConverterRegistryData"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11059,
                  "mutability": "mutable",
                  "name": "_anchor",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11077,
                  "src": "16841:24:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                    "typeString": "contract IConverterAnchor"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11058,
                    "name": "IConverterAnchor",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13349,
                    "src": "16841:16:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "16793:73:10"
            },
            "returnParameters": {
              "id": 11061,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "16876:0:10"
            },
            "scope": 11667,
            "src": "16772:260:10",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 11095,
              "nodeType": "Block",
              "src": "17308:136:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11088,
                        "name": "_liquidityPoolAnchor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11082,
                        "src": "17359:20:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 11085,
                        "name": "_converterRegistryData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11080,
                        "src": "17319:22:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                          "typeString": "contract IConverterRegistryData"
                        }
                      },
                      "id": 11087,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "addLiquidityPool",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13519,
                      "src": "17319:39:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_contract$_IConverterAnchor_$13349_$returns$__$",
                        "typeString": "function (contract IConverterAnchor) external"
                      }
                    },
                    "id": 11089,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17319:61:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11090,
                  "nodeType": "ExpressionStatement",
                  "src": "17319:61:10"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11092,
                        "name": "_liquidityPoolAnchor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11082,
                        "src": "17415:20:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      ],
                      "id": 11091,
                      "name": "LiquidityPoolAdded",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10275,
                      "src": "17396:18:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_contract$_IConverterAnchor_$13349_$returns$__$",
                        "typeString": "function (contract IConverterAnchor)"
                      }
                    },
                    "id": 11093,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17396:40:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11094,
                  "nodeType": "EmitStatement",
                  "src": "17391:45:10"
                }
              ]
            },
            "documentation": {
              "id": 11078,
              "nodeType": "StructuredDocumentation",
              "src": "17040:141:10",
              "text": " @dev adds a liquidity pool to the registry\n @param _liquidityPoolAnchor liquidity pool converter anchor"
            },
            "id": 11096,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "addLiquidityPool",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 11083,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11080,
                  "mutability": "mutable",
                  "name": "_converterRegistryData",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11096,
                  "src": "17213:45:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                    "typeString": "contract IConverterRegistryData"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11079,
                    "name": "IConverterRegistryData",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13647,
                    "src": "17213:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                      "typeString": "contract IConverterRegistryData"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11082,
                  "mutability": "mutable",
                  "name": "_liquidityPoolAnchor",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11096,
                  "src": "17260:37:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                    "typeString": "contract IConverterAnchor"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11081,
                    "name": "IConverterAnchor",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13349,
                    "src": "17260:16:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "17212:86:10"
            },
            "returnParameters": {
              "id": 11084,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "17308:0:10"
            },
            "scope": 11667,
            "src": "17187:257:10",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 11114,
              "nodeType": "Block",
              "src": "17728:141:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11107,
                        "name": "_liquidityPoolAnchor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11101,
                        "src": "17782:20:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 11104,
                        "name": "_converterRegistryData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11099,
                        "src": "17739:22:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                          "typeString": "contract IConverterRegistryData"
                        }
                      },
                      "id": 11106,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "removeLiquidityPool",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13524,
                      "src": "17739:42:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_contract$_IConverterAnchor_$13349_$returns$__$",
                        "typeString": "function (contract IConverterAnchor) external"
                      }
                    },
                    "id": 11108,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17739:64:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11109,
                  "nodeType": "ExpressionStatement",
                  "src": "17739:64:10"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11111,
                        "name": "_liquidityPoolAnchor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11101,
                        "src": "17840:20:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      ],
                      "id": 11110,
                      "name": "LiquidityPoolRemoved",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10280,
                      "src": "17819:20:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_contract$_IConverterAnchor_$13349_$returns$__$",
                        "typeString": "function (contract IConverterAnchor)"
                      }
                    },
                    "id": 11112,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17819:42:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11113,
                  "nodeType": "EmitStatement",
                  "src": "17814:47:10"
                }
              ]
            },
            "documentation": {
              "id": 11097,
              "nodeType": "StructuredDocumentation",
              "src": "17452:146:10",
              "text": " @dev removes a liquidity pool from the registry\n @param _liquidityPoolAnchor liquidity pool converter anchor"
            },
            "id": 11115,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "removeLiquidityPool",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 11102,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11099,
                  "mutability": "mutable",
                  "name": "_converterRegistryData",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11115,
                  "src": "17633:45:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                    "typeString": "contract IConverterRegistryData"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11098,
                    "name": "IConverterRegistryData",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13647,
                    "src": "17633:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                      "typeString": "contract IConverterRegistryData"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11101,
                  "mutability": "mutable",
                  "name": "_liquidityPoolAnchor",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11115,
                  "src": "17680:37:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                    "typeString": "contract IConverterAnchor"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11100,
                    "name": "IConverterAnchor",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13349,
                    "src": "17680:16:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "17632:86:10"
            },
            "returnParameters": {
              "id": 11103,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "17728:0:10"
            },
            "scope": 11667,
            "src": "17604:265:10",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 11137,
              "nodeType": "Block",
              "src": "18220:154:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11128,
                        "name": "_convertibleToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11120,
                        "src": "18274:17:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11129,
                        "name": "_anchor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11122,
                        "src": "18293:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        },
                        {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 11125,
                        "name": "_converterRegistryData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11118,
                        "src": "18231:22:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                          "typeString": "contract IConverterRegistryData"
                        }
                      },
                      "id": 11127,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "addConvertibleToken",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13531,
                      "src": "18231:42:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_contract$_IERC20Token_$21127_$_t_contract$_IConverterAnchor_$13349_$returns$__$",
                        "typeString": "function (contract IERC20Token,contract IConverterAnchor) external"
                      }
                    },
                    "id": 11130,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18231:70:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11131,
                  "nodeType": "ExpressionStatement",
                  "src": "18231:70:10"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11133,
                        "name": "_convertibleToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11120,
                        "src": "18339:17:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11134,
                        "name": "_anchor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11122,
                        "src": "18358:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        },
                        {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      ],
                      "id": 11132,
                      "name": "ConvertibleTokenAdded",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10287,
                      "src": "18317:21:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_contract$_IERC20Token_$21127_$_t_contract$_IConverterAnchor_$13349_$returns$__$",
                        "typeString": "function (contract IERC20Token,contract IConverterAnchor)"
                      }
                    },
                    "id": 11135,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18317:49:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11136,
                  "nodeType": "EmitStatement",
                  "src": "18312:54:10"
                }
              ]
            },
            "documentation": {
              "id": 11116,
              "nodeType": "StructuredDocumentation",
              "src": "17877:195:10",
              "text": " @dev adds a convertible token to the registry\n @param _convertibleToken    convertible token\n @param _anchor              associated converter anchor"
            },
            "id": 11138,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "addConvertibleToken",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 11123,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11118,
                  "mutability": "mutable",
                  "name": "_converterRegistryData",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11138,
                  "src": "18107:45:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                    "typeString": "contract IConverterRegistryData"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11117,
                    "name": "IConverterRegistryData",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13647,
                    "src": "18107:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                      "typeString": "contract IConverterRegistryData"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11120,
                  "mutability": "mutable",
                  "name": "_convertibleToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11138,
                  "src": "18154:29:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20Token_$21127",
                    "typeString": "contract IERC20Token"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11119,
                    "name": "IERC20Token",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 21127,
                    "src": "18154:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                      "typeString": "contract IERC20Token"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11122,
                  "mutability": "mutable",
                  "name": "_anchor",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11138,
                  "src": "18185:24:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                    "typeString": "contract IConverterAnchor"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11121,
                    "name": "IConverterAnchor",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13349,
                    "src": "18185:16:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "18106:104:10"
            },
            "returnParameters": {
              "id": 11124,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "18220:0:10"
            },
            "scope": 11667,
            "src": "18078:296:10",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 11160,
              "nodeType": "Block",
              "src": "18733:159:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11151,
                        "name": "_convertibleToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11143,
                        "src": "18790:17:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11152,
                        "name": "_anchor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11145,
                        "src": "18809:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        },
                        {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 11148,
                        "name": "_converterRegistryData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11141,
                        "src": "18744:22:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                          "typeString": "contract IConverterRegistryData"
                        }
                      },
                      "id": 11150,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "removeConvertibleToken",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13538,
                      "src": "18744:45:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_contract$_IERC20Token_$21127_$_t_contract$_IConverterAnchor_$13349_$returns$__$",
                        "typeString": "function (contract IERC20Token,contract IConverterAnchor) external"
                      }
                    },
                    "id": 11153,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18744:73:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11154,
                  "nodeType": "ExpressionStatement",
                  "src": "18744:73:10"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11156,
                        "name": "_convertibleToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11143,
                        "src": "18857:17:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11157,
                        "name": "_anchor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11145,
                        "src": "18876:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        },
                        {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      ],
                      "id": 11155,
                      "name": "ConvertibleTokenRemoved",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10294,
                      "src": "18833:23:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_contract$_IERC20Token_$21127_$_t_contract$_IConverterAnchor_$13349_$returns$__$",
                        "typeString": "function (contract IERC20Token,contract IConverterAnchor)"
                      }
                    },
                    "id": 11158,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18833:51:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11159,
                  "nodeType": "EmitStatement",
                  "src": "18828:56:10"
                }
              ]
            },
            "documentation": {
              "id": 11139,
              "nodeType": "StructuredDocumentation",
              "src": "18382:200:10",
              "text": " @dev removes a convertible token from the registry\n @param _convertibleToken    convertible token\n @param _anchor              associated converter anchor"
            },
            "id": 11161,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "removeConvertibleToken",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 11146,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11141,
                  "mutability": "mutable",
                  "name": "_converterRegistryData",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11161,
                  "src": "18620:45:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                    "typeString": "contract IConverterRegistryData"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11140,
                    "name": "IConverterRegistryData",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13647,
                    "src": "18620:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                      "typeString": "contract IConverterRegistryData"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11143,
                  "mutability": "mutable",
                  "name": "_convertibleToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11161,
                  "src": "18667:29:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20Token_$21127",
                    "typeString": "contract IERC20Token"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11142,
                    "name": "IERC20Token",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 21127,
                    "src": "18667:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                      "typeString": "contract IERC20Token"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11145,
                  "mutability": "mutable",
                  "name": "_anchor",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11161,
                  "src": "18698:24:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                    "typeString": "contract IConverterAnchor"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11144,
                    "name": "IConverterAnchor",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13349,
                    "src": "18698:16:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "18619:104:10"
            },
            "returnParameters": {
              "id": 11147,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "18733:0:10"
            },
            "scope": 11667,
            "src": "18588:304:10",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 11233,
              "nodeType": "Block",
              "src": "18961:749:10",
              "statements": [
                {
                  "assignments": [
                    11167
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11167,
                      "mutability": "mutable",
                      "name": "converterRegistryData",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11233,
                      "src": "18972:44:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                        "typeString": "contract IConverterRegistryData"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 11166,
                        "name": "IConverterRegistryData",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 13647,
                        "src": "18972:22:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                          "typeString": "contract IConverterRegistryData"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11173,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 11170,
                            "name": "CONVERTER_REGISTRY_DATA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21548,
                            "src": "19052:23:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 11169,
                          "name": "addressOf",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21718,
                          "src": "19042:9:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                            "typeString": "function (bytes32) view returns (address)"
                          }
                        },
                        "id": 11171,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "19042:34:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 11168,
                      "name": "IConverterRegistryData",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13647,
                      "src": "19019:22:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
                        "typeString": "type(contract IConverterRegistryData)"
                      }
                    },
                    "id": 11172,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19019:58:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                      "typeString": "contract IConverterRegistryData"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "18972:105:10"
                },
                {
                  "assignments": [
                    11175
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11175,
                      "mutability": "mutable",
                      "name": "anchor",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11233,
                      "src": "19088:23:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                        "typeString": "contract IConverterAnchor"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 11174,
                        "name": "IConverterAnchor",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 13349,
                        "src": "19088:16:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11181,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 11177,
                            "name": "_converter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11163,
                            "src": "19125:10:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IConverter_$13340",
                              "typeString": "contract IConverter"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IConverter_$13340",
                              "typeString": "contract IConverter"
                            }
                          ],
                          "id": 11176,
                          "name": "IConverter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13340,
                          "src": "19114:10:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IConverter_$13340_$",
                            "typeString": "type(contract IConverter)"
                          }
                        },
                        "id": 11178,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "19114:22:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      "id": 11179,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "token",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13297,
                      "src": "19114:28:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IConverterAnchor_$13349_$",
                        "typeString": "function () view external returns (contract IConverterAnchor)"
                      }
                    },
                    "id": 11180,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19114:30:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "19088:56:10"
                },
                {
                  "assignments": [
                    11183
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11183,
                      "mutability": "mutable",
                      "name": "reserveTokenCount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11233,
                      "src": "19155:25:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11182,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "19155:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11187,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 11184,
                        "name": "_converter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11163,
                        "src": "19183:10:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      "id": 11185,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "connectorTokenCount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13339,
                      "src": "19183:30:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint16_$",
                        "typeString": "function () view external returns (uint16)"
                      }
                    },
                    "id": 11186,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19183:32:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "19155:60:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11189,
                        "name": "converterRegistryData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11167,
                        "src": "19275:21:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                          "typeString": "contract IConverterRegistryData"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11190,
                        "name": "anchor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11175,
                        "src": "19298:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                          "typeString": "contract IConverterRegistryData"
                        },
                        {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      ],
                      "id": 11188,
                      "name": "addAnchor",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11054,
                      "src": "19265:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IConverterRegistryData_$13647_$_t_contract$_IConverterAnchor_$13349_$returns$__$",
                        "typeString": "function (contract IConverterRegistryData,contract IConverterAnchor)"
                      }
                    },
                    "id": 11191,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19265:40:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11192,
                  "nodeType": "ExpressionStatement",
                  "src": "19265:40:10"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 11195,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 11193,
                      "name": "reserveTokenCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11183,
                      "src": "19320:17:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 11194,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "19340:1:10",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "19320:21:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 11202,
                          "name": "converterRegistryData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11167,
                          "src": "19452:21:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                            "typeString": "contract IConverterRegistryData"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 11206,
                                  "name": "anchor",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11175,
                                  "src": "19495:6:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                                    "typeString": "contract IConverterAnchor"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                                    "typeString": "contract IConverterAnchor"
                                  }
                                ],
                                "id": 11205,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "19487:7:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 11204,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "19487:7:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 11207,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "19487:15:10",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 11203,
                            "name": "ISmartToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21182,
                            "src": "19475:11:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_ISmartToken_$21182_$",
                              "typeString": "type(contract ISmartToken)"
                            }
                          },
                          "id": 11208,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19475:28:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ISmartToken_$21182",
                            "typeString": "contract ISmartToken"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 11209,
                          "name": "anchor",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11175,
                          "src": "19505:6:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                            "typeString": "contract IConverterAnchor"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                            "typeString": "contract IConverterRegistryData"
                          },
                          {
                            "typeIdentifier": "t_contract$_ISmartToken_$21182",
                            "typeString": "contract ISmartToken"
                          },
                          {
                            "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                            "typeString": "contract IConverterAnchor"
                          }
                        ],
                        "id": 11201,
                        "name": "addConvertibleToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11138,
                        "src": "19432:19:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IConverterRegistryData_$13647_$_t_contract$_IERC20Token_$21127_$_t_contract$_IConverterAnchor_$13349_$returns$__$",
                          "typeString": "function (contract IConverterRegistryData,contract IERC20Token,contract IConverterAnchor)"
                        }
                      },
                      "id": 11210,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "19432:80:10",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 11211,
                    "nodeType": "ExpressionStatement",
                    "src": "19432:80:10"
                  },
                  "id": 11212,
                  "nodeType": "IfStatement",
                  "src": "19316:196:10",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 11197,
                          "name": "converterRegistryData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11167,
                          "src": "19373:21:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                            "typeString": "contract IConverterRegistryData"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 11198,
                          "name": "anchor",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11175,
                          "src": "19396:6:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                            "typeString": "contract IConverterAnchor"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                            "typeString": "contract IConverterRegistryData"
                          },
                          {
                            "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                            "typeString": "contract IConverterAnchor"
                          }
                        ],
                        "id": 11196,
                        "name": "addLiquidityPool",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11096,
                        "src": "19356:16:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IConverterRegistryData_$13647_$_t_contract$_IConverterAnchor_$13349_$returns$__$",
                          "typeString": "function (contract IConverterRegistryData,contract IConverterAnchor)"
                        }
                      },
                      "id": 11199,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "19356:47:10",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 11200,
                    "nodeType": "ExpressionStatement",
                    "src": "19356:47:10"
                  }
                },
                {
                  "body": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 11224,
                          "name": "converterRegistryData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11167,
                          "src": "19641:21:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                            "typeString": "contract IConverterRegistryData"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 11227,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11214,
                              "src": "19691:1:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 11225,
                              "name": "_converter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11163,
                              "src": "19664:10:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IConverter_$13340",
                                "typeString": "contract IConverter"
                              }
                            },
                            "id": 11226,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "connectorTokens",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 13334,
                            "src": "19664:26:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_contract$_IERC20Token_$21127_$",
                              "typeString": "function (uint256) view external returns (contract IERC20Token)"
                            }
                          },
                          "id": 11228,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19664:29:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20Token_$21127",
                            "typeString": "contract IERC20Token"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 11229,
                          "name": "anchor",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11175,
                          "src": "19695:6:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                            "typeString": "contract IConverterAnchor"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                            "typeString": "contract IConverterRegistryData"
                          },
                          {
                            "typeIdentifier": "t_contract$_IERC20Token_$21127",
                            "typeString": "contract IERC20Token"
                          },
                          {
                            "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                            "typeString": "contract IConverterAnchor"
                          }
                        ],
                        "id": 11223,
                        "name": "addConvertibleToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11138,
                        "src": "19621:19:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IConverterRegistryData_$13647_$_t_contract$_IERC20Token_$21127_$_t_contract$_IConverterAnchor_$13349_$returns$__$",
                          "typeString": "function (contract IConverterRegistryData,contract IERC20Token,contract IConverterAnchor)"
                        }
                      },
                      "id": 11230,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "19621:81:10",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 11231,
                    "nodeType": "ExpressionStatement",
                    "src": "19621:81:10"
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 11219,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 11217,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11214,
                      "src": "19580:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 11218,
                      "name": "reserveTokenCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11183,
                      "src": "19584:17:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "19580:21:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 11232,
                  "initializationExpression": {
                    "assignments": [
                      11214
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 11214,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11232,
                        "src": "19565:9:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11213,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "19565:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 11216,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 11215,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "19577:1:10",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "19565:13:10"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 11221,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "19603:3:10",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 11220,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11214,
                        "src": "19603:1:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 11222,
                    "nodeType": "ExpressionStatement",
                    "src": "19603:3:10"
                  },
                  "nodeType": "ForStatement",
                  "src": "19560:142:10"
                }
              ]
            },
            "documentation": null,
            "id": 11234,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "addConverterInternal",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 11164,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11163,
                  "mutability": "mutable",
                  "name": "_converter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11234,
                  "src": "18930:21:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverter_$13340",
                    "typeString": "contract IConverter"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11162,
                    "name": "IConverter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13340,
                    "src": "18930:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverter_$13340",
                      "typeString": "contract IConverter"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "18929:23:10"
            },
            "returnParameters": {
              "id": 11165,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "18961:0:10"
            },
            "scope": 11667,
            "src": "18900:810:10",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 11306,
              "nodeType": "Block",
              "src": "19782:767:10",
              "statements": [
                {
                  "assignments": [
                    11240
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11240,
                      "mutability": "mutable",
                      "name": "converterRegistryData",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11306,
                      "src": "19793:44:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                        "typeString": "contract IConverterRegistryData"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 11239,
                        "name": "IConverterRegistryData",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 13647,
                        "src": "19793:22:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                          "typeString": "contract IConverterRegistryData"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11246,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 11243,
                            "name": "CONVERTER_REGISTRY_DATA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21548,
                            "src": "19873:23:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 11242,
                          "name": "addressOf",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21718,
                          "src": "19863:9:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                            "typeString": "function (bytes32) view returns (address)"
                          }
                        },
                        "id": 11244,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "19863:34:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 11241,
                      "name": "IConverterRegistryData",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13647,
                      "src": "19840:22:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
                        "typeString": "type(contract IConverterRegistryData)"
                      }
                    },
                    "id": 11245,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19840:58:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                      "typeString": "contract IConverterRegistryData"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "19793:105:10"
                },
                {
                  "assignments": [
                    11248
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11248,
                      "mutability": "mutable",
                      "name": "anchor",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11306,
                      "src": "19909:23:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                        "typeString": "contract IConverterAnchor"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 11247,
                        "name": "IConverterAnchor",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 13349,
                        "src": "19909:16:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11254,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 11250,
                            "name": "_converter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11236,
                            "src": "19946:10:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IConverter_$13340",
                              "typeString": "contract IConverter"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IConverter_$13340",
                              "typeString": "contract IConverter"
                            }
                          ],
                          "id": 11249,
                          "name": "IConverter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13340,
                          "src": "19935:10:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IConverter_$13340_$",
                            "typeString": "type(contract IConverter)"
                          }
                        },
                        "id": 11251,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "19935:22:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      "id": 11252,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "token",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13297,
                      "src": "19935:28:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IConverterAnchor_$13349_$",
                        "typeString": "function () view external returns (contract IConverterAnchor)"
                      }
                    },
                    "id": 11253,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19935:30:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "19909:56:10"
                },
                {
                  "assignments": [
                    11256
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11256,
                      "mutability": "mutable",
                      "name": "reserveTokenCount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11306,
                      "src": "19976:25:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11255,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "19976:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11260,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 11257,
                        "name": "_converter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11236,
                        "src": "20004:10:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      "id": 11258,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "connectorTokenCount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13339,
                      "src": "20004:30:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint16_$",
                        "typeString": "function () view external returns (uint16)"
                      }
                    },
                    "id": 11259,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "20004:32:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "19976:60:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11262,
                        "name": "converterRegistryData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11240,
                        "src": "20102:21:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                          "typeString": "contract IConverterRegistryData"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11263,
                        "name": "anchor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11248,
                        "src": "20125:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                          "typeString": "contract IConverterRegistryData"
                        },
                        {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      ],
                      "id": 11261,
                      "name": "removeAnchor",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11077,
                      "src": "20089:12:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IConverterRegistryData_$13647_$_t_contract$_IConverterAnchor_$13349_$returns$__$",
                        "typeString": "function (contract IConverterRegistryData,contract IConverterAnchor)"
                      }
                    },
                    "id": 11264,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "20089:43:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11265,
                  "nodeType": "ExpressionStatement",
                  "src": "20089:43:10"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 11268,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 11266,
                      "name": "reserveTokenCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11256,
                      "src": "20147:17:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 11267,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "20167:1:10",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "20147:21:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 11275,
                          "name": "converterRegistryData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11240,
                          "src": "20285:21:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                            "typeString": "contract IConverterRegistryData"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 11279,
                                  "name": "anchor",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11248,
                                  "src": "20328:6:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                                    "typeString": "contract IConverterAnchor"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                                    "typeString": "contract IConverterAnchor"
                                  }
                                ],
                                "id": 11278,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "20320:7:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 11277,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "20320:7:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 11280,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "20320:15:10",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 11276,
                            "name": "ISmartToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21182,
                            "src": "20308:11:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_ISmartToken_$21182_$",
                              "typeString": "type(contract ISmartToken)"
                            }
                          },
                          "id": 11281,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20308:28:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ISmartToken_$21182",
                            "typeString": "contract ISmartToken"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 11282,
                          "name": "anchor",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11248,
                          "src": "20338:6:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                            "typeString": "contract IConverterAnchor"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                            "typeString": "contract IConverterRegistryData"
                          },
                          {
                            "typeIdentifier": "t_contract$_ISmartToken_$21182",
                            "typeString": "contract ISmartToken"
                          },
                          {
                            "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                            "typeString": "contract IConverterAnchor"
                          }
                        ],
                        "id": 11274,
                        "name": "removeConvertibleToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11161,
                        "src": "20262:22:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IConverterRegistryData_$13647_$_t_contract$_IERC20Token_$21127_$_t_contract$_IConverterAnchor_$13349_$returns$__$",
                          "typeString": "function (contract IConverterRegistryData,contract IERC20Token,contract IConverterAnchor)"
                        }
                      },
                      "id": 11283,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "20262:83:10",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 11284,
                    "nodeType": "ExpressionStatement",
                    "src": "20262:83:10"
                  },
                  "id": 11285,
                  "nodeType": "IfStatement",
                  "src": "20143:202:10",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 11270,
                          "name": "converterRegistryData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11240,
                          "src": "20203:21:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                            "typeString": "contract IConverterRegistryData"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 11271,
                          "name": "anchor",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11248,
                          "src": "20226:6:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                            "typeString": "contract IConverterAnchor"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                            "typeString": "contract IConverterRegistryData"
                          },
                          {
                            "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                            "typeString": "contract IConverterAnchor"
                          }
                        ],
                        "id": 11269,
                        "name": "removeLiquidityPool",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11115,
                        "src": "20183:19:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IConverterRegistryData_$13647_$_t_contract$_IConverterAnchor_$13349_$returns$__$",
                          "typeString": "function (contract IConverterRegistryData,contract IConverterAnchor)"
                        }
                      },
                      "id": 11272,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "20183:50:10",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 11273,
                    "nodeType": "ExpressionStatement",
                    "src": "20183:50:10"
                  }
                },
                {
                  "body": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 11297,
                          "name": "converterRegistryData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11240,
                          "src": "20480:21:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                            "typeString": "contract IConverterRegistryData"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 11300,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11287,
                              "src": "20530:1:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 11298,
                              "name": "_converter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11236,
                              "src": "20503:10:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IConverter_$13340",
                                "typeString": "contract IConverter"
                              }
                            },
                            "id": 11299,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "connectorTokens",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 13334,
                            "src": "20503:26:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_contract$_IERC20Token_$21127_$",
                              "typeString": "function (uint256) view external returns (contract IERC20Token)"
                            }
                          },
                          "id": 11301,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20503:29:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20Token_$21127",
                            "typeString": "contract IERC20Token"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 11302,
                          "name": "anchor",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11248,
                          "src": "20534:6:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                            "typeString": "contract IConverterAnchor"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                            "typeString": "contract IConverterRegistryData"
                          },
                          {
                            "typeIdentifier": "t_contract$_IERC20Token_$21127",
                            "typeString": "contract IERC20Token"
                          },
                          {
                            "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                            "typeString": "contract IConverterAnchor"
                          }
                        ],
                        "id": 11296,
                        "name": "removeConvertibleToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11161,
                        "src": "20457:22:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IConverterRegistryData_$13647_$_t_contract$_IERC20Token_$21127_$_t_contract$_IConverterAnchor_$13349_$returns$__$",
                          "typeString": "function (contract IConverterRegistryData,contract IERC20Token,contract IConverterAnchor)"
                        }
                      },
                      "id": 11303,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "20457:84:10",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 11304,
                    "nodeType": "ExpressionStatement",
                    "src": "20457:84:10"
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 11292,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 11290,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11287,
                      "src": "20416:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 11291,
                      "name": "reserveTokenCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11256,
                      "src": "20420:17:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "20416:21:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 11305,
                  "initializationExpression": {
                    "assignments": [
                      11287
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 11287,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11305,
                        "src": "20401:9:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11286,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "20401:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 11289,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 11288,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "20413:1:10",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "20401:13:10"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 11294,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "20439:3:10",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 11293,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11287,
                        "src": "20439:1:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 11295,
                    "nodeType": "ExpressionStatement",
                    "src": "20439:3:10"
                  },
                  "nodeType": "ForStatement",
                  "src": "20396:145:10"
                }
              ]
            },
            "documentation": null,
            "id": 11307,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "removeConverterInternal",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 11237,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11236,
                  "mutability": "mutable",
                  "name": "_converter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11307,
                  "src": "19751:21:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverter_$13340",
                    "typeString": "contract IConverter"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11235,
                    "name": "IConverter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13340,
                    "src": "19751:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverter_$13340",
                      "typeString": "contract IConverter"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "19750:23:10"
            },
            "returnParameters": {
              "id": 11238,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "19782:0:10"
            },
            "scope": 11667,
            "src": "19718:831:10",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 11379,
              "nodeType": "Block",
              "src": "20672:819:10",
              "statements": [
                {
                  "assignments": [
                    11317
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11317,
                      "mutability": "mutable",
                      "name": "converterRegistryData",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11379,
                      "src": "20683:44:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                        "typeString": "contract IConverterRegistryData"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 11316,
                        "name": "IConverterRegistryData",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 13647,
                        "src": "20683:22:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                          "typeString": "contract IConverterRegistryData"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11323,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 11320,
                            "name": "CONVERTER_REGISTRY_DATA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21548,
                            "src": "20763:23:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 11319,
                          "name": "addressOf",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21718,
                          "src": "20753:9:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                            "typeString": "function (bytes32) view returns (address)"
                          }
                        },
                        "id": 11321,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "20753:34:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 11318,
                      "name": "IConverterRegistryData",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13647,
                      "src": "20730:22:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
                        "typeString": "type(contract IConverterRegistryData)"
                      }
                    },
                    "id": 11322,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "20730:58:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                      "typeString": "contract IConverterRegistryData"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "20683:105:10"
                },
                {
                  "assignments": [
                    11325
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11325,
                      "mutability": "mutable",
                      "name": "minAnchorCount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11379,
                      "src": "20799:22:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11324,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "20799:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11332,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 11328,
                          "name": "_reserveTokens",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11310,
                          "src": "20881:14:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
                            "typeString": "contract IERC20Token[] memory"
                          }
                        },
                        "id": 11330,
                        "indexExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 11329,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "20896:1:10",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "20881:17:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 11326,
                        "name": "converterRegistryData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11317,
                        "src": "20824:21:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                          "typeString": "contract IConverterRegistryData"
                        }
                      },
                      "id": 11327,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getConvertibleTokenSmartTokenCount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13620,
                      "src": "20824:56:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_contract$_IERC20Token_$21127_$returns$_t_uint256_$",
                        "typeString": "function (contract IERC20Token) view external returns (uint256)"
                      }
                    },
                    "id": 11331,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "20824:75:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "20799:100:10"
                },
                {
                  "assignments": [
                    11334
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11334,
                      "mutability": "mutable",
                      "name": "index",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11379,
                      "src": "20910:13:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11333,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "20910:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11336,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 11335,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "20926:1:10",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "20910:17:10"
                },
                {
                  "body": {
                    "id": 11370,
                    "nodeType": "Block",
                    "src": "21078:311:10",
                    "statements": [
                      {
                        "assignments": [
                          11349
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11349,
                            "mutability": "mutable",
                            "name": "convertibleTokenAnchorCount",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 11370,
                            "src": "21093:35:10",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11348,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "21093:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 11356,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 11352,
                                "name": "_reserveTokens",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11310,
                                "src": "21188:14:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
                                  "typeString": "contract IERC20Token[] memory"
                                }
                              },
                              "id": 11354,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 11353,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11338,
                                "src": "21203:1:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "21188:17:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                "typeString": "contract IERC20Token"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                "typeString": "contract IERC20Token"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 11350,
                              "name": "converterRegistryData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11317,
                              "src": "21131:21:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                                "typeString": "contract IConverterRegistryData"
                              }
                            },
                            "id": 11351,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getConvertibleTokenSmartTokenCount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 13620,
                            "src": "21131:56:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_contract$_IERC20Token_$21127_$returns$_t_uint256_$",
                              "typeString": "function (contract IERC20Token) view external returns (uint256)"
                            }
                          },
                          "id": 11355,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "21131:75:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "21093:113:10"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11359,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 11357,
                            "name": "minAnchorCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11325,
                            "src": "21225:14:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 11358,
                            "name": "convertibleTokenAnchorCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11349,
                            "src": "21242:27:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "21225:44:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 11369,
                        "nodeType": "IfStatement",
                        "src": "21221:157:10",
                        "trueBody": {
                          "id": 11368,
                          "nodeType": "Block",
                          "src": "21271:107:10",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 11362,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 11360,
                                  "name": "minAnchorCount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11325,
                                  "src": "21290:14:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 11361,
                                  "name": "convertibleTokenAnchorCount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11349,
                                  "src": "21307:27:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "21290:44:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 11363,
                              "nodeType": "ExpressionStatement",
                              "src": "21290:44:10"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 11366,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 11364,
                                  "name": "index",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11334,
                                  "src": "21353:5:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 11365,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11338,
                                  "src": "21361:1:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "21353:9:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 11367,
                              "nodeType": "ExpressionStatement",
                              "src": "21353:9:10"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 11344,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 11341,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11338,
                      "src": "21046:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 11342,
                        "name": "_reserveTokens",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11310,
                        "src": "21050:14:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
                          "typeString": "contract IERC20Token[] memory"
                        }
                      },
                      "id": 11343,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "21050:21:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "21046:25:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 11371,
                  "initializationExpression": {
                    "assignments": [
                      11338
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 11338,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11371,
                        "src": "21031:9:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11337,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "21031:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 11340,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 11339,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "21043:1:10",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "21031:13:10"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 11346,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "21073:3:10",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 11345,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11338,
                        "src": "21073:1:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 11347,
                    "nodeType": "ExpressionStatement",
                    "src": "21073:3:10"
                  },
                  "nodeType": "ForStatement",
                  "src": "21026:363:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 11374,
                          "name": "_reserveTokens",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11310,
                          "src": "21461:14:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
                            "typeString": "contract IERC20Token[] memory"
                          }
                        },
                        "id": 11376,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 11375,
                          "name": "index",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11334,
                          "src": "21476:5:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "21461:21:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 11372,
                        "name": "converterRegistryData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11317,
                        "src": "21408:21:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                          "typeString": "contract IConverterRegistryData"
                        }
                      },
                      "id": 11373,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getConvertibleTokenSmartTokens",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13628,
                      "src": "21408:52:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_contract$_IERC20Token_$21127_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                        "typeString": "function (contract IERC20Token) view external returns (address[] memory)"
                      }
                    },
                    "id": 11377,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "21408:75:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                      "typeString": "address[] memory"
                    }
                  },
                  "functionReturnParameters": 11315,
                  "id": 11378,
                  "nodeType": "Return",
                  "src": "21401:82:10"
                }
              ]
            },
            "documentation": null,
            "id": 11380,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getLeastFrequentTokenAnchors",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 11311,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11310,
                  "mutability": "mutable",
                  "name": "_reserveTokens",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11380,
                  "src": "20595:35:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
                    "typeString": "contract IERC20Token[]"
                  },
                  "typeName": {
                    "baseType": {
                      "contractScope": null,
                      "id": 11308,
                      "name": "IERC20Token",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 21127,
                      "src": "20595:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IERC20Token_$21127",
                        "typeString": "contract IERC20Token"
                      }
                    },
                    "id": 11309,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "20595:13:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_storage_ptr",
                      "typeString": "contract IERC20Token[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "20594:37:10"
            },
            "returnParameters": {
              "id": 11315,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11314,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11380,
                  "src": "20654:16:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 11312,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "20654:7:10",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 11313,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "20654:9:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "20653:18:10"
            },
            "scope": 11667,
            "src": "20557:934:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 11445,
              "nodeType": "Block",
              "src": "21673:484:10",
              "statements": [
                {
                  "assignments": [
                    11396
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11396,
                      "mutability": "mutable",
                      "name": "reserveTokenCount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11445,
                      "src": "21684:25:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11395,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "21684:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11400,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 11397,
                        "name": "_converter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11382,
                        "src": "21712:10:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      "id": 11398,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "connectorTokenCount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13339,
                      "src": "21712:30:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint16_$",
                        "typeString": "function () view external returns (uint16)"
                      }
                    },
                    "id": 11399,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "21712:32:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "21684:60:10"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    },
                    "id": 11406,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 11401,
                      "name": "_type",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11384,
                      "src": "21761:5:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 11403,
                          "name": "_converter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11382,
                          "src": "21787:10:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IConverter_$13340",
                            "typeString": "contract IConverter"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 11404,
                          "name": "reserveTokenCount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11396,
                          "src": "21799:17:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_IConverter_$13340",
                            "typeString": "contract IConverter"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 11402,
                        "name": "getConverterType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11520,
                        "src": "21770:16:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_contract$_IConverter_$13340_$_t_uint256_$returns$_t_uint16_$",
                          "typeString": "function (contract IConverter,uint256) view returns (uint16)"
                        }
                      },
                      "id": 11405,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "21770:47:10",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "src": "21761:56:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 11409,
                  "nodeType": "IfStatement",
                  "src": "21757:87:10",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "hexValue": "66616c7365",
                      "id": 11407,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "21839:5:10",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "false"
                    },
                    "functionReturnParameters": 11394,
                    "id": 11408,
                    "nodeType": "Return",
                    "src": "21832:12:10"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 11413,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 11410,
                        "name": "_reserveTokens",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11387,
                        "src": "21861:14:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
                          "typeString": "contract IERC20Token[] memory"
                        }
                      },
                      "id": 11411,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "21861:21:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 11412,
                      "name": "reserveTokenCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11396,
                      "src": "21886:17:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "21861:42:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 11416,
                  "nodeType": "IfStatement",
                  "src": "21857:73:10",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "hexValue": "66616c7365",
                      "id": 11414,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "21925:5:10",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "false"
                    },
                    "functionReturnParameters": 11394,
                    "id": 11415,
                    "nodeType": "Return",
                    "src": "21918:12:10"
                  }
                },
                {
                  "body": {
                    "id": 11441,
                    "nodeType": "Block",
                    "src": "21995:131:10",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          },
                          "id": 11437,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 11428,
                              "name": "_reserveWeights",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11390,
                              "src": "22014:15:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
                                "typeString": "uint32[] memory"
                              }
                            },
                            "id": 11430,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 11429,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11418,
                              "src": "22030:1:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "22014:18:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 11432,
                                "name": "_converter",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11382,
                                "src": "22053:10:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IConverter_$13340",
                                  "typeString": "contract IConverter"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 11433,
                                  "name": "_reserveTokens",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11387,
                                  "src": "22065:14:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
                                    "typeString": "contract IERC20Token[] memory"
                                  }
                                },
                                "id": 11435,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 11434,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11418,
                                  "src": "22080:1:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "22065:17:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                  "typeString": "contract IERC20Token"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IConverter_$13340",
                                  "typeString": "contract IConverter"
                                },
                                {
                                  "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                  "typeString": "contract IERC20Token"
                                }
                              ],
                              "id": 11431,
                              "name": "getReserveWeight",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11465,
                              "src": "22036:16:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_contract$_IConverter_$13340_$_t_contract$_IERC20Token_$21127_$returns$_t_uint32_$",
                                "typeString": "function (contract IConverter,contract IERC20Token) view returns (uint32)"
                              }
                            },
                            "id": 11436,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "22036:47:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "src": "22014:69:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 11440,
                        "nodeType": "IfStatement",
                        "src": "22010:104:10",
                        "trueBody": {
                          "expression": {
                            "argumentTypes": null,
                            "hexValue": "66616c7365",
                            "id": 11438,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "22109:5:10",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          },
                          "functionReturnParameters": 11394,
                          "id": 11439,
                          "nodeType": "Return",
                          "src": "22102:12:10"
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 11424,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 11421,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11418,
                      "src": "21963:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 11422,
                        "name": "_reserveTokens",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11387,
                        "src": "21967:14:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
                          "typeString": "contract IERC20Token[] memory"
                        }
                      },
                      "id": 11423,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "21967:21:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "21963:25:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 11442,
                  "initializationExpression": {
                    "assignments": [
                      11418
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 11418,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11442,
                        "src": "21948:9:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11417,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "21948:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 11420,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 11419,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "21960:1:10",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "21948:13:10"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 11426,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "21990:3:10",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 11425,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11418,
                        "src": "21990:1:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 11427,
                    "nodeType": "ExpressionStatement",
                    "src": "21990:3:10"
                  },
                  "nodeType": "ForStatement",
                  "src": "21943:183:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 11443,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "22145:4:10",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 11394,
                  "id": 11444,
                  "nodeType": "Return",
                  "src": "22138:11:10"
                }
              ]
            },
            "documentation": null,
            "id": 11446,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isConverterReserveConfigEqual",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 11391,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11382,
                  "mutability": "mutable",
                  "name": "_converter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11446,
                  "src": "21538:21:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverter_$13340",
                    "typeString": "contract IConverter"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11381,
                    "name": "IConverter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13340,
                    "src": "21538:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverter_$13340",
                      "typeString": "contract IConverter"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11384,
                  "mutability": "mutable",
                  "name": "_type",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11446,
                  "src": "21561:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 11383,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "21561:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11387,
                  "mutability": "mutable",
                  "name": "_reserveTokens",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11446,
                  "src": "21575:35:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
                    "typeString": "contract IERC20Token[]"
                  },
                  "typeName": {
                    "baseType": {
                      "contractScope": null,
                      "id": 11385,
                      "name": "IERC20Token",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 21127,
                      "src": "21575:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IERC20Token_$21127",
                        "typeString": "contract IERC20Token"
                      }
                    },
                    "id": 11386,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "21575:13:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_storage_ptr",
                      "typeString": "contract IERC20Token[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11390,
                  "mutability": "mutable",
                  "name": "_reserveWeights",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11446,
                  "src": "21612:31:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
                    "typeString": "uint32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 11388,
                      "name": "uint32",
                      "nodeType": "ElementaryTypeName",
                      "src": "21612:6:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      }
                    },
                    "id": 11389,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "21612:8:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint32_$dyn_storage_ptr",
                      "typeString": "uint32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "21537:107:10"
            },
            "returnParameters": {
              "id": 11394,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11393,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11446,
                  "src": "21667:4:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 11392,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "21667:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "21666:6:10"
            },
            "scope": 11667,
            "src": "21499:658:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 11464,
              "nodeType": "Block",
              "src": "22400:102:10",
              "statements": [
                {
                  "assignments": [
                    null,
                    11456,
                    null,
                    null,
                    null
                  ],
                  "declarations": [
                    null,
                    {
                      "constant": false,
                      "id": 11456,
                      "mutability": "mutable",
                      "name": "weight",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11464,
                      "src": "22414:13:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 11455,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "22414:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    null,
                    null,
                    null
                  ],
                  "id": 11461,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11459,
                        "name": "_reserveToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11450,
                        "src": "22456:13:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 11457,
                        "name": "_converter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11448,
                        "src": "22434:10:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      "id": 11458,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "connectors",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13320,
                      "src": "22434:21:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_contract$_IERC20Token_$21127_$returns$_t_uint256_$_t_uint32_$_t_bool_$_t_bool_$_t_bool_$",
                        "typeString": "function (contract IERC20Token) view external returns (uint256,uint32,bool,bool,bool)"
                      }
                    },
                    "id": 11460,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "22434:36:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint32_$_t_bool_$_t_bool_$_t_bool_$",
                      "typeString": "tuple(uint256,uint32,bool,bool,bool)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "22411:59:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 11462,
                    "name": "weight",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11456,
                    "src": "22488:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "functionReturnParameters": 11454,
                  "id": 11463,
                  "nodeType": "Return",
                  "src": "22481:13:10"
                }
              ]
            },
            "documentation": null,
            "id": 11465,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getReserveWeight",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 11451,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11448,
                  "mutability": "mutable",
                  "name": "_converter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11465,
                  "src": "22320:21:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverter_$13340",
                    "typeString": "contract IConverter"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11447,
                    "name": "IConverter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13340,
                    "src": "22320:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverter_$13340",
                      "typeString": "contract IConverter"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11450,
                  "mutability": "mutable",
                  "name": "_reserveToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11465,
                  "src": "22343:25:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20Token_$21127",
                    "typeString": "contract IERC20Token"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11449,
                    "name": "IERC20Token",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 21127,
                    "src": "22343:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                      "typeString": "contract IERC20Token"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "22319:50:10"
            },
            "returnParameters": {
              "id": 11454,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11453,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11465,
                  "src": "22392:6:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 11452,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "22392:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "22391:8:10"
            },
            "scope": 11667,
            "src": "22294:208:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 11473,
            "mutability": "constant",
            "name": "CONVERTER_TYPE_FUNC_SELECTOR",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 11667,
            "src": "22510:91:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 11466,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "22510:6:10",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "arguments": [
                {
                  "argumentTypes": null,
                  "arguments": [
                    {
                      "argumentTypes": null,
                      "hexValue": "636f6e766572746572547970652829",
                      "id": 11470,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "string",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "22582:17:10",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_stringliteral_3e8ff43f1cd1bc4d06a757749a6e6e9fd9d44e027b0f9466e12cafa4eda5c2dd",
                        "typeString": "literal_string \"converterType()\""
                      },
                      "value": "converterType()"
                    }
                  ],
                  "expression": {
                    "argumentTypes": [
                      {
                        "typeIdentifier": "t_stringliteral_3e8ff43f1cd1bc4d06a757749a6e6e9fd9d44e027b0f9466e12cafa4eda5c2dd",
                        "typeString": "literal_string \"converterType()\""
                      }
                    ],
                    "id": 11469,
                    "name": "keccak256",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": -8,
                    "src": "22572:9:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                      "typeString": "function (bytes memory) pure returns (bytes32)"
                    }
                  },
                  "id": 11471,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "functionCall",
                  "lValueRequested": false,
                  "names": [],
                  "nodeType": "FunctionCall",
                  "src": "22572:28:10",
                  "tryCall": false,
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                ],
                "id": 11468,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "lValueRequested": false,
                "nodeType": "ElementaryTypeNameExpression",
                "src": "22565:6:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_type$_t_bytes4_$",
                  "typeString": "type(bytes4)"
                },
                "typeName": {
                  "id": 11467,
                  "name": "bytes4",
                  "nodeType": "ElementaryTypeName",
                  "src": "22565:6:10",
                  "typeDescriptions": {
                    "typeIdentifier": null,
                    "typeString": null
                  }
                }
              },
              "id": 11472,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "typeConversion",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "22565:36:10",
              "tryCall": false,
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "visibility": "private"
          },
          {
            "body": {
              "id": 11519,
              "nodeType": "Block",
              "src": "22843:297:10",
              "statements": [
                {
                  "assignments": [
                    11483,
                    11485
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11483,
                      "mutability": "mutable",
                      "name": "success",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11519,
                      "src": "22855:12:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 11482,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "22855:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11485,
                      "mutability": "mutable",
                      "name": "returnData",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11519,
                      "src": "22869:23:10",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 11484,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "22869:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11496,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 11493,
                            "name": "CONVERTER_TYPE_FUNC_SELECTOR",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11473,
                            "src": "22950:28:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 11491,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "22927:3:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 11492,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodeWithSelector",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "22927:22:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (bytes4) pure returns (bytes memory)"
                          }
                        },
                        "id": 11494,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "22927:52:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 11488,
                            "name": "_converter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11475,
                            "src": "22904:10:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IConverter_$13340",
                              "typeString": "contract IConverter"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IConverter_$13340",
                              "typeString": "contract IConverter"
                            }
                          ],
                          "id": 11487,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "22896:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 11486,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "22896:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 11489,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "22896:19:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "id": 11490,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "staticcall",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "22896:30:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                      }
                    },
                    "id": 11495,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "22896:84:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                      "typeString": "tuple(bool,bytes memory)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "22854:126:10"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 11502,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 11497,
                      "name": "success",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11483,
                      "src": "22995:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 11501,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 11498,
                          "name": "returnData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11485,
                          "src": "23006:10:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 11499,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "23006:17:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "3332",
                        "id": 11500,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "23027:2:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_32_by_1",
                          "typeString": "int_const 32"
                        },
                        "value": "32"
                      },
                      "src": "23006:23:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "22995:34:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 11511,
                  "nodeType": "IfStatement",
                  "src": "22991:93:10",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 11505,
                          "name": "returnData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11485,
                          "src": "23063:10:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 11507,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "23076:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint16_$",
                                "typeString": "type(uint16)"
                              },
                              "typeName": {
                                "id": 11506,
                                "name": "uint16",
                                "nodeType": "ElementaryTypeName",
                                "src": "23076:6:10",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            }
                          ],
                          "id": 11508,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "23075:8:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint16_$",
                            "typeString": "type(uint16)"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          },
                          {
                            "typeIdentifier": "t_type$_t_uint16_$",
                            "typeString": "type(uint16)"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 11503,
                          "name": "abi",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -1,
                          "src": "23052:3:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_abi",
                            "typeString": "abi"
                          }
                        },
                        "id": 11504,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberName": "decode",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "23052:10:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                          "typeString": "function () pure"
                        }
                      },
                      "id": 11509,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "23052:32:10",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "functionReturnParameters": 11481,
                    "id": 11510,
                    "nodeType": "Return",
                    "src": "23045:39:10"
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "condition": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 11514,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 11512,
                        "name": "_reserveTokenCount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11477,
                        "src": "23102:18:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 11513,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "23123:1:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "src": "23102:22:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 11516,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "23131:1:10",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "id": 11517,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "Conditional",
                    "src": "23102:30:10",
                    "trueExpression": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 11515,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "23127:1:10",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "functionReturnParameters": 11481,
                  "id": 11518,
                  "nodeType": "Return",
                  "src": "23095:37:10"
                }
              ]
            },
            "documentation": null,
            "id": 11520,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getConverterType",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 11478,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11475,
                  "mutability": "mutable",
                  "name": "_converter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11520,
                  "src": "22762:21:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverter_$13340",
                    "typeString": "contract IConverter"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11474,
                    "name": "IConverter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13340,
                    "src": "22762:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverter_$13340",
                      "typeString": "contract IConverter"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11477,
                  "mutability": "mutable",
                  "name": "_reserveTokenCount",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11520,
                  "src": "22785:26:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11476,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "22785:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "22761:51:10"
            },
            "returnParameters": {
              "id": 11481,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11480,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11520,
                  "src": "22835:6:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 11479,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "22835:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "22834:8:10"
            },
            "scope": 11667,
            "src": "22736:404:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 11529,
              "nodeType": "Block",
              "src": "23296:42:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 11526,
                      "name": "getAnchorCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10514,
                      "src": "23314:14:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                        "typeString": "function () view returns (uint256)"
                      }
                    },
                    "id": 11527,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "23314:16:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 11525,
                  "id": 11528,
                  "nodeType": "Return",
                  "src": "23307:23:10"
                }
              ]
            },
            "documentation": {
              "id": 11521,
              "nodeType": "StructuredDocumentation",
              "src": "23148:82:10",
              "text": " @dev deprecated, backward compatibility, use `getAnchorCount`"
            },
            "functionSelector": "e571049b",
            "id": 11530,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getSmartTokenCount",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 11522,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "23263:2:10"
            },
            "returnParameters": {
              "id": 11525,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11524,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11530,
                  "src": "23287:7:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11523,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "23287:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "23286:9:10"
            },
            "scope": 11667,
            "src": "23236:102:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 11540,
              "nodeType": "Block",
              "src": "23495:38:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 11537,
                      "name": "getAnchors",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10531,
                      "src": "23513:10:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                        "typeString": "function () view returns (address[] memory)"
                      }
                    },
                    "id": 11538,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "23513:12:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                      "typeString": "address[] memory"
                    }
                  },
                  "functionReturnParameters": 11536,
                  "id": 11539,
                  "nodeType": "Return",
                  "src": "23506:19:10"
                }
              ]
            },
            "documentation": {
              "id": 11531,
              "nodeType": "StructuredDocumentation",
              "src": "23346:78:10",
              "text": " @dev deprecated, backward compatibility, use `getAnchors`"
            },
            "functionSelector": "04ceaf41",
            "id": 11541,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getSmartTokens",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 11532,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "23453:2:10"
            },
            "returnParameters": {
              "id": 11536,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11535,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11541,
                  "src": "23477:16:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 11533,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "23477:7:10",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 11534,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "23477:9:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "23476:18:10"
            },
            "scope": 11667,
            "src": "23430:103:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 11553,
              "nodeType": "Block",
              "src": "23702:43:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11550,
                        "name": "_index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11544,
                        "src": "23730:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 11549,
                      "name": "getAnchor",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10550,
                      "src": "23720:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_contract$_IConverterAnchor_$13349_$",
                        "typeString": "function (uint256) view returns (contract IConverterAnchor)"
                      }
                    },
                    "id": 11551,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "23720:17:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "functionReturnParameters": 11548,
                  "id": 11552,
                  "nodeType": "Return",
                  "src": "23713:24:10"
                }
              ]
            },
            "documentation": {
              "id": 11542,
              "nodeType": "StructuredDocumentation",
              "src": "23541:77:10",
              "text": " @dev deprecated, backward compatibility, use `getAnchor`"
            },
            "functionSelector": "a109d214",
            "id": 11554,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getSmartToken",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 11545,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11544,
                  "mutability": "mutable",
                  "name": "_index",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11554,
                  "src": "23647:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11543,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "23647:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "23646:16:10"
            },
            "returnParameters": {
              "id": 11548,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11547,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11554,
                  "src": "23684:16:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                    "typeString": "contract IConverterAnchor"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11546,
                    "name": "IConverterAnchor",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13349,
                    "src": "23684:16:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "23683:18:10"
            },
            "scope": 11667,
            "src": "23624:121:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 11566,
              "nodeType": "Block",
              "src": "23900:42:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11563,
                        "name": "_value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11557,
                        "src": "23927:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 11562,
                      "name": "isAnchor",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10569,
                      "src": "23918:8:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                        "typeString": "function (address) view returns (bool)"
                      }
                    },
                    "id": 11564,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "23918:16:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 11561,
                  "id": 11565,
                  "nodeType": "Return",
                  "src": "23911:23:10"
                }
              ]
            },
            "documentation": {
              "id": 11555,
              "nodeType": "StructuredDocumentation",
              "src": "23753:76:10",
              "text": " @dev deprecated, backward compatibility, use `isAnchor`"
            },
            "functionSelector": "4123ef60",
            "id": 11567,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isSmartToken",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 11558,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11557,
                  "mutability": "mutable",
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11567,
                  "src": "23857:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11556,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "23857:7:10",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "23856:16:10"
            },
            "returnParameters": {
              "id": 11561,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11560,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11567,
                  "src": "23894:4:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 11559,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "23894:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "23893:6:10"
            },
            "scope": 11667,
            "src": "23835:107:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 11579,
              "nodeType": "Block",
              "src": "24159:75:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11576,
                        "name": "_convertibleToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11570,
                        "src": "24208:17:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        }
                      ],
                      "id": 11575,
                      "name": "getConvertibleTokenAnchorCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10730,
                      "src": "24177:30:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_contract$_IERC20Token_$21127_$returns$_t_uint256_$",
                        "typeString": "function (contract IERC20Token) view returns (uint256)"
                      }
                    },
                    "id": 11577,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "24177:49:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 11574,
                  "id": 11578,
                  "nodeType": "Return",
                  "src": "24170:56:10"
                }
              ]
            },
            "documentation": {
              "id": 11568,
              "nodeType": "StructuredDocumentation",
              "src": "23950:98:10",
              "text": " @dev deprecated, backward compatibility, use `getConvertibleTokenAnchorCount`"
            },
            "functionSelector": "a43d5e94",
            "id": 11580,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getConvertibleTokenSmartTokenCount",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 11571,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11570,
                  "mutability": "mutable",
                  "name": "_convertibleToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11580,
                  "src": "24098:29:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20Token_$21127",
                    "typeString": "contract IERC20Token"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11569,
                    "name": "IERC20Token",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 21127,
                    "src": "24098:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                      "typeString": "contract IERC20Token"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "24097:31:10"
            },
            "returnParameters": {
              "id": 11574,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11573,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11580,
                  "src": "24150:7:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11572,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "24150:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "24149:9:10"
            },
            "scope": 11667,
            "src": "24054:180:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 11593,
              "nodeType": "Block",
              "src": "24452:71:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11590,
                        "name": "_convertibleToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11583,
                        "src": "24497:17:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        }
                      ],
                      "id": 11589,
                      "name": "getConvertibleTokenAnchors",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10750,
                      "src": "24470:26:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_contract$_IERC20Token_$21127_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                        "typeString": "function (contract IERC20Token) view returns (address[] memory)"
                      }
                    },
                    "id": 11591,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "24470:45:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                      "typeString": "address[] memory"
                    }
                  },
                  "functionReturnParameters": 11588,
                  "id": 11592,
                  "nodeType": "Return",
                  "src": "24463:52:10"
                }
              ]
            },
            "documentation": {
              "id": 11581,
              "nodeType": "StructuredDocumentation",
              "src": "24242:94:10",
              "text": " @dev deprecated, backward compatibility, use `getConvertibleTokenAnchors`"
            },
            "functionSelector": "f4fb86c0",
            "id": 11594,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getConvertibleTokenSmartTokens",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 11584,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11583,
                  "mutability": "mutable",
                  "name": "_convertibleToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11594,
                  "src": "24382:29:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20Token_$21127",
                    "typeString": "contract IERC20Token"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11582,
                    "name": "IERC20Token",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 21127,
                    "src": "24382:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                      "typeString": "contract IERC20Token"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "24381:31:10"
            },
            "returnParameters": {
              "id": 11588,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11587,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11594,
                  "src": "24434:16:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 11585,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "24434:7:10",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 11586,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "24434:9:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "24433:18:10"
            },
            "scope": 11667,
            "src": "24342:181:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 11609,
              "nodeType": "Block",
              "src": "24755:78:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11605,
                        "name": "_convertibleToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11597,
                        "src": "24799:17:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11606,
                        "name": "_index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11599,
                        "src": "24818:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 11604,
                      "name": "getConvertibleTokenAnchor",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10772,
                      "src": "24773:25:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_contract$_IERC20Token_$21127_$_t_uint256_$returns$_t_contract$_IConverterAnchor_$13349_$",
                        "typeString": "function (contract IERC20Token,uint256) view returns (contract IConverterAnchor)"
                      }
                    },
                    "id": 11607,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "24773:52:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "functionReturnParameters": 11603,
                  "id": 11608,
                  "nodeType": "Return",
                  "src": "24766:59:10"
                }
              ]
            },
            "documentation": {
              "id": 11595,
              "nodeType": "StructuredDocumentation",
              "src": "24531:93:10",
              "text": " @dev deprecated, backward compatibility, use `getConvertibleTokenAnchor`"
            },
            "functionSelector": "d6c4b5b2",
            "id": 11610,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getConvertibleTokenSmartToken",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 11600,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11597,
                  "mutability": "mutable",
                  "name": "_convertibleToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11610,
                  "src": "24669:29:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20Token_$21127",
                    "typeString": "contract IERC20Token"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11596,
                    "name": "IERC20Token",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 21127,
                    "src": "24669:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                      "typeString": "contract IERC20Token"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11599,
                  "mutability": "mutable",
                  "name": "_index",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11610,
                  "src": "24700:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11598,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "24700:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "24668:47:10"
            },
            "returnParameters": {
              "id": 11603,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11602,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11610,
                  "src": "24737:16:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                    "typeString": "contract IConverterAnchor"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11601,
                    "name": "IConverterAnchor",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13349,
                    "src": "24737:16:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "24736:18:10"
            },
            "scope": 11667,
            "src": "24630:203:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 11625,
              "nodeType": "Block",
              "src": "25051:77:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11621,
                        "name": "_convertibleToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11613,
                        "src": "25094:17:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11622,
                        "name": "_value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11615,
                        "src": "25113:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 11620,
                      "name": "isConvertibleTokenAnchor",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10794,
                      "src": "25069:24:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_contract$_IERC20Token_$21127_$_t_address_$returns$_t_bool_$",
                        "typeString": "function (contract IERC20Token,address) view returns (bool)"
                      }
                    },
                    "id": 11623,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "25069:51:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 11619,
                  "id": 11624,
                  "nodeType": "Return",
                  "src": "25062:58:10"
                }
              ]
            },
            "documentation": {
              "id": 11611,
              "nodeType": "StructuredDocumentation",
              "src": "24841:92:10",
              "text": " @dev deprecated, backward compatibility, use `isConvertibleTokenAnchor`"
            },
            "functionSelector": "725b8786",
            "id": 11626,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isConvertibleTokenSmartToken",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 11616,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11613,
                  "mutability": "mutable",
                  "name": "_convertibleToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11626,
                  "src": "24977:29:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20Token_$21127",
                    "typeString": "contract IERC20Token"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11612,
                    "name": "IERC20Token",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 21127,
                    "src": "24977:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                      "typeString": "contract IERC20Token"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11615,
                  "mutability": "mutable",
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11626,
                  "src": "25008:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11614,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "25008:7:10",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "24976:47:10"
            },
            "returnParameters": {
              "id": 11619,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11618,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11626,
                  "src": "25045:4:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 11617,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "25045:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "25044:6:10"
            },
            "scope": 11667,
            "src": "24939:189:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 11640,
              "nodeType": "Block",
              "src": "25341:62:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11637,
                        "name": "_smartTokens",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11630,
                        "src": "25382:12:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      ],
                      "id": 11636,
                      "name": "getConvertersByAnchors",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10847,
                      "src": "25359:22:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_contract$_IConverter_$13340_$dyn_memory_ptr_$",
                        "typeString": "function (address[] memory) view returns (contract IConverter[] memory)"
                      }
                    },
                    "id": 11638,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "25359:36:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_contract$_IConverter_$13340_$dyn_memory_ptr",
                      "typeString": "contract IConverter[] memory"
                    }
                  },
                  "functionReturnParameters": 11635,
                  "id": 11639,
                  "nodeType": "Return",
                  "src": "25352:43:10"
                }
              ]
            },
            "documentation": {
              "id": 11627,
              "nodeType": "StructuredDocumentation",
              "src": "25136:90:10",
              "text": " @dev deprecated, backward compatibility, use `getConvertersByAnchors`"
            },
            "functionSelector": "1f8e2620",
            "id": 11641,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getConvertersBySmartTokens",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 11631,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11630,
                  "mutability": "mutable",
                  "name": "_smartTokens",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11641,
                  "src": "25268:29:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 11628,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "25268:7:10",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 11629,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "25268:9:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "25267:31:10"
            },
            "returnParameters": {
              "id": 11635,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11634,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11641,
                  "src": "25320:19:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_contract$_IConverter_$13340_$dyn_memory_ptr",
                    "typeString": "contract IConverter[]"
                  },
                  "typeName": {
                    "baseType": {
                      "contractScope": null,
                      "id": 11632,
                      "name": "IConverter",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 13340,
                      "src": "25320:10:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IConverter_$13340",
                        "typeString": "contract IConverter"
                      }
                    },
                    "id": 11633,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "25320:12:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_contract$_IConverter_$13340_$dyn_storage_ptr",
                      "typeString": "contract IConverter[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "25319:21:10"
            },
            "scope": 11667,
            "src": "25232:171:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 11665,
              "nodeType": "Block",
              "src": "25659:118:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11657,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 11654,
                              "name": "_reserveTokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11645,
                              "src": "25702:14:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
                                "typeString": "contract IERC20Token[] memory"
                              }
                            },
                            "id": 11655,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "25702:21:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 11656,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "25726:1:10",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "25702:25:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 11659,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "25734:1:10",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "id": 11660,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "Conditional",
                        "src": "25702:33:10",
                        "trueExpression": {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 11658,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "25730:1:10",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11661,
                        "name": "_reserveTokens",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11645,
                        "src": "25737:14:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
                          "typeString": "contract IERC20Token[] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11662,
                        "name": "_reserveWeights",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11648,
                        "src": "25753:15:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
                          "typeString": "uint32[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
                          "typeString": "contract IERC20Token[] memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
                          "typeString": "uint32[] memory"
                        }
                      ],
                      "id": 11653,
                      "name": "getLiquidityPoolByConfig",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11031,
                      "src": "25677:24:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint16_$_t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr_$_t_array$_t_uint32_$dyn_memory_ptr_$returns$_t_contract$_IConverterAnchor_$13349_$",
                        "typeString": "function (uint16,contract IERC20Token[] memory,uint32[] memory) view returns (contract IConverterAnchor)"
                      }
                    },
                    "id": 11663,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "25677:92:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "functionReturnParameters": 11652,
                  "id": 11664,
                  "nodeType": "Return",
                  "src": "25670:99:10"
                }
              ]
            },
            "documentation": {
              "id": 11642,
              "nodeType": "StructuredDocumentation",
              "src": "25411:92:10",
              "text": " @dev deprecated, backward compatibility, use `getLiquidityPoolByConfig`"
            },
            "functionSelector": "c22b82f0",
            "id": 11666,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getLiquidityPoolByReserveConfig",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 11649,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11645,
                  "mutability": "mutable",
                  "name": "_reserveTokens",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11666,
                  "src": "25550:35:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
                    "typeString": "contract IERC20Token[]"
                  },
                  "typeName": {
                    "baseType": {
                      "contractScope": null,
                      "id": 11643,
                      "name": "IERC20Token",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 21127,
                      "src": "25550:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IERC20Token_$21127",
                        "typeString": "contract IERC20Token"
                      }
                    },
                    "id": 11644,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "25550:13:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_storage_ptr",
                      "typeString": "contract IERC20Token[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11648,
                  "mutability": "mutable",
                  "name": "_reserveWeights",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11666,
                  "src": "25587:31:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
                    "typeString": "uint32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 11646,
                      "name": "uint32",
                      "nodeType": "ElementaryTypeName",
                      "src": "25587:6:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      }
                    },
                    "id": 11647,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "25587:8:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint32_$dyn_storage_ptr",
                      "typeString": "uint32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "25549:70:10"
            },
            "returnParameters": {
              "id": 11652,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11651,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11666,
                  "src": "25641:16:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                    "typeString": "contract IConverterAnchor"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11650,
                    "name": "IConverterAnchor",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13349,
                    "src": "25641:16:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "25640:18:10"
            },
            "scope": 11667,
            "src": "25509:268:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          }
        ],
        "scope": 11668,
        "src": "1414:24366:10"
      }
    ],
    "src": "52:25730:10"
  },
  "legacyAST": {
    "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/ConverterRegistry.sol",
    "exportedSymbols": {
      "ConverterRegistry": [
        11667
      ]
    },
    "id": 11668,
    "license": "SEE LICENSE IN LICENSE",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 10246,
        "literals": [
          "solidity",
          "0.6",
          ".12"
        ],
        "nodeType": "PragmaDirective",
        "src": "52:23:10"
      },
      {
        "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/TokenHandler.sol",
        "file": "../utility/TokenHandler.sol",
        "id": 10247,
        "nodeType": "ImportDirective",
        "scope": 11668,
        "sourceUnit": 22527,
        "src": "77:37:10",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/ContractRegistryClient.sol",
        "file": "../utility/ContractRegistryClient.sol",
        "id": 10248,
        "nodeType": "ImportDirective",
        "scope": 11668,
        "sourceUnit": 21720,
        "src": "116:47:10",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/interfaces/IConverter.sol",
        "file": "./interfaces/IConverter.sol",
        "id": 10249,
        "nodeType": "ImportDirective",
        "scope": 11668,
        "sourceUnit": 13341,
        "src": "165:37:10",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/interfaces/IConverterFactory.sol",
        "file": "./interfaces/IConverterFactory.sol",
        "id": 10250,
        "nodeType": "ImportDirective",
        "scope": 11668,
        "sourceUnit": 13390,
        "src": "204:44:10",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/interfaces/IConverterRegistry.sol",
        "file": "./interfaces/IConverterRegistry.sol",
        "id": 10251,
        "nodeType": "ImportDirective",
        "scope": 11668,
        "sourceUnit": 13502,
        "src": "250:45:10",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/interfaces/IConverterRegistryData.sol",
        "file": "./interfaces/IConverterRegistryData.sol",
        "id": 10252,
        "nodeType": "ImportDirective",
        "scope": 11668,
        "sourceUnit": 13648,
        "src": "297:49:10",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/token/interfaces/ISmartToken.sol",
        "file": "../token/interfaces/ISmartToken.sol",
        "id": 10253,
        "nodeType": "ImportDirective",
        "scope": 11668,
        "sourceUnit": 21183,
        "src": "348:45:10",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 10255,
              "name": "IConverterRegistry",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 13501,
              "src": "1444:18:10",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IConverterRegistry_$13501",
                "typeString": "contract IConverterRegistry"
              }
            },
            "id": 10256,
            "nodeType": "InheritanceSpecifier",
            "src": "1444:18:10"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 10257,
              "name": "ContractRegistryClient",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 21719,
              "src": "1464:22:10",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ContractRegistryClient_$21719",
                "typeString": "contract ContractRegistryClient"
              }
            },
            "id": 10258,
            "nodeType": "InheritanceSpecifier",
            "src": "1464:22:10"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 10259,
              "name": "TokenHandler",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 22526,
              "src": "1488:12:10",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_TokenHandler_$22526",
                "typeString": "contract TokenHandler"
              }
            },
            "id": 10260,
            "nodeType": "InheritanceSpecifier",
            "src": "1488:12:10"
          }
        ],
        "contractDependencies": [
          13501,
          21719,
          21818,
          22526,
          22661,
          22847
        ],
        "contractKind": "contract",
        "documentation": {
          "id": 10254,
          "nodeType": "StructuredDocumentation",
          "src": "397:1015:10",
          "text": " @dev The ConverterRegistry maintains a list of all active converters in the Bancor Network.\n Since converters can be upgraded and thus their address can change, the registry actually keeps\n converter anchors internally and not the converters themselves.\n The active converter for each anchor can be easily accessed by querying the anchor's owner.\n The registry exposes 3 differnet lists that can be accessed and iterated, based on the use-case of the caller:\n - Anchors - can be used to get all the latest / historical data in the network\n - Liquidity pools - can be used to get all liquidity pools for funding, liquidation etc.\n - Convertible tokens - can be used to get all tokens that can be converted in the network (excluding pool\n   tokens), and for each one - all anchors that hold it in their reserves\n The contract fires events whenever one of the primitives is added to or removed from the registry\n The contract is upgradable."
        },
        "fullyImplemented": true,
        "id": 11667,
        "linearizedBaseContracts": [
          11667,
          22526,
          21719,
          22661,
          21818,
          22847,
          13501
        ],
        "name": "ConverterRegistry",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "anonymous": false,
            "documentation": {
              "id": 10261,
              "nodeType": "StructuredDocumentation",
              "src": "1508:129:10",
              "text": " @dev triggered when a converter anchor is added to the registry\n @param _anchor smart token"
            },
            "id": 10265,
            "name": "ConverterAnchorAdded",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 10264,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10263,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "_anchor",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10265,
                  "src": "1670:32:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                    "typeString": "contract IConverterAnchor"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10262,
                    "name": "IConverterAnchor",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13349,
                    "src": "1670:16:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1669:34:10"
            },
            "src": "1643:61:10"
          },
          {
            "anonymous": false,
            "documentation": {
              "id": 10266,
              "nodeType": "StructuredDocumentation",
              "src": "1712:133:10",
              "text": " @dev triggered when a converter anchor is removed from the registry\n @param _anchor smart token"
            },
            "id": 10270,
            "name": "ConverterAnchorRemoved",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 10269,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10268,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "_anchor",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10270,
                  "src": "1880:32:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                    "typeString": "contract IConverterAnchor"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10267,
                    "name": "IConverterAnchor",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13349,
                    "src": "1880:16:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1879:34:10"
            },
            "src": "1851:63:10"
          },
          {
            "anonymous": false,
            "documentation": {
              "id": 10271,
              "nodeType": "StructuredDocumentation",
              "src": "1922:137:10",
              "text": " @dev triggered when a liquidity pool is added to the registry\n @param _liquidityPool liquidity pool"
            },
            "id": 10275,
            "name": "LiquidityPoolAdded",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 10274,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10273,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "_liquidityPool",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10275,
                  "src": "2090:39:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                    "typeString": "contract IConverterAnchor"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10272,
                    "name": "IConverterAnchor",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13349,
                    "src": "2090:16:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2089:41:10"
            },
            "src": "2065:66:10"
          },
          {
            "anonymous": false,
            "documentation": {
              "id": 10276,
              "nodeType": "StructuredDocumentation",
              "src": "2139:141:10",
              "text": " @dev triggered when a liquidity pool is removed from the registry\n @param _liquidityPool liquidity pool"
            },
            "id": 10280,
            "name": "LiquidityPoolRemoved",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 10279,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10278,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "_liquidityPool",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10280,
                  "src": "2313:39:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                    "typeString": "contract IConverterAnchor"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10277,
                    "name": "IConverterAnchor",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13349,
                    "src": "2313:16:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2312:41:10"
            },
            "src": "2286:68:10"
          },
          {
            "anonymous": false,
            "documentation": {
              "id": 10281,
              "nodeType": "StructuredDocumentation",
              "src": "2362:197:10",
              "text": " @dev triggered when a convertible token is added to the registry\n @param _convertibleToken convertible token\n @param _smartToken associated smart token"
            },
            "id": 10287,
            "name": "ConvertibleTokenAdded",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 10286,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10283,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "_convertibleToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10287,
                  "src": "2593:37:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20Token_$21127",
                    "typeString": "contract IERC20Token"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10282,
                    "name": "IERC20Token",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 21127,
                    "src": "2593:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                      "typeString": "contract IERC20Token"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10285,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "_smartToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10287,
                  "src": "2632:36:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                    "typeString": "contract IConverterAnchor"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10284,
                    "name": "IConverterAnchor",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13349,
                    "src": "2632:16:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2592:77:10"
            },
            "src": "2565:105:10"
          },
          {
            "anonymous": false,
            "documentation": {
              "id": 10288,
              "nodeType": "StructuredDocumentation",
              "src": "2678:201:10",
              "text": " @dev triggered when a convertible token is removed from the registry\n @param _convertibleToken convertible token\n @param _smartToken associated smart token"
            },
            "id": 10294,
            "name": "ConvertibleTokenRemoved",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 10293,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10290,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "_convertibleToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10294,
                  "src": "2915:37:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20Token_$21127",
                    "typeString": "contract IERC20Token"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10289,
                    "name": "IERC20Token",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 21127,
                    "src": "2915:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                      "typeString": "contract IERC20Token"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10292,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "_smartToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10294,
                  "src": "2954:36:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                    "typeString": "contract IConverterAnchor"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10291,
                    "name": "IConverterAnchor",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13349,
                    "src": "2954:16:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2914:77:10"
            },
            "src": "2885:107:10"
          },
          {
            "anonymous": false,
            "documentation": {
              "id": 10295,
              "nodeType": "StructuredDocumentation",
              "src": "3000:88:10",
              "text": " @dev deprecated, backward compatibility, use `ConverterAnchorAdded`"
            },
            "id": 10299,
            "name": "SmartTokenAdded",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 10298,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10297,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "_smartToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10299,
                  "src": "3116:36:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                    "typeString": "contract IConverterAnchor"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10296,
                    "name": "IConverterAnchor",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13349,
                    "src": "3116:16:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3115:38:10"
            },
            "src": "3094:60:10"
          },
          {
            "anonymous": false,
            "documentation": {
              "id": 10300,
              "nodeType": "StructuredDocumentation",
              "src": "3162:90:10",
              "text": " @dev deprecated, backward compatibility, use `ConverterAnchorRemoved`"
            },
            "id": 10304,
            "name": "SmartTokenRemoved",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 10303,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10302,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "_smartToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10304,
                  "src": "3282:36:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                    "typeString": "contract IConverterAnchor"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10301,
                    "name": "IConverterAnchor",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13349,
                    "src": "3282:16:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3281:38:10"
            },
            "src": "3258:62:10"
          },
          {
            "body": {
              "id": 10313,
              "nodeType": "Block",
              "src": "3561:8:10",
              "statements": []
            },
            "documentation": {
              "id": 10305,
              "nodeType": "StructuredDocumentation",
              "src": "3328:145:10",
              "text": " @dev initializes a new ConverterRegistry instance\n @param _registry address of a contract registry contract"
            },
            "id": 10314,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 10310,
                    "name": "_registry",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 10307,
                    "src": "3543:9:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IContractRegistry_$22831",
                      "typeString": "contract IContractRegistry"
                    }
                  }
                ],
                "id": 10311,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 10309,
                  "name": "ContractRegistryClient",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 21719,
                  "src": "3520:22:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_ContractRegistryClient_$21719_$",
                    "typeString": "type(contract ContractRegistryClient)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3520:33:10"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 10308,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10307,
                  "mutability": "mutable",
                  "name": "_registry",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10314,
                  "src": "3491:27:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IContractRegistry_$22831",
                    "typeString": "contract IContractRegistry"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10306,
                    "name": "IContractRegistry",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22831,
                    "src": "3491:17:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IContractRegistry_$22831",
                      "typeString": "contract IContractRegistry"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3490:29:10"
            },
            "returnParameters": {
              "id": 10312,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3561:0:10"
            },
            "scope": 11667,
            "src": "3479:90:10",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10453,
              "nodeType": "Block",
              "src": "4488:991:10",
              "statements": [
                {
                  "assignments": [
                    10337
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 10337,
                      "mutability": "mutable",
                      "name": "length",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10453,
                      "src": "4499:14:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 10336,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4499:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 10340,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 10338,
                      "name": "_reserveTokens",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10328,
                      "src": "4516:14:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
                        "typeString": "contract IERC20Token[] memory"
                      }
                    },
                    "id": 10339,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "4516:21:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4499:38:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 10345,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 10342,
                          "name": "length",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10337,
                          "src": "4556:6:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 10343,
                            "name": "_reserveWeights",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10331,
                            "src": "4566:15:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
                              "typeString": "uint32[] memory"
                            }
                          },
                          "id": 10344,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "4566:22:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "4556:32:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4552525f494e56414c49445f5245534552564553",
                        "id": 10346,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4590:22:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_d9402087dd8193cd0dfdf2ea32d5d892390e5da6cfb95c2d9c82b55c80bcce77",
                          "typeString": "literal_string \"ERR_INVALID_RESERVES\""
                        },
                        "value": "ERR_INVALID_RESERVES"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_d9402087dd8193cd0dfdf2ea32d5d892390e5da6cfb95c2d9c82b55c80bcce77",
                          "typeString": "literal_string \"ERR_INVALID_RESERVES\""
                        }
                      ],
                      "id": 10341,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "4548:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 10347,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4548:65:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10348,
                  "nodeType": "ExpressionStatement",
                  "src": "4548:65:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        },
                        "id": 10358,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10351,
                              "name": "_type",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10317,
                              "src": "4657:5:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10352,
                              "name": "_reserveTokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10328,
                              "src": "4664:14:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
                                "typeString": "contract IERC20Token[] memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10353,
                              "name": "_reserveWeights",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10331,
                              "src": "4680:15:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
                                "typeString": "uint32[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              },
                              {
                                "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
                                "typeString": "contract IERC20Token[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
                                "typeString": "uint32[] memory"
                              }
                            ],
                            "id": 10350,
                            "name": "getLiquidityPoolByConfig",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11031,
                            "src": "4632:24:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint16_$_t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr_$_t_array$_t_uint32_$dyn_memory_ptr_$returns$_t_contract$_IConverterAnchor_$13349_$",
                              "typeString": "function (uint16,contract IERC20Token[] memory,uint32[] memory) view returns (contract IConverterAnchor)"
                            }
                          },
                          "id": 10354,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4632:64:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                            "typeString": "contract IConverterAnchor"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 10356,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4717:1:10",
                              "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": 10355,
                            "name": "IConverterAnchor",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13349,
                            "src": "4700:16:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_IConverterAnchor_$13349_$",
                              "typeString": "type(contract IConverterAnchor)"
                            }
                          },
                          "id": 10357,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4700:19:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                            "typeString": "contract IConverterAnchor"
                          }
                        },
                        "src": "4632:87:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4552525f414c52454144595f455849535453",
                        "id": 10359,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4721:20:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_dee3679442264532ea8006772293a0d73a73c45dea71a562b7f372acad036a5c",
                          "typeString": "literal_string \"ERR_ALREADY_EXISTS\""
                        },
                        "value": "ERR_ALREADY_EXISTS"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_dee3679442264532ea8006772293a0d73a73c45dea71a562b7f372acad036a5c",
                          "typeString": "literal_string \"ERR_ALREADY_EXISTS\""
                        }
                      ],
                      "id": 10349,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "4624:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 10360,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4624:118:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10361,
                  "nodeType": "ExpressionStatement",
                  "src": "4624:118:10"
                },
                {
                  "assignments": [
                    10363
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 10363,
                      "mutability": "mutable",
                      "name": "factory",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10453,
                      "src": "4755:25:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IConverterFactory_$13389",
                        "typeString": "contract IConverterFactory"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 10362,
                        "name": "IConverterFactory",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 13389,
                        "src": "4755:17:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterFactory_$13389",
                          "typeString": "contract IConverterFactory"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 10369,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 10366,
                            "name": "CONVERTER_FACTORY",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21536,
                            "src": "4811:17:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 10365,
                          "name": "addressOf",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21718,
                          "src": "4801:9:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                            "typeString": "function (bytes32) view returns (address)"
                          }
                        },
                        "id": 10367,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4801:28:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 10364,
                      "name": "IConverterFactory",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13389,
                      "src": "4783:17:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_IConverterFactory_$13389_$",
                        "typeString": "type(contract IConverterFactory)"
                      }
                    },
                    "id": 10368,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4783:47:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterFactory_$13389",
                      "typeString": "contract IConverterFactory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4755:75:10"
                },
                {
                  "assignments": [
                    10371
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 10371,
                      "mutability": "mutable",
                      "name": "anchor",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10453,
                      "src": "4841:23:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                        "typeString": "contract IConverterAnchor"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 10370,
                        "name": "IConverterAnchor",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 13349,
                        "src": "4841:16:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 10381,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 10375,
                            "name": "_type",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10317,
                            "src": "4905:5:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 10376,
                            "name": "_name",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10319,
                            "src": "4912:5:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 10377,
                            "name": "_symbol",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10321,
                            "src": "4919:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 10378,
                            "name": "_decimals",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10323,
                            "src": "4928:9:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 10373,
                            "name": "factory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10363,
                            "src": "4884:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IConverterFactory_$13389",
                              "typeString": "contract IConverterFactory"
                            }
                          },
                          "id": 10374,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "createAnchor",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 13368,
                          "src": "4884:20:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_uint16_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint8_$returns$_t_contract$_IConverterAnchor_$13349_$",
                            "typeString": "function (uint16,string memory,string memory,uint8) external returns (contract IConverterAnchor)"
                          }
                        },
                        "id": 10379,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4884:54:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      ],
                      "id": 10372,
                      "name": "IConverterAnchor",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13349,
                      "src": "4867:16:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_IConverterAnchor_$13349_$",
                        "typeString": "type(contract IConverterAnchor)"
                      }
                    },
                    "id": 10380,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4867:72:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4841:98:10"
                },
                {
                  "assignments": [
                    10383
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 10383,
                      "mutability": "mutable",
                      "name": "converter",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10453,
                      "src": "4950:20:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IConverter_$13340",
                        "typeString": "contract IConverter"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 10382,
                        "name": "IConverter",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 13340,
                        "src": "4950:10:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 10393,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 10387,
                            "name": "_type",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10317,
                            "src": "5008:5:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 10388,
                            "name": "anchor",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10371,
                            "src": "5015:6:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                              "typeString": "contract IConverterAnchor"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 10389,
                            "name": "registry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21562,
                            "src": "5023:8:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IContractRegistry_$22831",
                              "typeString": "contract IContractRegistry"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 10390,
                            "name": "_maxConversionFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10325,
                            "src": "5033:17:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            },
                            {
                              "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                              "typeString": "contract IConverterAnchor"
                            },
                            {
                              "typeIdentifier": "t_contract$_IContractRegistry_$22831",
                              "typeString": "contract IContractRegistry"
                            },
                            {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 10385,
                            "name": "factory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10363,
                            "src": "4984:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IConverterFactory_$13389",
                              "typeString": "contract IConverterFactory"
                            }
                          },
                          "id": 10386,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "createConverter",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 13381,
                          "src": "4984:23:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_uint16_$_t_contract$_IConverterAnchor_$13349_$_t_contract$_IContractRegistry_$22831_$_t_uint32_$returns$_t_contract$_IConverter_$13340_$",
                            "typeString": "function (uint16,contract IConverterAnchor,contract IContractRegistry,uint32) external returns (contract IConverter)"
                          }
                        },
                        "id": 10391,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4984:67:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      ],
                      "id": 10384,
                      "name": "IConverter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13340,
                      "src": "4973:10:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_IConverter_$13340_$",
                        "typeString": "type(contract IConverter)"
                      }
                    },
                    "id": 10392,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4973:79:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverter_$13340",
                      "typeString": "contract IConverter"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4950:102:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 10394,
                        "name": "anchor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10371,
                        "src": "5065:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      },
                      "id": 10396,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "acceptOwnership",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22846,
                      "src": "5065:22:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$__$returns$__$",
                        "typeString": "function () external"
                      }
                    },
                    "id": 10397,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5065:24:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10398,
                  "nodeType": "ExpressionStatement",
                  "src": "5065:24:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 10399,
                        "name": "converter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10383,
                        "src": "5100:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      "id": 10401,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "acceptOwnership",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22846,
                      "src": "5100:25:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$__$returns$__$",
                        "typeString": "function () external"
                      }
                    },
                    "id": 10402,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5100:27:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10403,
                  "nodeType": "ExpressionStatement",
                  "src": "5100:27:10"
                },
                {
                  "body": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 10417,
                            "name": "_reserveTokens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10328,
                            "src": "5211:14:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
                              "typeString": "contract IERC20Token[] memory"
                            }
                          },
                          "id": 10419,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 10418,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10405,
                            "src": "5226:1:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5211:17:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20Token_$21127",
                            "typeString": "contract IERC20Token"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 10420,
                            "name": "_reserveWeights",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10331,
                            "src": "5230:15:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
                              "typeString": "uint32[] memory"
                            }
                          },
                          "id": 10422,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 10421,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10405,
                            "src": "5246:1:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5230:18:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_IERC20Token_$21127",
                            "typeString": "contract IERC20Token"
                          },
                          {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 10414,
                          "name": "converter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10383,
                          "src": "5190:9:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IConverter_$13340",
                            "typeString": "contract IConverter"
                          }
                        },
                        "id": 10416,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "addReserve",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 13292,
                        "src": "5190:20:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_nonpayable$_t_contract$_IERC20Token_$21127_$_t_uint32_$returns$__$",
                          "typeString": "function (contract IERC20Token,uint32) external"
                        }
                      },
                      "id": 10423,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5190:59:10",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 10424,
                    "nodeType": "ExpressionStatement",
                    "src": "5190:59:10"
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 10410,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 10408,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10405,
                      "src": "5160:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 10409,
                      "name": "length",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10337,
                      "src": "5164:6:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5160:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 10425,
                  "initializationExpression": {
                    "assignments": [
                      10405
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 10405,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10425,
                        "src": "5145:9:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10404,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5145:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 10407,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 10406,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5157:1:10",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "5145:13:10"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 10412,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "5172:3:10",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 10411,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10405,
                        "src": "5172:1:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 10413,
                    "nodeType": "ExpressionStatement",
                    "src": "5172:3:10"
                  },
                  "nodeType": "ForStatement",
                  "src": "5140:109:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 10431,
                            "name": "converter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10383,
                            "src": "5295:9:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IConverter_$13340",
                              "typeString": "contract IConverter"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IConverter_$13340",
                              "typeString": "contract IConverter"
                            }
                          ],
                          "id": 10430,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "5287:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 10429,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "5287:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 10432,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5287:18:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 10426,
                        "name": "anchor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10371,
                        "src": "5262:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      },
                      "id": 10428,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transferOwnership",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22843,
                      "src": "5262:24:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 10433,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5262:44:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10434,
                  "nodeType": "ExpressionStatement",
                  "src": "5262:44:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 10435,
                        "name": "converter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10383,
                        "src": "5317:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      "id": 10437,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "acceptAnchorOwnership",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13261,
                      "src": "5317:31:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$__$returns$__$",
                        "typeString": "function () external"
                      }
                    },
                    "id": 10438,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5317:33:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10439,
                  "nodeType": "ExpressionStatement",
                  "src": "5317:33:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 10443,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "5389:3:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 10444,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "5389:10:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 10440,
                        "name": "converter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10383,
                        "src": "5361:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      "id": 10442,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transferOwnership",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22843,
                      "src": "5361:27:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 10445,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5361:39:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10446,
                  "nodeType": "ExpressionStatement",
                  "src": "5361:39:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10448,
                        "name": "converter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10383,
                        "src": "5434:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      ],
                      "id": 10447,
                      "name": "addConverterInternal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11234,
                      "src": "5413:20:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IConverter_$13340_$returns$__$",
                        "typeString": "function (contract IConverter)"
                      }
                    },
                    "id": 10449,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5413:31:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10450,
                  "nodeType": "ExpressionStatement",
                  "src": "5413:31:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10451,
                    "name": "converter",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 10383,
                    "src": "5462:9:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverter_$13340",
                      "typeString": "contract IConverter"
                    }
                  },
                  "functionReturnParameters": 10335,
                  "id": 10452,
                  "nodeType": "Return",
                  "src": "5455:16:10"
                }
              ]
            },
            "documentation": {
              "id": 10315,
              "nodeType": "StructuredDocumentation",
              "src": "3577:596:10",
              "text": " @dev creates a zero supply liquid token / empty liquidity pool and adds its converter to the registry\n @param _type                converter type, see ConverterBase contract main doc\n @param _name                token / pool name\n @param _symbol              token / pool symbol\n @param _decimals            token / pool decimals\n @param _maxConversionFee    maximum conversion-fee\n @param _reserveTokens       reserve tokens\n @param _reserveWeights      reserve weights\n @return new converter"
            },
            "functionSelector": "5a0a6618",
            "id": 10454,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "newConverter",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 10332,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10317,
                  "mutability": "mutable",
                  "name": "_type",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10454,
                  "src": "4211:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 10316,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "4211:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10319,
                  "mutability": "mutable",
                  "name": "_name",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10454,
                  "src": "4234:19:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 10318,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4234:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10321,
                  "mutability": "mutable",
                  "name": "_symbol",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10454,
                  "src": "4264:21:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 10320,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4264:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10323,
                  "mutability": "mutable",
                  "name": "_decimals",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10454,
                  "src": "4296:15:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 10322,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "4296:5:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10325,
                  "mutability": "mutable",
                  "name": "_maxConversionFee",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10454,
                  "src": "4322:24:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 10324,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4322:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10328,
                  "mutability": "mutable",
                  "name": "_reserveTokens",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10454,
                  "src": "4357:35:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
                    "typeString": "contract IERC20Token[]"
                  },
                  "typeName": {
                    "baseType": {
                      "contractScope": null,
                      "id": 10326,
                      "name": "IERC20Token",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 21127,
                      "src": "4357:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IERC20Token_$21127",
                        "typeString": "contract IERC20Token"
                      }
                    },
                    "id": 10327,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "4357:13:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_storage_ptr",
                      "typeString": "contract IERC20Token[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10331,
                  "mutability": "mutable",
                  "name": "_reserveWeights",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10454,
                  "src": "4403:31:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
                    "typeString": "uint32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 10329,
                      "name": "uint32",
                      "nodeType": "ElementaryTypeName",
                      "src": "4403:6:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      }
                    },
                    "id": 10330,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "4403:8:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint32_$dyn_storage_ptr",
                      "typeString": "uint32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4200:241:10"
            },
            "returnParameters": {
              "id": 10335,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10334,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10454,
                  "src": "4471:10:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverter_$13340",
                    "typeString": "contract IConverter"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10333,
                    "name": "IConverter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13340,
                    "src": "4471:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverter_$13340",
                      "typeString": "contract IConverter"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4470:12:10"
            },
            "scope": 11667,
            "src": "4179:1300:10",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10473,
              "nodeType": "Block",
              "src": "5710:124:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 10464,
                            "name": "_converter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10457,
                            "src": "5746:10:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IConverter_$13340",
                              "typeString": "contract IConverter"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IConverter_$13340",
                              "typeString": "contract IConverter"
                            }
                          ],
                          "id": 10463,
                          "name": "isConverterValid",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10867,
                          "src": "5729:16:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_contract$_IConverter_$13340_$returns$_t_bool_$",
                            "typeString": "function (contract IConverter) view returns (bool)"
                          }
                        },
                        "id": 10465,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5729:28:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4552525f494e56414c49445f434f4e564552544552",
                        "id": 10466,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5759:23:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_29b07c9e09ddb3e03f778b1e41e2a2ddb5432c5f4862b4c497de9268b6aaf6bf",
                          "typeString": "literal_string \"ERR_INVALID_CONVERTER\""
                        },
                        "value": "ERR_INVALID_CONVERTER"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_29b07c9e09ddb3e03f778b1e41e2a2ddb5432c5f4862b4c497de9268b6aaf6bf",
                          "typeString": "literal_string \"ERR_INVALID_CONVERTER\""
                        }
                      ],
                      "id": 10462,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "5721:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 10467,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5721:62:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10468,
                  "nodeType": "ExpressionStatement",
                  "src": "5721:62:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10470,
                        "name": "_converter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10457,
                        "src": "5815:10:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      ],
                      "id": 10469,
                      "name": "addConverterInternal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11234,
                      "src": "5794:20:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IConverter_$13340_$returns$__$",
                        "typeString": "function (contract IConverter)"
                      }
                    },
                    "id": 10471,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5794:32:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10472,
                  "nodeType": "ExpressionStatement",
                  "src": "5794:32:10"
                }
              ]
            },
            "documentation": {
              "id": 10455,
              "nodeType": "StructuredDocumentation",
              "src": "5487:155:10",
              "text": " @dev adds an existing converter to the registry\n can only be called by the owner\n @param _converter converter"
            },
            "functionSelector": "6ce1c4dc",
            "id": 10474,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 10460,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 10459,
                  "name": "ownerOnly",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 21754,
                  "src": "5700:9:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5700:9:10"
              }
            ],
            "name": "addConverter",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 10458,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10457,
                  "mutability": "mutable",
                  "name": "_converter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10474,
                  "src": "5670:21:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverter_$13340",
                    "typeString": "contract IConverter"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10456,
                    "name": "IConverter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13340,
                    "src": "5670:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverter_$13340",
                      "typeString": "contract IConverter"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5669:23:10"
            },
            "returnParameters": {
              "id": 10461,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5710:0:10"
            },
            "scope": 11667,
            "src": "5648:186:10",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10497,
              "nodeType": "Block",
              "src": "6178:147:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 10489,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 10484,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 10481,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "6197:3:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 10482,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "6197:10:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 10483,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21728,
                            "src": "6211:5:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "6197:19:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 10488,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "6220:29:10",
                          "subExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 10486,
                                "name": "_converter",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10477,
                                "src": "6238:10:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IConverter_$13340",
                                  "typeString": "contract IConverter"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IConverter_$13340",
                                  "typeString": "contract IConverter"
                                }
                              ],
                              "id": 10485,
                              "name": "isConverterValid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10867,
                              "src": "6221:16:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_contract$_IConverter_$13340_$returns$_t_bool_$",
                                "typeString": "function (contract IConverter) view returns (bool)"
                              }
                            },
                            "id": 10487,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6221:28:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "6197:52:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4552525f4143434553535f44454e494544",
                        "id": 10490,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6251:19:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_f5894269650d3e1726ed81a4f48c5b62c7dd6fa025b89d639952a7012960d666",
                          "typeString": "literal_string \"ERR_ACCESS_DENIED\""
                        },
                        "value": "ERR_ACCESS_DENIED"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_f5894269650d3e1726ed81a4f48c5b62c7dd6fa025b89d639952a7012960d666",
                          "typeString": "literal_string \"ERR_ACCESS_DENIED\""
                        }
                      ],
                      "id": 10480,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "6189:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 10491,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6189:82:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10492,
                  "nodeType": "ExpressionStatement",
                  "src": "6189:82:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10494,
                        "name": "_converter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10477,
                        "src": "6306:10:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      ],
                      "id": 10493,
                      "name": "removeConverterInternal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11307,
                      "src": "6282:23:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IConverter_$13340_$returns$__$",
                        "typeString": "function (contract IConverter)"
                      }
                    },
                    "id": 10495,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6282:35:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10496,
                  "nodeType": "ExpressionStatement",
                  "src": "6282:35:10"
                }
              ]
            },
            "documentation": {
              "id": 10475,
              "nodeType": "StructuredDocumentation",
              "src": "5842:275:10",
              "text": " @dev removes a converter from the registry\n anyone can remove an existing converter from the registry, as long as the converter is invalid\n note that the owner can also remove valid converters\n @param _converter converter"
            },
            "functionSelector": "9e76a007",
            "id": 10498,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "removeConverter",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 10478,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10477,
                  "mutability": "mutable",
                  "name": "_converter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10498,
                  "src": "6148:21:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverter_$13340",
                    "typeString": "contract IConverter"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10476,
                    "name": "IConverter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13340,
                    "src": "6148:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverter_$13340",
                      "typeString": "contract IConverter"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6147:23:10"
            },
            "returnParameters": {
              "id": 10479,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6178:0:10"
            },
            "scope": 11667,
            "src": "6123:202:10",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              13397
            ],
            "body": {
              "id": 10513,
              "nodeType": "Block",
              "src": "6529:105:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 10507,
                                "name": "CONVERTER_REGISTRY_DATA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21548,
                                "src": "6580:23:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 10506,
                              "name": "addressOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21718,
                              "src": "6570:9:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                                "typeString": "function (bytes32) view returns (address)"
                              }
                            },
                            "id": 10508,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6570:34:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 10505,
                          "name": "IConverterRegistryData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13647,
                          "src": "6547:22:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
                            "typeString": "type(contract IConverterRegistryData)"
                          }
                        },
                        "id": 10509,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6547:58:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                          "typeString": "contract IConverterRegistryData"
                        }
                      },
                      "id": 10510,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getSmartTokenCount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13543,
                      "src": "6547:77:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                        "typeString": "function () view external returns (uint256)"
                      }
                    },
                    "id": 10511,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6547:79:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 10504,
                  "id": 10512,
                  "nodeType": "Return",
                  "src": "6540:86:10"
                }
              ]
            },
            "documentation": {
              "id": 10499,
              "nodeType": "StructuredDocumentation",
              "src": "6333:125:10",
              "text": " @dev returns the number of converter anchors in the registry\n @return number of anchors"
            },
            "functionSelector": "d3182bed",
            "id": 10514,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getAnchorCount",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 10501,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "6502:8:10"
            },
            "parameters": {
              "id": 10500,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6487:2:10"
            },
            "returnParameters": {
              "id": 10504,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10503,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10514,
                  "src": "6520:7:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10502,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6520:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6519:9:10"
            },
            "scope": 11667,
            "src": "6464:170:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              13403
            ],
            "body": {
              "id": 10530,
              "nodeType": "Block",
              "src": "6839:101:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 10524,
                                "name": "CONVERTER_REGISTRY_DATA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21548,
                                "src": "6890:23:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 10523,
                              "name": "addressOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21718,
                              "src": "6880:9:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                                "typeString": "function (bytes32) view returns (address)"
                              }
                            },
                            "id": 10525,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6880:34:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 10522,
                          "name": "IConverterRegistryData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13647,
                          "src": "6857:22:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
                            "typeString": "type(contract IConverterRegistryData)"
                          }
                        },
                        "id": 10526,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6857:58:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                          "typeString": "contract IConverterRegistryData"
                        }
                      },
                      "id": 10527,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getSmartTokens",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13549,
                      "src": "6857:73:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                        "typeString": "function () view external returns (address[] memory)"
                      }
                    },
                    "id": 10528,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6857:75:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                      "typeString": "address[] memory"
                    }
                  },
                  "functionReturnParameters": 10521,
                  "id": 10529,
                  "nodeType": "Return",
                  "src": "6850:82:10"
                }
              ]
            },
            "documentation": {
              "id": 10515,
              "nodeType": "StructuredDocumentation",
              "src": "6642:121:10",
              "text": " @dev returns the list of converter anchors in the registry\n @return list of anchors"
            },
            "functionSelector": "effb3c6e",
            "id": 10531,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getAnchors",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 10517,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "6803:8:10"
            },
            "parameters": {
              "id": 10516,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6788:2:10"
            },
            "returnParameters": {
              "id": 10521,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10520,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10531,
                  "src": "6821:16:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 10518,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "6821:7:10",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 10519,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "6821:9:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6820:18:10"
            },
            "scope": 11667,
            "src": "6769:171:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              13410
            ],
            "body": {
              "id": 10549,
              "nodeType": "Block",
              "src": "7189:106:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10546,
                        "name": "_index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10534,
                        "src": "7280:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 10542,
                                "name": "CONVERTER_REGISTRY_DATA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21548,
                                "src": "7240:23:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 10541,
                              "name": "addressOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21718,
                              "src": "7230:9:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                                "typeString": "function (bytes32) view returns (address)"
                              }
                            },
                            "id": 10543,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7230:34:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 10540,
                          "name": "IConverterRegistryData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13647,
                          "src": "7207:22:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
                            "typeString": "type(contract IConverterRegistryData)"
                          }
                        },
                        "id": 10544,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7207:58:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                          "typeString": "contract IConverterRegistryData"
                        }
                      },
                      "id": 10545,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getSmartToken",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13556,
                      "src": "7207:72:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_contract$_IConverterAnchor_$13349_$",
                        "typeString": "function (uint256) view external returns (contract IConverterAnchor)"
                      }
                    },
                    "id": 10547,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7207:80:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "functionReturnParameters": 10539,
                  "id": 10548,
                  "nodeType": "Return",
                  "src": "7200:87:10"
                }
              ]
            },
            "documentation": {
              "id": 10532,
              "nodeType": "StructuredDocumentation",
              "src": "6948:152:10",
              "text": " @dev returns the converter anchor at a given index\n @param _index index\n @return anchor at the given index"
            },
            "functionSelector": "4c7df18f",
            "id": 10550,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getAnchor",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 10536,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "7153:8:10"
            },
            "parameters": {
              "id": 10535,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10534,
                  "mutability": "mutable",
                  "name": "_index",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10550,
                  "src": "7125:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10533,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7125:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7124:16:10"
            },
            "returnParameters": {
              "id": 10539,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10538,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10550,
                  "src": "7171:16:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                    "typeString": "contract IConverterAnchor"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10537,
                    "name": "IConverterAnchor",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13349,
                    "src": "7171:16:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7170:18:10"
            },
            "scope": 11667,
            "src": "7106:189:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              13417
            ],
            "body": {
              "id": 10568,
              "nodeType": "Block",
              "src": "7568:105:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10565,
                        "name": "_value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10553,
                        "src": "7658:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 10561,
                                "name": "CONVERTER_REGISTRY_DATA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21548,
                                "src": "7619:23:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 10560,
                              "name": "addressOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21718,
                              "src": "7609:9:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                                "typeString": "function (bytes32) view returns (address)"
                              }
                            },
                            "id": 10562,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7609:34:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 10559,
                          "name": "IConverterRegistryData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13647,
                          "src": "7586:22:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
                            "typeString": "type(contract IConverterRegistryData)"
                          }
                        },
                        "id": 10563,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7586:58:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                          "typeString": "contract IConverterRegistryData"
                        }
                      },
                      "id": 10564,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "isSmartToken",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13563,
                      "src": "7586:71:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$",
                        "typeString": "function (address) view external returns (bool)"
                      }
                    },
                    "id": 10566,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7586:79:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 10558,
                  "id": 10567,
                  "nodeType": "Return",
                  "src": "7579:86:10"
                }
              ]
            },
            "documentation": {
              "id": 10551,
              "nodeType": "StructuredDocumentation",
              "src": "7303:189:10",
              "text": " @dev checks whether or not a given value is a converter anchor\n @param _value value\n @return true if the given value is an anchor, false if not"
            },
            "functionSelector": "d8cced2a",
            "id": 10569,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isAnchor",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 10555,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "7544:8:10"
            },
            "parameters": {
              "id": 10554,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10553,
                  "mutability": "mutable",
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10569,
                  "src": "7516:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10552,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7516:7:10",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7515:16:10"
            },
            "returnParameters": {
              "id": 10558,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10557,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10569,
                  "src": "7562:4:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 10556,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "7562:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7561:6:10"
            },
            "scope": 11667,
            "src": "7498:175:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              13422
            ],
            "body": {
              "id": 10584,
              "nodeType": "Block",
              "src": "7890:108:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 10578,
                                "name": "CONVERTER_REGISTRY_DATA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21548,
                                "src": "7941:23:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 10577,
                              "name": "addressOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21718,
                              "src": "7931:9:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                                "typeString": "function (bytes32) view returns (address)"
                              }
                            },
                            "id": 10579,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7931:34:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 10576,
                          "name": "IConverterRegistryData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13647,
                          "src": "7908:22:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
                            "typeString": "type(contract IConverterRegistryData)"
                          }
                        },
                        "id": 10580,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7908:58:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                          "typeString": "contract IConverterRegistryData"
                        }
                      },
                      "id": 10581,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getLiquidityPoolCount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13568,
                      "src": "7908:80:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                        "typeString": "function () view external returns (uint256)"
                      }
                    },
                    "id": 10582,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7908:82:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 10575,
                  "id": 10583,
                  "nodeType": "Return",
                  "src": "7901:89:10"
                }
              ]
            },
            "documentation": {
              "id": 10570,
              "nodeType": "StructuredDocumentation",
              "src": "7681:131:10",
              "text": " @dev returns the number of liquidity pools in the registry\n @return number of liquidity pools"
            },
            "functionSelector": "7a5f0ffd",
            "id": 10585,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getLiquidityPoolCount",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 10572,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "7863:8:10"
            },
            "parameters": {
              "id": 10571,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7848:2:10"
            },
            "returnParameters": {
              "id": 10575,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10574,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10585,
                  "src": "7881:7:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10573,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7881:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7880:9:10"
            },
            "scope": 11667,
            "src": "7818:180:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              13428
            ],
            "body": {
              "id": 10601,
              "nodeType": "Block",
              "src": "8216:104:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 10595,
                                "name": "CONVERTER_REGISTRY_DATA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21548,
                                "src": "8267:23:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 10594,
                              "name": "addressOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21718,
                              "src": "8257:9:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                                "typeString": "function (bytes32) view returns (address)"
                              }
                            },
                            "id": 10596,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8257:34:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 10593,
                          "name": "IConverterRegistryData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13647,
                          "src": "8234:22:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
                            "typeString": "type(contract IConverterRegistryData)"
                          }
                        },
                        "id": 10597,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8234:58:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                          "typeString": "contract IConverterRegistryData"
                        }
                      },
                      "id": 10598,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getLiquidityPools",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13574,
                      "src": "8234:76:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                        "typeString": "function () view external returns (address[] memory)"
                      }
                    },
                    "id": 10599,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8234:78:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                      "typeString": "address[] memory"
                    }
                  },
                  "functionReturnParameters": 10592,
                  "id": 10600,
                  "nodeType": "Return",
                  "src": "8227:85:10"
                }
              ]
            },
            "documentation": {
              "id": 10586,
              "nodeType": "StructuredDocumentation",
              "src": "8006:127:10",
              "text": " @dev returns the list of liquidity pools in the registry\n @return list of liquidity pools"
            },
            "functionSelector": "7f45c4c3",
            "id": 10602,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getLiquidityPools",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 10588,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "8180:8:10"
            },
            "parameters": {
              "id": 10587,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8165:2:10"
            },
            "returnParameters": {
              "id": 10592,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10591,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10602,
                  "src": "8198:16:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 10589,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "8198:7:10",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 10590,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "8198:9:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8197:18:10"
            },
            "scope": 11667,
            "src": "8139:181:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              13435
            ],
            "body": {
              "id": 10620,
              "nodeType": "Block",
              "src": "8582:109:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10617,
                        "name": "_index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10605,
                        "src": "8676:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 10613,
                                "name": "CONVERTER_REGISTRY_DATA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21548,
                                "src": "8633:23:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 10612,
                              "name": "addressOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21718,
                              "src": "8623:9:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                                "typeString": "function (bytes32) view returns (address)"
                              }
                            },
                            "id": 10614,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8623:34:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 10611,
                          "name": "IConverterRegistryData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13647,
                          "src": "8600:22:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
                            "typeString": "type(contract IConverterRegistryData)"
                          }
                        },
                        "id": 10615,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8600:58:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                          "typeString": "contract IConverterRegistryData"
                        }
                      },
                      "id": 10616,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getLiquidityPool",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13581,
                      "src": "8600:75:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_contract$_IConverterAnchor_$13349_$",
                        "typeString": "function (uint256) view external returns (contract IConverterAnchor)"
                      }
                    },
                    "id": 10618,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8600:83:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "functionReturnParameters": 10610,
                  "id": 10619,
                  "nodeType": "Return",
                  "src": "8593:90:10"
                }
              ]
            },
            "documentation": {
              "id": 10603,
              "nodeType": "StructuredDocumentation",
              "src": "8328:158:10",
              "text": " @dev returns the liquidity pool at a given index\n @param _index index\n @return liquidity pool at the given index"
            },
            "functionSelector": "a74498aa",
            "id": 10621,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getLiquidityPool",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 10607,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "8546:8:10"
            },
            "parameters": {
              "id": 10606,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10605,
                  "mutability": "mutable",
                  "name": "_index",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10621,
                  "src": "8518:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10604,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8518:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8517:16:10"
            },
            "returnParameters": {
              "id": 10610,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10609,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10621,
                  "src": "8564:16:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                    "typeString": "contract IConverterAnchor"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10608,
                    "name": "IConverterAnchor",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13349,
                    "src": "8564:16:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8563:18:10"
            },
            "scope": 11667,
            "src": "8492:199:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              13442
            ],
            "body": {
              "id": 10639,
              "nodeType": "Block",
              "src": "8976:108:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10636,
                        "name": "_value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10624,
                        "src": "9069:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 10632,
                                "name": "CONVERTER_REGISTRY_DATA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21548,
                                "src": "9027:23:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 10631,
                              "name": "addressOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21718,
                              "src": "9017:9:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                                "typeString": "function (bytes32) view returns (address)"
                              }
                            },
                            "id": 10633,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9017:34:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 10630,
                          "name": "IConverterRegistryData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13647,
                          "src": "8994:22:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
                            "typeString": "type(contract IConverterRegistryData)"
                          }
                        },
                        "id": 10634,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8994:58:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                          "typeString": "contract IConverterRegistryData"
                        }
                      },
                      "id": 10635,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "isLiquidityPool",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13588,
                      "src": "8994:74:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$",
                        "typeString": "function (address) view external returns (bool)"
                      }
                    },
                    "id": 10637,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8994:82:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 10629,
                  "id": 10638,
                  "nodeType": "Return",
                  "src": "8987:89:10"
                }
              ]
            },
            "documentation": {
              "id": 10622,
              "nodeType": "StructuredDocumentation",
              "src": "8699:194:10",
              "text": " @dev checks whether or not a given value is a liquidity pool\n @param _value value\n @return true if the given value is a liquidity pool, false if not"
            },
            "functionSelector": "e85455d7",
            "id": 10640,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isLiquidityPool",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 10626,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "8952:8:10"
            },
            "parameters": {
              "id": 10625,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10624,
                  "mutability": "mutable",
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10640,
                  "src": "8924:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10623,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8924:7:10",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8923:16:10"
            },
            "returnParameters": {
              "id": 10629,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10628,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10640,
                  "src": "8970:4:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 10627,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "8970:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8969:6:10"
            },
            "scope": 11667,
            "src": "8899:185:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              13447
            ],
            "body": {
              "id": 10655,
              "nodeType": "Block",
              "src": "9310:111:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 10649,
                                "name": "CONVERTER_REGISTRY_DATA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21548,
                                "src": "9361:23:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 10648,
                              "name": "addressOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21718,
                              "src": "9351:9:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                                "typeString": "function (bytes32) view returns (address)"
                              }
                            },
                            "id": 10650,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9351:34:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 10647,
                          "name": "IConverterRegistryData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13647,
                          "src": "9328:22:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
                            "typeString": "type(contract IConverterRegistryData)"
                          }
                        },
                        "id": 10651,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9328:58:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                          "typeString": "contract IConverterRegistryData"
                        }
                      },
                      "id": 10652,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getConvertibleTokenCount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13593,
                      "src": "9328:83:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                        "typeString": "function () view external returns (uint256)"
                      }
                    },
                    "id": 10653,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9328:85:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 10646,
                  "id": 10654,
                  "nodeType": "Return",
                  "src": "9321:92:10"
                }
              ]
            },
            "documentation": {
              "id": 10641,
              "nodeType": "StructuredDocumentation",
              "src": "9092:137:10",
              "text": " @dev returns the number of convertible tokens in the registry\n @return number of convertible tokens"
            },
            "functionSelector": "69be4784",
            "id": 10656,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getConvertibleTokenCount",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 10643,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "9283:8:10"
            },
            "parameters": {
              "id": 10642,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9268:2:10"
            },
            "returnParameters": {
              "id": 10646,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10645,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10656,
                  "src": "9301:7:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10644,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9301:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9300:9:10"
            },
            "scope": 11667,
            "src": "9235:186:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              13453
            ],
            "body": {
              "id": 10672,
              "nodeType": "Block",
              "src": "9648:107:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 10666,
                                "name": "CONVERTER_REGISTRY_DATA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21548,
                                "src": "9699:23:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 10665,
                              "name": "addressOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21718,
                              "src": "9689:9:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                                "typeString": "function (bytes32) view returns (address)"
                              }
                            },
                            "id": 10667,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9689:34:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 10664,
                          "name": "IConverterRegistryData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13647,
                          "src": "9666:22:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
                            "typeString": "type(contract IConverterRegistryData)"
                          }
                        },
                        "id": 10668,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9666:58:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                          "typeString": "contract IConverterRegistryData"
                        }
                      },
                      "id": 10669,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getConvertibleTokens",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13599,
                      "src": "9666:79:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                        "typeString": "function () view external returns (address[] memory)"
                      }
                    },
                    "id": 10670,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9666:81:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                      "typeString": "address[] memory"
                    }
                  },
                  "functionReturnParameters": 10663,
                  "id": 10671,
                  "nodeType": "Return",
                  "src": "9659:88:10"
                }
              ]
            },
            "documentation": {
              "id": 10657,
              "nodeType": "StructuredDocumentation",
              "src": "9429:133:10",
              "text": " @dev returns the list of convertible tokens in the registry\n @return list of convertible tokens"
            },
            "functionSelector": "5f1b50fe",
            "id": 10673,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getConvertibleTokens",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 10659,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "9612:8:10"
            },
            "parameters": {
              "id": 10658,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9597:2:10"
            },
            "returnParameters": {
              "id": 10663,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10662,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10673,
                  "src": "9630:16:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 10660,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "9630:7:10",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 10661,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "9630:9:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9629:18:10"
            },
            "scope": 11667,
            "src": "9568:187:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              13460
            ],
            "body": {
              "id": 10691,
              "nodeType": "Block",
              "src": "10021:112:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10688,
                        "name": "_index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10676,
                        "src": "10118:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 10684,
                                "name": "CONVERTER_REGISTRY_DATA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21548,
                                "src": "10072:23:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 10683,
                              "name": "addressOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21718,
                              "src": "10062:9:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                                "typeString": "function (bytes32) view returns (address)"
                              }
                            },
                            "id": 10685,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10062:34:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 10682,
                          "name": "IConverterRegistryData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13647,
                          "src": "10039:22:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
                            "typeString": "type(contract IConverterRegistryData)"
                          }
                        },
                        "id": 10686,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10039:58:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                          "typeString": "contract IConverterRegistryData"
                        }
                      },
                      "id": 10687,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getConvertibleToken",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13606,
                      "src": "10039:78:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_contract$_IERC20Token_$21127_$",
                        "typeString": "function (uint256) view external returns (contract IERC20Token)"
                      }
                    },
                    "id": 10689,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10039:86:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                      "typeString": "contract IERC20Token"
                    }
                  },
                  "functionReturnParameters": 10681,
                  "id": 10690,
                  "nodeType": "Return",
                  "src": "10032:93:10"
                }
              ]
            },
            "documentation": {
              "id": 10674,
              "nodeType": "StructuredDocumentation",
              "src": "9763:164:10",
              "text": " @dev returns the convertible token at a given index\n @param _index index\n @return convertible token at the given index"
            },
            "functionSelector": "865cf194",
            "id": 10692,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getConvertibleToken",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 10678,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "9990:8:10"
            },
            "parameters": {
              "id": 10677,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10676,
                  "mutability": "mutable",
                  "name": "_index",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10692,
                  "src": "9962:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10675,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9962:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9961:16:10"
            },
            "returnParameters": {
              "id": 10681,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10680,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10692,
                  "src": "10008:11:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20Token_$21127",
                    "typeString": "contract IERC20Token"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10679,
                    "name": "IERC20Token",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 21127,
                    "src": "10008:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                      "typeString": "contract IERC20Token"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10007:13:10"
            },
            "scope": 11667,
            "src": "9933:200:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              13467
            ],
            "body": {
              "id": 10710,
              "nodeType": "Block",
              "src": "10427:111:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10707,
                        "name": "_value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10695,
                        "src": "10523:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 10703,
                                "name": "CONVERTER_REGISTRY_DATA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21548,
                                "src": "10478:23:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 10702,
                              "name": "addressOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21718,
                              "src": "10468:9:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                                "typeString": "function (bytes32) view returns (address)"
                              }
                            },
                            "id": 10704,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10468:34:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 10701,
                          "name": "IConverterRegistryData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13647,
                          "src": "10445:22:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
                            "typeString": "type(contract IConverterRegistryData)"
                          }
                        },
                        "id": 10705,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10445:58:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                          "typeString": "contract IConverterRegistryData"
                        }
                      },
                      "id": 10706,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "isConvertibleToken",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13613,
                      "src": "10445:77:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$",
                        "typeString": "function (address) view external returns (bool)"
                      }
                    },
                    "id": 10708,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10445:85:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 10700,
                  "id": 10709,
                  "nodeType": "Return",
                  "src": "10438:92:10"
                }
              ]
            },
            "documentation": {
              "id": 10693,
              "nodeType": "StructuredDocumentation",
              "src": "10141:200:10",
              "text": " @dev checks whether or not a given value is a convertible token\n @param _value value\n @return true if the given value is a convertible token, false if not"
            },
            "functionSelector": "3ab8857c",
            "id": 10711,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isConvertibleToken",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 10697,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "10403:8:10"
            },
            "parameters": {
              "id": 10696,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10695,
                  "mutability": "mutable",
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10711,
                  "src": "10375:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10694,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10375:7:10",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10374:16:10"
            },
            "returnParameters": {
              "id": 10700,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10699,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10711,
                  "src": "10421:4:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 10698,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "10421:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10420:6:10"
            },
            "scope": 11667,
            "src": "10347:191:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              13474
            ],
            "body": {
              "id": 10729,
              "nodeType": "Block",
              "src": "10909:138:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10726,
                        "name": "_convertibleToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10714,
                        "src": "11021:17:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 10722,
                                "name": "CONVERTER_REGISTRY_DATA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21548,
                                "src": "10960:23:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 10721,
                              "name": "addressOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21718,
                              "src": "10950:9:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                                "typeString": "function (bytes32) view returns (address)"
                              }
                            },
                            "id": 10723,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10950:34:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 10720,
                          "name": "IConverterRegistryData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13647,
                          "src": "10927:22:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
                            "typeString": "type(contract IConverterRegistryData)"
                          }
                        },
                        "id": 10724,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10927:58:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                          "typeString": "contract IConverterRegistryData"
                        }
                      },
                      "id": 10725,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getConvertibleTokenSmartTokenCount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13620,
                      "src": "10927:93:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_contract$_IERC20Token_$21127_$returns$_t_uint256_$",
                        "typeString": "function (contract IERC20Token) view external returns (uint256)"
                      }
                    },
                    "id": 10727,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10927:112:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 10719,
                  "id": 10728,
                  "nodeType": "Return",
                  "src": "10920:119:10"
                }
              ]
            },
            "documentation": {
              "id": 10712,
              "nodeType": "StructuredDocumentation",
              "src": "10546:247:10",
              "text": " @dev returns the number of converter anchors associated with a given convertible token\n @param _convertibleToken convertible token\n @return number of anchors associated with the given convertible token"
            },
            "functionSelector": "49c5f32b",
            "id": 10730,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getConvertibleTokenAnchorCount",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 10716,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "10882:8:10"
            },
            "parameters": {
              "id": 10715,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10714,
                  "mutability": "mutable",
                  "name": "_convertibleToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10730,
                  "src": "10839:29:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20Token_$21127",
                    "typeString": "contract IERC20Token"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10713,
                    "name": "IERC20Token",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 21127,
                    "src": "10839:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                      "typeString": "contract IERC20Token"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10838:31:10"
            },
            "returnParameters": {
              "id": 10719,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10718,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10730,
                  "src": "10900:7:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10717,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10900:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10899:9:10"
            },
            "scope": 11667,
            "src": "10799:248:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              13482
            ],
            "body": {
              "id": 10749,
              "nodeType": "Block",
              "src": "11419:134:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10746,
                        "name": "_convertibleToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10733,
                        "src": "11527:17:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 10742,
                                "name": "CONVERTER_REGISTRY_DATA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21548,
                                "src": "11470:23:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 10741,
                              "name": "addressOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21718,
                              "src": "11460:9:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                                "typeString": "function (bytes32) view returns (address)"
                              }
                            },
                            "id": 10743,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11460:34:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 10740,
                          "name": "IConverterRegistryData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13647,
                          "src": "11437:22:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
                            "typeString": "type(contract IConverterRegistryData)"
                          }
                        },
                        "id": 10744,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11437:58:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                          "typeString": "contract IConverterRegistryData"
                        }
                      },
                      "id": 10745,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getConvertibleTokenSmartTokens",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13628,
                      "src": "11437:89:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_contract$_IERC20Token_$21127_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                        "typeString": "function (contract IERC20Token) view external returns (address[] memory)"
                      }
                    },
                    "id": 10747,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11437:108:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                      "typeString": "address[] memory"
                    }
                  },
                  "functionReturnParameters": 10739,
                  "id": 10748,
                  "nodeType": "Return",
                  "src": "11430:115:10"
                }
              ]
            },
            "documentation": {
              "id": 10731,
              "nodeType": "StructuredDocumentation",
              "src": "11055:243:10",
              "text": " @dev returns the list of aoncerter anchors associated with a given convertible token\n @param _convertibleToken convertible token\n @return list of anchors associated with the given convertible token"
            },
            "functionSelector": "11839064",
            "id": 10750,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getConvertibleTokenAnchors",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 10735,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "11383:8:10"
            },
            "parameters": {
              "id": 10734,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10733,
                  "mutability": "mutable",
                  "name": "_convertibleToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10750,
                  "src": "11340:29:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20Token_$21127",
                    "typeString": "contract IERC20Token"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10732,
                    "name": "IERC20Token",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 21127,
                    "src": "11340:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                      "typeString": "contract IERC20Token"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11339:31:10"
            },
            "returnParameters": {
              "id": 10739,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10738,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10750,
                  "src": "11401:16:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 10736,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "11401:7:10",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 10737,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "11401:9:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11400:18:10"
            },
            "scope": 11667,
            "src": "11304:249:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              13491
            ],
            "body": {
              "id": 10771,
              "nodeType": "Block",
              "src": "11935:141:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10767,
                        "name": "_convertibleToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10753,
                        "src": "12042:17:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10768,
                        "name": "_index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10755,
                        "src": "12061:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 10763,
                                "name": "CONVERTER_REGISTRY_DATA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21548,
                                "src": "11986:23:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 10762,
                              "name": "addressOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21718,
                              "src": "11976:9:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                                "typeString": "function (bytes32) view returns (address)"
                              }
                            },
                            "id": 10764,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11976:34:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 10761,
                          "name": "IConverterRegistryData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13647,
                          "src": "11953:22:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
                            "typeString": "type(contract IConverterRegistryData)"
                          }
                        },
                        "id": 10765,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11953:58:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                          "typeString": "contract IConverterRegistryData"
                        }
                      },
                      "id": 10766,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getConvertibleTokenSmartToken",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13637,
                      "src": "11953:88:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_contract$_IERC20Token_$21127_$_t_uint256_$returns$_t_contract$_IConverterAnchor_$13349_$",
                        "typeString": "function (contract IERC20Token,uint256) view external returns (contract IConverterAnchor)"
                      }
                    },
                    "id": 10769,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11953:115:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "functionReturnParameters": 10760,
                  "id": 10770,
                  "nodeType": "Return",
                  "src": "11946:122:10"
                }
              ]
            },
            "documentation": {
              "id": 10751,
              "nodeType": "StructuredDocumentation",
              "src": "11561:238:10",
              "text": " @dev returns the converter anchor associated with a given convertible token at a given index\n @param _index index\n @return anchor associated with the given convertible token at the given index"
            },
            "functionSelector": "603f51e4",
            "id": 10772,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getConvertibleTokenAnchor",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 10757,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "11899:8:10"
            },
            "parameters": {
              "id": 10756,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10753,
                  "mutability": "mutable",
                  "name": "_convertibleToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10772,
                  "src": "11840:29:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20Token_$21127",
                    "typeString": "contract IERC20Token"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10752,
                    "name": "IERC20Token",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 21127,
                    "src": "11840:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                      "typeString": "contract IERC20Token"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10755,
                  "mutability": "mutable",
                  "name": "_index",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10772,
                  "src": "11871:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10754,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11871:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11839:47:10"
            },
            "returnParameters": {
              "id": 10760,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10759,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10772,
                  "src": "11917:16:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                    "typeString": "contract IConverterAnchor"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10758,
                    "name": "IConverterAnchor",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13349,
                    "src": "11917:16:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11916:18:10"
            },
            "scope": 11667,
            "src": "11805:271:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              13500
            ],
            "body": {
              "id": 10793,
              "nodeType": "Block",
              "src": "12508:140:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10789,
                        "name": "_convertibleToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10775,
                        "src": "12614:17:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10790,
                        "name": "_value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10777,
                        "src": "12633:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 10785,
                                "name": "CONVERTER_REGISTRY_DATA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21548,
                                "src": "12559:23:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 10784,
                              "name": "addressOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21718,
                              "src": "12549:9:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                                "typeString": "function (bytes32) view returns (address)"
                              }
                            },
                            "id": 10786,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12549:34:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 10783,
                          "name": "IConverterRegistryData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13647,
                          "src": "12526:22:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
                            "typeString": "type(contract IConverterRegistryData)"
                          }
                        },
                        "id": 10787,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12526:58:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                          "typeString": "contract IConverterRegistryData"
                        }
                      },
                      "id": 10788,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "isConvertibleTokenSmartToken",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13646,
                      "src": "12526:87:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_contract$_IERC20Token_$21127_$_t_address_$returns$_t_bool_$",
                        "typeString": "function (contract IERC20Token,address) view external returns (bool)"
                      }
                    },
                    "id": 10791,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12526:114:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 10782,
                  "id": 10792,
                  "nodeType": "Return",
                  "src": "12519:121:10"
                }
              ]
            },
            "documentation": {
              "id": 10773,
              "nodeType": "StructuredDocumentation",
              "src": "12084:301:10",
              "text": " @dev checks whether or not a given value is a converter anchor of a given convertible token\n @param _convertibleToken convertible token\n @param _value value\n @return true if the given value is an anchor of the given convertible token, false if not"
            },
            "functionSelector": "b4c4197a",
            "id": 10794,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isConvertibleTokenAnchor",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 10779,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "12484:8:10"
            },
            "parameters": {
              "id": 10778,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10775,
                  "mutability": "mutable",
                  "name": "_convertibleToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10794,
                  "src": "12425:29:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20Token_$21127",
                    "typeString": "contract IERC20Token"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10774,
                    "name": "IERC20Token",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 21127,
                    "src": "12425:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                      "typeString": "contract IERC20Token"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10777,
                  "mutability": "mutable",
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10794,
                  "src": "12456:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10776,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "12456:7:10",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12424:47:10"
            },
            "returnParameters": {
              "id": 10782,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10781,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10794,
                  "src": "12502:4:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 10780,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "12502:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12501:6:10"
            },
            "scope": 11667,
            "src": "12391:257:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10846,
              "nodeType": "Block",
              "src": "13040:261:10",
              "statements": [
                {
                  "assignments": [
                    10807
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 10807,
                      "mutability": "mutable",
                      "name": "converters",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10846,
                      "src": "13051:30:10",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_contract$_IConverter_$13340_$dyn_memory_ptr",
                        "typeString": "contract IConverter[]"
                      },
                      "typeName": {
                        "baseType": {
                          "contractScope": null,
                          "id": 10805,
                          "name": "IConverter",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 13340,
                          "src": "13051:10:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IConverter_$13340",
                            "typeString": "contract IConverter"
                          }
                        },
                        "id": 10806,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "13051:12:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_contract$_IConverter_$13340_$dyn_storage_ptr",
                          "typeString": "contract IConverter[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 10814,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 10811,
                          "name": "_anchors",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10798,
                          "src": "13101:8:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "id": 10812,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "13101:15:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 10810,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "13084:16:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_IConverter_$13340_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (contract IConverter[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "contractScope": null,
                          "id": 10808,
                          "name": "IConverter",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 13340,
                          "src": "13088:10:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IConverter_$13340",
                            "typeString": "contract IConverter"
                          }
                        },
                        "id": 10809,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "13088:12:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_contract$_IConverter_$13340_$dyn_storage_ptr",
                          "typeString": "contract IConverter[]"
                        }
                      }
                    },
                    "id": 10813,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13084:33:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_contract$_IConverter_$13340_$dyn_memory_ptr",
                      "typeString": "contract IConverter[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13051:66:10"
                },
                {
                  "body": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 10841,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 10826,
                          "name": "converters",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10807,
                          "src": "13189:10:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_contract$_IConverter_$13340_$dyn_memory_ptr",
                            "typeString": "contract IConverter[] memory"
                          }
                        },
                        "id": 10828,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 10827,
                          "name": "i",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10816,
                          "src": "13200:1:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": true,
                        "nodeType": "IndexAccess",
                        "src": "13189:13:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 10833,
                                          "name": "_anchors",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10798,
                                          "src": "13241:8:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                            "typeString": "address[] memory"
                                          }
                                        },
                                        "id": 10835,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 10834,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10816,
                                          "src": "13250:1:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "13241:11:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 10832,
                                      "name": "IConverterAnchor",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13349,
                                      "src": "13224:16:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IConverterAnchor_$13349_$",
                                        "typeString": "type(contract IConverterAnchor)"
                                      }
                                    },
                                    "id": 10836,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "13224:29:10",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                                      "typeString": "contract IConverterAnchor"
                                    }
                                  },
                                  "id": 10837,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "owner",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22838,
                                  "src": "13224:35:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                    "typeString": "function () view external returns (address)"
                                  }
                                },
                                "id": 10838,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13224:37:10",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 10831,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "13216:8:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_payable_$",
                                "typeString": "type(address payable)"
                              },
                              "typeName": {
                                "id": 10830,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "13216:8:10",
                                "stateMutability": "payable",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 10839,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13216:46:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          ],
                          "id": 10829,
                          "name": "IConverter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13340,
                          "src": "13205:10:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IConverter_$13340_$",
                            "typeString": "type(contract IConverter)"
                          }
                        },
                        "id": 10840,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "13205:58:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      "src": "13189:74:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IConverter_$13340",
                        "typeString": "contract IConverter"
                      }
                    },
                    "id": 10842,
                    "nodeType": "ExpressionStatement",
                    "src": "13189:74:10"
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 10822,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 10819,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10816,
                      "src": "13150:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 10820,
                        "name": "_anchors",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10798,
                        "src": "13154:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      "id": 10821,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "13154:15:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "13150:19:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 10843,
                  "initializationExpression": {
                    "assignments": [
                      10816
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 10816,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10843,
                        "src": "13135:9:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10815,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13135:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 10818,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 10817,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "13147:1:10",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "13135:13:10"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 10824,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "13171:3:10",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 10823,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10816,
                        "src": "13171:1:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 10825,
                    "nodeType": "ExpressionStatement",
                    "src": "13171:3:10"
                  },
                  "nodeType": "ForStatement",
                  "src": "13130:133:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10844,
                    "name": "converters",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 10807,
                    "src": "13283:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_contract$_IConverter_$13340_$dyn_memory_ptr",
                      "typeString": "contract IConverter[] memory"
                    }
                  },
                  "functionReturnParameters": 10803,
                  "id": 10845,
                  "nodeType": "Return",
                  "src": "13276:17:10"
                }
              ]
            },
            "documentation": {
              "id": 10795,
              "nodeType": "StructuredDocumentation",
              "src": "12656:277:10",
              "text": " @dev returns a list of converters for a given list of anchors\n this is a utility function that can be used to reduce the number of calls to the contract\n @param _anchors list of converter anchors\n @return list of converters"
            },
            "functionSelector": "610c0b05",
            "id": 10847,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getConvertersByAnchors",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 10799,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10798,
                  "mutability": "mutable",
                  "name": "_anchors",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10847,
                  "src": "12971:25:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 10796,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "12971:7:10",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 10797,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "12971:9:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12970:27:10"
            },
            "returnParameters": {
              "id": 10803,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10802,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10847,
                  "src": "13019:19:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_contract$_IConverter_$13340_$dyn_memory_ptr",
                    "typeString": "contract IConverter[]"
                  },
                  "typeName": {
                    "baseType": {
                      "contractScope": null,
                      "id": 10800,
                      "name": "IConverter",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 13340,
                      "src": "13019:10:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IConverter_$13340",
                        "typeString": "contract IConverter"
                      }
                    },
                    "id": 10801,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "13019:12:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_contract$_IConverter_$13340_$dyn_storage_ptr",
                      "typeString": "contract IConverter[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13018:21:10"
            },
            "scope": 11667,
            "src": "12939:362:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10866,
              "nodeType": "Block",
              "src": "13579:123:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 10864,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 10855,
                              "name": "_converter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10850,
                              "src": "13645:10:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IConverter_$13340",
                                "typeString": "contract IConverter"
                              }
                            },
                            "id": 10856,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "token",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 13297,
                            "src": "13645:16:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IConverterAnchor_$13349_$",
                              "typeString": "function () view external returns (contract IConverterAnchor)"
                            }
                          },
                          "id": 10857,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13645:18:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                            "typeString": "contract IConverterAnchor"
                          }
                        },
                        "id": 10858,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "owner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22838,
                        "src": "13645:24:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                          "typeString": "function () view external returns (address)"
                        }
                      },
                      "id": 10859,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "13645:26:10",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 10862,
                          "name": "_converter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10850,
                          "src": "13683:10:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IConverter_$13340",
                            "typeString": "contract IConverter"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_IConverter_$13340",
                            "typeString": "contract IConverter"
                          }
                        ],
                        "id": 10861,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "13675:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": {
                          "id": 10860,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13675:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": null,
                            "typeString": null
                          }
                        }
                      },
                      "id": 10863,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "13675:19:10",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "13645:49:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 10854,
                  "id": 10865,
                  "nodeType": "Return",
                  "src": "13638:56:10"
                }
              ]
            },
            "documentation": {
              "id": 10848,
              "nodeType": "StructuredDocumentation",
              "src": "13309:188:10",
              "text": " @dev checks whether or not a given converter is valid\n @param _converter converter\n @return true if the given converter is valid, false if not"
            },
            "functionSelector": "954254f5",
            "id": 10867,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isConverterValid",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 10851,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10850,
                  "mutability": "mutable",
                  "name": "_converter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10867,
                  "src": "13529:21:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverter_$13340",
                    "typeString": "contract IConverter"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10849,
                    "name": "IConverter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13340,
                    "src": "13529:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverter_$13340",
                      "typeString": "contract IConverter"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13528:23:10"
            },
            "returnParameters": {
              "id": 10854,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10853,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10867,
                  "src": "13573:4:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 10852,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "13573:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13572:6:10"
            },
            "scope": 11667,
            "src": "13503:199:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10949,
              "nodeType": "Block",
              "src": "14068:799:10",
              "statements": [
                {
                  "assignments": [
                    10876
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 10876,
                      "mutability": "mutable",
                      "name": "reserveTokenCount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10949,
                      "src": "14079:25:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 10875,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "14079:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 10880,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 10877,
                        "name": "_converter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10870,
                        "src": "14107:10:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      "id": 10878,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "connectorTokenCount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13339,
                      "src": "14107:30:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint16_$",
                        "typeString": "function () view external returns (uint16)"
                      }
                    },
                    "id": 10879,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14107:32:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14079:60:10"
                },
                {
                  "assignments": [
                    10884
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 10884,
                      "mutability": "mutable",
                      "name": "reserveTokens",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10949,
                      "src": "14150:34:10",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
                        "typeString": "contract IERC20Token[]"
                      },
                      "typeName": {
                        "baseType": {
                          "contractScope": null,
                          "id": 10882,
                          "name": "IERC20Token",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 21127,
                          "src": "14150:11:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20Token_$21127",
                            "typeString": "contract IERC20Token"
                          }
                        },
                        "id": 10883,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "14150:13:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_storage_ptr",
                          "typeString": "contract IERC20Token[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 10890,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10888,
                        "name": "reserveTokenCount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10876,
                        "src": "14205:17:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 10887,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "14187:17:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (contract IERC20Token[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "contractScope": null,
                          "id": 10885,
                          "name": "IERC20Token",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 21127,
                          "src": "14191:11:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20Token_$21127",
                            "typeString": "contract IERC20Token"
                          }
                        },
                        "id": 10886,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "14191:13:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_storage_ptr",
                          "typeString": "contract IERC20Token[]"
                        }
                      }
                    },
                    "id": 10889,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14187:36:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
                      "typeString": "contract IERC20Token[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14150:73:10"
                },
                {
                  "assignments": [
                    10895
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 10895,
                      "mutability": "mutable",
                      "name": "reserveWeights",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 10949,
                      "src": "14234:30:10",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
                        "typeString": "uint32[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 10893,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "14234:6:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "id": 10894,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "14234:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint32_$dyn_storage_ptr",
                          "typeString": "uint32[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 10901,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10899,
                        "name": "reserveTokenCount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10876,
                        "src": "14280:17:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 10898,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "14267:12:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint32_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (uint32[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 10896,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "14271:6:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "id": 10897,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "14271:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint32_$dyn_storage_ptr",
                          "typeString": "uint32[]"
                        }
                      }
                    },
                    "id": 10900,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14267:31:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
                      "typeString": "uint32[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14234:64:10"
                },
                {
                  "body": {
                    "id": 10934,
                    "nodeType": "Block",
                    "src": "14418:206:10",
                    "statements": [
                      {
                        "assignments": [
                          10913
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10913,
                            "mutability": "mutable",
                            "name": "reserveToken",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 10934,
                            "src": "14433:24:10",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20Token_$21127",
                              "typeString": "contract IERC20Token"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 10912,
                              "name": "IERC20Token",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 21127,
                              "src": "14433:11:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                "typeString": "contract IERC20Token"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 10918,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10916,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10903,
                              "src": "14487:1:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 10914,
                              "name": "_converter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10870,
                              "src": "14460:10:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IConverter_$13340",
                                "typeString": "contract IConverter"
                              }
                            },
                            "id": 10915,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "connectorTokens",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 13334,
                            "src": "14460:26:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_contract$_IERC20Token_$21127_$",
                              "typeString": "function (uint256) view external returns (contract IERC20Token)"
                            }
                          },
                          "id": 10917,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14460:29:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20Token_$21127",
                            "typeString": "contract IERC20Token"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14433:56:10"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10923,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 10919,
                              "name": "reserveTokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10884,
                              "src": "14504:13:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
                                "typeString": "contract IERC20Token[] memory"
                              }
                            },
                            "id": 10921,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 10920,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10903,
                              "src": "14518:1:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "14504:16:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20Token_$21127",
                              "typeString": "contract IERC20Token"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 10922,
                            "name": "reserveToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10913,
                            "src": "14523:12:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20Token_$21127",
                              "typeString": "contract IERC20Token"
                            }
                          },
                          "src": "14504:31:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20Token_$21127",
                            "typeString": "contract IERC20Token"
                          }
                        },
                        "id": 10924,
                        "nodeType": "ExpressionStatement",
                        "src": "14504:31:10"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10932,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 10925,
                              "name": "reserveWeights",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10895,
                              "src": "14550:14:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
                                "typeString": "uint32[] memory"
                              }
                            },
                            "id": 10927,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 10926,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10903,
                              "src": "14565:1:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "14550:17:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 10929,
                                "name": "_converter",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10870,
                                "src": "14587:10:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IConverter_$13340",
                                  "typeString": "contract IConverter"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 10930,
                                "name": "reserveToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10913,
                                "src": "14599:12:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                  "typeString": "contract IERC20Token"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IConverter_$13340",
                                  "typeString": "contract IConverter"
                                },
                                {
                                  "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                  "typeString": "contract IERC20Token"
                                }
                              ],
                              "id": 10928,
                              "name": "getReserveWeight",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11465,
                              "src": "14570:16:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_contract$_IConverter_$13340_$_t_contract$_IERC20Token_$21127_$returns$_t_uint32_$",
                                "typeString": "function (contract IConverter,contract IERC20Token) view returns (uint32)"
                              }
                            },
                            "id": 10931,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14570:42:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "src": "14550:62:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "id": 10933,
                        "nodeType": "ExpressionStatement",
                        "src": "14550:62:10"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 10908,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 10906,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10903,
                      "src": "14390:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 10907,
                      "name": "reserveTokenCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10876,
                      "src": "14394:17:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "14390:21:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 10935,
                  "initializationExpression": {
                    "assignments": [
                      10903
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 10903,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 10935,
                        "src": "14375:9:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10902,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14375:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 10905,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 10904,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "14387:1:10",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "14375:13:10"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 10910,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "14413:3:10",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 10909,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10903,
                        "src": "14413:1:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 10911,
                    "nodeType": "ExpressionStatement",
                    "src": "14413:3:10"
                  },
                  "nodeType": "ForStatement",
                  "src": "14370:254:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    },
                    "id": 10947,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10938,
                              "name": "_converter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10870,
                              "src": "14774:10:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IConverter_$13340",
                                "typeString": "contract IConverter"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10939,
                              "name": "reserveTokenCount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10876,
                              "src": "14786:17:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IConverter_$13340",
                                "typeString": "contract IConverter"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 10937,
                            "name": "getConverterType",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11520,
                            "src": "14757:16:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_contract$_IConverter_$13340_$_t_uint256_$returns$_t_uint16_$",
                              "typeString": "function (contract IConverter,uint256) view returns (uint16)"
                            }
                          },
                          "id": 10940,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14757:47:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 10941,
                          "name": "reserveTokens",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10884,
                          "src": "14806:13:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
                            "typeString": "contract IERC20Token[] memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 10942,
                          "name": "reserveWeights",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10895,
                          "src": "14821:14:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
                            "typeString": "uint32[] memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          },
                          {
                            "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
                            "typeString": "contract IERC20Token[] memory"
                          },
                          {
                            "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
                            "typeString": "uint32[] memory"
                          }
                        ],
                        "id": 10936,
                        "name": "getLiquidityPoolByConfig",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11031,
                        "src": "14732:24:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_uint16_$_t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr_$_t_array$_t_uint32_$dyn_memory_ptr_$returns$_t_contract$_IConverterAnchor_$13349_$",
                          "typeString": "function (uint16,contract IERC20Token[] memory,uint32[] memory) view returns (contract IConverterAnchor)"
                        }
                      },
                      "id": 10943,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "14732:104:10",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                        "typeString": "contract IConverterAnchor"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 10945,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "14857:1:10",
                          "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": 10944,
                        "name": "IConverterAnchor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13349,
                        "src": "14840:16:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_IConverterAnchor_$13349_$",
                          "typeString": "type(contract IConverterAnchor)"
                        }
                      },
                      "id": 10946,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "14840:19:10",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                        "typeString": "contract IConverterAnchor"
                      }
                    },
                    "src": "14732:127:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 10874,
                  "id": 10948,
                  "nodeType": "Return",
                  "src": "14725:134:10"
                }
              ]
            },
            "documentation": {
              "id": 10868,
              "nodeType": "StructuredDocumentation",
              "src": "13710:260:10",
              "text": " @dev checks if a liquidity pool with given configuration is already registered\n @param _converter converter with specific configuration\n @return if a liquidity pool with the same configuration is already registered"
            },
            "functionSelector": "8f1d0e1a",
            "id": 10950,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isSimilarLiquidityPoolRegistered",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 10871,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10870,
                  "mutability": "mutable",
                  "name": "_converter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10950,
                  "src": "14018:21:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverter_$13340",
                    "typeString": "contract IConverter"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10869,
                    "name": "IConverter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13340,
                    "src": "14018:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverter_$13340",
                      "typeString": "contract IConverter"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14017:23:10"
            },
            "returnParameters": {
              "id": 10874,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10873,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 10950,
                  "src": "14062:4:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 10872,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "14062:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14061:6:10"
            },
            "scope": 11667,
            "src": "13976:891:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 11030,
              "nodeType": "Block",
              "src": "15390:869:10",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 10973,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 10968,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 10964,
                          "name": "_reserveTokens",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10956,
                          "src": "15483:14:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
                            "typeString": "contract IERC20Token[] memory"
                          }
                        },
                        "id": 10965,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "15483:21:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 10966,
                          "name": "_reserveWeights",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10959,
                          "src": "15508:15:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
                            "typeString": "uint32[] memory"
                          }
                        },
                        "id": 10967,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "15508:22:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "15483:47:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 10972,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 10969,
                          "name": "_reserveTokens",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10956,
                          "src": "15534:14:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
                            "typeString": "contract IERC20Token[] memory"
                          }
                        },
                        "id": 10970,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "15534:21:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 10971,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "15558:1:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "src": "15534:25:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "15483:76:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 11025,
                  "nodeType": "IfStatement",
                  "src": "15479:734:10",
                  "trueBody": {
                    "id": 11024,
                    "nodeType": "Block",
                    "src": "15561:652:10",
                    "statements": [
                      {
                        "assignments": [
                          10978
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10978,
                            "mutability": "mutable",
                            "name": "convertibleTokenAnchors",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 11024,
                            "src": "15651:40:10",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 10976,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "15651:7:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 10977,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "15651:9:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 10982,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10980,
                              "name": "_reserveTokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10956,
                              "src": "15723:14:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
                                "typeString": "contract IERC20Token[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
                                "typeString": "contract IERC20Token[] memory"
                              }
                            ],
                            "id": 10979,
                            "name": "getLeastFrequentTokenAnchors",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11380,
                            "src": "15694:28:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                              "typeString": "function (contract IERC20Token[] memory) view returns (address[] memory)"
                            }
                          },
                          "id": 10981,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15694:44:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15651:87:10"
                      },
                      {
                        "body": {
                          "id": 11022,
                          "nodeType": "Block",
                          "src": "15881:321:10",
                          "statements": [
                            {
                              "assignments": [
                                10995
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 10995,
                                  "mutability": "mutable",
                                  "name": "anchor",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 11022,
                                  "src": "15900:23:10",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                                    "typeString": "contract IConverterAnchor"
                                  },
                                  "typeName": {
                                    "contractScope": null,
                                    "id": 10994,
                                    "name": "IConverterAnchor",
                                    "nodeType": "UserDefinedTypeName",
                                    "referencedDeclaration": 13349,
                                    "src": "15900:16:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                                      "typeString": "contract IConverterAnchor"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 11001,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 10997,
                                      "name": "convertibleTokenAnchors",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10978,
                                      "src": "15943:23:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 10999,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 10998,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10984,
                                      "src": "15967:1:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "15943:26:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 10996,
                                  "name": "IConverterAnchor",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13349,
                                  "src": "15926:16:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IConverterAnchor_$13349_$",
                                    "typeString": "type(contract IConverterAnchor)"
                                  }
                                },
                                "id": 11000,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15926:44:10",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                                  "typeString": "contract IConverterAnchor"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "15900:70:10"
                            },
                            {
                              "assignments": [
                                11003
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 11003,
                                  "mutability": "mutable",
                                  "name": "converter",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 11022,
                                  "src": "15989:20:10",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IConverter_$13340",
                                    "typeString": "contract IConverter"
                                  },
                                  "typeName": {
                                    "contractScope": null,
                                    "id": 11002,
                                    "name": "IConverter",
                                    "nodeType": "UserDefinedTypeName",
                                    "referencedDeclaration": 13340,
                                    "src": "15989:10:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IConverter_$13340",
                                      "typeString": "contract IConverter"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 11012,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "arguments": [],
                                        "expression": {
                                          "argumentTypes": [],
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 11007,
                                            "name": "anchor",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 10995,
                                            "src": "16031:6:10",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                                              "typeString": "contract IConverterAnchor"
                                            }
                                          },
                                          "id": 11008,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "owner",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 22838,
                                          "src": "16031:12:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                            "typeString": "function () view external returns (address)"
                                          }
                                        },
                                        "id": 11009,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "16031:14:10",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 11006,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "16023:8:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_payable_$",
                                        "typeString": "type(address payable)"
                                      },
                                      "typeName": {
                                        "id": 11005,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "16023:8:10",
                                        "stateMutability": "payable",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 11010,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "16023:23:10",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  ],
                                  "id": 11004,
                                  "name": "IConverter",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13340,
                                  "src": "16012:10:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IConverter_$13340_$",
                                    "typeString": "type(contract IConverter)"
                                  }
                                },
                                "id": 11011,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "16012:35:10",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IConverter_$13340",
                                  "typeString": "contract IConverter"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "15989:58:10"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 11014,
                                    "name": "converter",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11003,
                                    "src": "16100:9:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IConverter_$13340",
                                      "typeString": "contract IConverter"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 11015,
                                    "name": "_type",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10953,
                                    "src": "16111:5:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 11016,
                                    "name": "_reserveTokens",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10956,
                                    "src": "16118:14:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
                                      "typeString": "contract IERC20Token[] memory"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 11017,
                                    "name": "_reserveWeights",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10959,
                                    "src": "16134:15:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
                                      "typeString": "uint32[] memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_IConverter_$13340",
                                      "typeString": "contract IConverter"
                                    },
                                    {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
                                      "typeString": "contract IERC20Token[] memory"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
                                      "typeString": "uint32[] memory"
                                    }
                                  ],
                                  "id": 11013,
                                  "name": "isConverterReserveConfigEqual",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11446,
                                  "src": "16070:29:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_contract$_IConverter_$13340_$_t_uint16_$_t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr_$_t_array$_t_uint32_$dyn_memory_ptr_$returns$_t_bool_$",
                                    "typeString": "function (contract IConverter,uint16,contract IERC20Token[] memory,uint32[] memory) view returns (bool)"
                                  }
                                },
                                "id": 11018,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "16070:80:10",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 11021,
                              "nodeType": "IfStatement",
                              "src": "16066:120:10",
                              "trueBody": {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 11019,
                                  "name": "anchor",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10995,
                                  "src": "16180:6:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                                    "typeString": "contract IConverterAnchor"
                                  }
                                },
                                "functionReturnParameters": 10963,
                                "id": 11020,
                                "nodeType": "Return",
                                "src": "16173:13:10"
                              }
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 10990,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 10987,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10984,
                            "src": "15840:1:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 10988,
                              "name": "convertibleTokenAnchors",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10978,
                              "src": "15844:23:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 10989,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "15844:30:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "15840:34:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 11023,
                        "initializationExpression": {
                          "assignments": [
                            10984
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 10984,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 11023,
                              "src": "15825:9:10",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 10983,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "15825:7:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 10986,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 10985,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "15837:1:10",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "15825:13:10"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 10992,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "15876:3:10",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 10991,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10984,
                              "src": "15876:1:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 10993,
                          "nodeType": "ExpressionStatement",
                          "src": "15876:3:10"
                        },
                        "nodeType": "ForStatement",
                        "src": "15820:382:10"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 11027,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "16249:1:10",
                        "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": 11026,
                      "name": "IConverterAnchor",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13349,
                      "src": "16232:16:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_IConverterAnchor_$13349_$",
                        "typeString": "type(contract IConverterAnchor)"
                      }
                    },
                    "id": 11028,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16232:19:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "functionReturnParameters": 10963,
                  "id": 11029,
                  "nodeType": "Return",
                  "src": "16225:26:10"
                }
              ]
            },
            "documentation": {
              "id": 10951,
              "nodeType": "StructuredDocumentation",
              "src": "14875:352:10",
              "text": " @dev searches for a liquidity pool with specific configuration\n @param _type            converter type, see ConverterBase contract main doc\n @param _reserveTokens   reserve tokens\n @param _reserveWeights  reserve weights\n @return the liquidity pool, or zero if no such liquidity pool exists"
            },
            "functionSelector": "1d3fccd5",
            "id": 11031,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getLiquidityPoolByConfig",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 10960,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10953,
                  "mutability": "mutable",
                  "name": "_type",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11031,
                  "src": "15267:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 10952,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "15267:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10956,
                  "mutability": "mutable",
                  "name": "_reserveTokens",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11031,
                  "src": "15281:35:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
                    "typeString": "contract IERC20Token[]"
                  },
                  "typeName": {
                    "baseType": {
                      "contractScope": null,
                      "id": 10954,
                      "name": "IERC20Token",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 21127,
                      "src": "15281:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IERC20Token_$21127",
                        "typeString": "contract IERC20Token"
                      }
                    },
                    "id": 10955,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "15281:13:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_storage_ptr",
                      "typeString": "contract IERC20Token[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10959,
                  "mutability": "mutable",
                  "name": "_reserveWeights",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11031,
                  "src": "15318:31:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
                    "typeString": "uint32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 10957,
                      "name": "uint32",
                      "nodeType": "ElementaryTypeName",
                      "src": "15318:6:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      }
                    },
                    "id": 10958,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "15318:8:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint32_$dyn_storage_ptr",
                      "typeString": "uint32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "15266:84:10"
            },
            "returnParameters": {
              "id": 10963,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10962,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11031,
                  "src": "15372:16:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                    "typeString": "contract IConverterAnchor"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 10961,
                    "name": "IConverterAnchor",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13349,
                    "src": "15372:16:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "15371:18:10"
            },
            "scope": 11667,
            "src": "15233:1026:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 11053,
              "nodeType": "Block",
              "src": "16489:149:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11042,
                        "name": "_anchor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11036,
                        "src": "16537:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 11039,
                        "name": "_converterRegistryData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11034,
                        "src": "16500:22:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                          "typeString": "contract IConverterRegistryData"
                        }
                      },
                      "id": 11041,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "addSmartToken",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13509,
                      "src": "16500:36:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_contract$_IConverterAnchor_$13349_$returns$__$",
                        "typeString": "function (contract IConverterAnchor) external"
                      }
                    },
                    "id": 11043,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16500:45:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11044,
                  "nodeType": "ExpressionStatement",
                  "src": "16500:45:10"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11046,
                        "name": "_anchor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11036,
                        "src": "16582:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      ],
                      "id": 11045,
                      "name": "ConverterAnchorAdded",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10265,
                      "src": "16561:20:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_contract$_IConverterAnchor_$13349_$returns$__$",
                        "typeString": "function (contract IConverterAnchor)"
                      }
                    },
                    "id": 11047,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16561:29:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11048,
                  "nodeType": "EmitStatement",
                  "src": "16556:34:10"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11050,
                        "name": "_anchor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11036,
                        "src": "16622:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      ],
                      "id": 11049,
                      "name": "SmartTokenAdded",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10299,
                      "src": "16606:15:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_contract$_IConverterAnchor_$13349_$returns$__$",
                        "typeString": "function (contract IConverterAnchor)"
                      }
                    },
                    "id": 11051,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16606:24:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11052,
                  "nodeType": "EmitStatement",
                  "src": "16601:29:10"
                }
              ]
            },
            "documentation": {
              "id": 11032,
              "nodeType": "StructuredDocumentation",
              "src": "16267:115:10",
              "text": " @dev adds a converter anchor to the registry\n @param _anchor converter anchor"
            },
            "id": 11054,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "addAnchor",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 11037,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11034,
                  "mutability": "mutable",
                  "name": "_converterRegistryData",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11054,
                  "src": "16407:45:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                    "typeString": "contract IConverterRegistryData"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11033,
                    "name": "IConverterRegistryData",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13647,
                    "src": "16407:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                      "typeString": "contract IConverterRegistryData"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11036,
                  "mutability": "mutable",
                  "name": "_anchor",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11054,
                  "src": "16454:24:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                    "typeString": "contract IConverterAnchor"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11035,
                    "name": "IConverterAnchor",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13349,
                    "src": "16454:16:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "16406:73:10"
            },
            "returnParameters": {
              "id": 11038,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "16489:0:10"
            },
            "scope": 11667,
            "src": "16388:250:10",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 11076,
              "nodeType": "Block",
              "src": "16876:156:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11065,
                        "name": "_anchor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11059,
                        "src": "16927:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 11062,
                        "name": "_converterRegistryData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11057,
                        "src": "16887:22:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                          "typeString": "contract IConverterRegistryData"
                        }
                      },
                      "id": 11064,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "removeSmartToken",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13514,
                      "src": "16887:39:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_contract$_IConverterAnchor_$13349_$returns$__$",
                        "typeString": "function (contract IConverterAnchor) external"
                      }
                    },
                    "id": 11066,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16887:48:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11067,
                  "nodeType": "ExpressionStatement",
                  "src": "16887:48:10"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11069,
                        "name": "_anchor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11059,
                        "src": "16974:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      ],
                      "id": 11068,
                      "name": "ConverterAnchorRemoved",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10270,
                      "src": "16951:22:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_contract$_IConverterAnchor_$13349_$returns$__$",
                        "typeString": "function (contract IConverterAnchor)"
                      }
                    },
                    "id": 11070,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16951:31:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11071,
                  "nodeType": "EmitStatement",
                  "src": "16946:36:10"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11073,
                        "name": "_anchor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11059,
                        "src": "17016:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      ],
                      "id": 11072,
                      "name": "SmartTokenRemoved",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10304,
                      "src": "16998:17:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_contract$_IConverterAnchor_$13349_$returns$__$",
                        "typeString": "function (contract IConverterAnchor)"
                      }
                    },
                    "id": 11074,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16998:26:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11075,
                  "nodeType": "EmitStatement",
                  "src": "16993:31:10"
                }
              ]
            },
            "documentation": {
              "id": 11055,
              "nodeType": "StructuredDocumentation",
              "src": "16646:120:10",
              "text": " @dev removes a converter anchor from the registry\n @param _anchor converter anchor"
            },
            "id": 11077,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "removeAnchor",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 11060,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11057,
                  "mutability": "mutable",
                  "name": "_converterRegistryData",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11077,
                  "src": "16794:45:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                    "typeString": "contract IConverterRegistryData"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11056,
                    "name": "IConverterRegistryData",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13647,
                    "src": "16794:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                      "typeString": "contract IConverterRegistryData"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11059,
                  "mutability": "mutable",
                  "name": "_anchor",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11077,
                  "src": "16841:24:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                    "typeString": "contract IConverterAnchor"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11058,
                    "name": "IConverterAnchor",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13349,
                    "src": "16841:16:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "16793:73:10"
            },
            "returnParameters": {
              "id": 11061,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "16876:0:10"
            },
            "scope": 11667,
            "src": "16772:260:10",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 11095,
              "nodeType": "Block",
              "src": "17308:136:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11088,
                        "name": "_liquidityPoolAnchor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11082,
                        "src": "17359:20:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 11085,
                        "name": "_converterRegistryData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11080,
                        "src": "17319:22:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                          "typeString": "contract IConverterRegistryData"
                        }
                      },
                      "id": 11087,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "addLiquidityPool",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13519,
                      "src": "17319:39:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_contract$_IConverterAnchor_$13349_$returns$__$",
                        "typeString": "function (contract IConverterAnchor) external"
                      }
                    },
                    "id": 11089,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17319:61:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11090,
                  "nodeType": "ExpressionStatement",
                  "src": "17319:61:10"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11092,
                        "name": "_liquidityPoolAnchor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11082,
                        "src": "17415:20:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      ],
                      "id": 11091,
                      "name": "LiquidityPoolAdded",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10275,
                      "src": "17396:18:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_contract$_IConverterAnchor_$13349_$returns$__$",
                        "typeString": "function (contract IConverterAnchor)"
                      }
                    },
                    "id": 11093,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17396:40:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11094,
                  "nodeType": "EmitStatement",
                  "src": "17391:45:10"
                }
              ]
            },
            "documentation": {
              "id": 11078,
              "nodeType": "StructuredDocumentation",
              "src": "17040:141:10",
              "text": " @dev adds a liquidity pool to the registry\n @param _liquidityPoolAnchor liquidity pool converter anchor"
            },
            "id": 11096,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "addLiquidityPool",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 11083,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11080,
                  "mutability": "mutable",
                  "name": "_converterRegistryData",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11096,
                  "src": "17213:45:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                    "typeString": "contract IConverterRegistryData"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11079,
                    "name": "IConverterRegistryData",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13647,
                    "src": "17213:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                      "typeString": "contract IConverterRegistryData"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11082,
                  "mutability": "mutable",
                  "name": "_liquidityPoolAnchor",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11096,
                  "src": "17260:37:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                    "typeString": "contract IConverterAnchor"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11081,
                    "name": "IConverterAnchor",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13349,
                    "src": "17260:16:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "17212:86:10"
            },
            "returnParameters": {
              "id": 11084,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "17308:0:10"
            },
            "scope": 11667,
            "src": "17187:257:10",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 11114,
              "nodeType": "Block",
              "src": "17728:141:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11107,
                        "name": "_liquidityPoolAnchor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11101,
                        "src": "17782:20:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 11104,
                        "name": "_converterRegistryData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11099,
                        "src": "17739:22:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                          "typeString": "contract IConverterRegistryData"
                        }
                      },
                      "id": 11106,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "removeLiquidityPool",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13524,
                      "src": "17739:42:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_contract$_IConverterAnchor_$13349_$returns$__$",
                        "typeString": "function (contract IConverterAnchor) external"
                      }
                    },
                    "id": 11108,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17739:64:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11109,
                  "nodeType": "ExpressionStatement",
                  "src": "17739:64:10"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11111,
                        "name": "_liquidityPoolAnchor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11101,
                        "src": "17840:20:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      ],
                      "id": 11110,
                      "name": "LiquidityPoolRemoved",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10280,
                      "src": "17819:20:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_contract$_IConverterAnchor_$13349_$returns$__$",
                        "typeString": "function (contract IConverterAnchor)"
                      }
                    },
                    "id": 11112,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17819:42:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11113,
                  "nodeType": "EmitStatement",
                  "src": "17814:47:10"
                }
              ]
            },
            "documentation": {
              "id": 11097,
              "nodeType": "StructuredDocumentation",
              "src": "17452:146:10",
              "text": " @dev removes a liquidity pool from the registry\n @param _liquidityPoolAnchor liquidity pool converter anchor"
            },
            "id": 11115,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "removeLiquidityPool",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 11102,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11099,
                  "mutability": "mutable",
                  "name": "_converterRegistryData",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11115,
                  "src": "17633:45:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                    "typeString": "contract IConverterRegistryData"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11098,
                    "name": "IConverterRegistryData",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13647,
                    "src": "17633:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                      "typeString": "contract IConverterRegistryData"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11101,
                  "mutability": "mutable",
                  "name": "_liquidityPoolAnchor",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11115,
                  "src": "17680:37:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                    "typeString": "contract IConverterAnchor"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11100,
                    "name": "IConverterAnchor",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13349,
                    "src": "17680:16:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "17632:86:10"
            },
            "returnParameters": {
              "id": 11103,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "17728:0:10"
            },
            "scope": 11667,
            "src": "17604:265:10",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 11137,
              "nodeType": "Block",
              "src": "18220:154:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11128,
                        "name": "_convertibleToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11120,
                        "src": "18274:17:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11129,
                        "name": "_anchor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11122,
                        "src": "18293:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        },
                        {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 11125,
                        "name": "_converterRegistryData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11118,
                        "src": "18231:22:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                          "typeString": "contract IConverterRegistryData"
                        }
                      },
                      "id": 11127,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "addConvertibleToken",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13531,
                      "src": "18231:42:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_contract$_IERC20Token_$21127_$_t_contract$_IConverterAnchor_$13349_$returns$__$",
                        "typeString": "function (contract IERC20Token,contract IConverterAnchor) external"
                      }
                    },
                    "id": 11130,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18231:70:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11131,
                  "nodeType": "ExpressionStatement",
                  "src": "18231:70:10"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11133,
                        "name": "_convertibleToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11120,
                        "src": "18339:17:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11134,
                        "name": "_anchor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11122,
                        "src": "18358:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        },
                        {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      ],
                      "id": 11132,
                      "name": "ConvertibleTokenAdded",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10287,
                      "src": "18317:21:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_contract$_IERC20Token_$21127_$_t_contract$_IConverterAnchor_$13349_$returns$__$",
                        "typeString": "function (contract IERC20Token,contract IConverterAnchor)"
                      }
                    },
                    "id": 11135,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18317:49:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11136,
                  "nodeType": "EmitStatement",
                  "src": "18312:54:10"
                }
              ]
            },
            "documentation": {
              "id": 11116,
              "nodeType": "StructuredDocumentation",
              "src": "17877:195:10",
              "text": " @dev adds a convertible token to the registry\n @param _convertibleToken    convertible token\n @param _anchor              associated converter anchor"
            },
            "id": 11138,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "addConvertibleToken",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 11123,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11118,
                  "mutability": "mutable",
                  "name": "_converterRegistryData",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11138,
                  "src": "18107:45:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                    "typeString": "contract IConverterRegistryData"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11117,
                    "name": "IConverterRegistryData",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13647,
                    "src": "18107:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                      "typeString": "contract IConverterRegistryData"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11120,
                  "mutability": "mutable",
                  "name": "_convertibleToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11138,
                  "src": "18154:29:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20Token_$21127",
                    "typeString": "contract IERC20Token"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11119,
                    "name": "IERC20Token",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 21127,
                    "src": "18154:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                      "typeString": "contract IERC20Token"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11122,
                  "mutability": "mutable",
                  "name": "_anchor",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11138,
                  "src": "18185:24:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                    "typeString": "contract IConverterAnchor"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11121,
                    "name": "IConverterAnchor",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13349,
                    "src": "18185:16:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "18106:104:10"
            },
            "returnParameters": {
              "id": 11124,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "18220:0:10"
            },
            "scope": 11667,
            "src": "18078:296:10",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 11160,
              "nodeType": "Block",
              "src": "18733:159:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11151,
                        "name": "_convertibleToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11143,
                        "src": "18790:17:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11152,
                        "name": "_anchor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11145,
                        "src": "18809:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        },
                        {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 11148,
                        "name": "_converterRegistryData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11141,
                        "src": "18744:22:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                          "typeString": "contract IConverterRegistryData"
                        }
                      },
                      "id": 11150,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "removeConvertibleToken",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13538,
                      "src": "18744:45:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_contract$_IERC20Token_$21127_$_t_contract$_IConverterAnchor_$13349_$returns$__$",
                        "typeString": "function (contract IERC20Token,contract IConverterAnchor) external"
                      }
                    },
                    "id": 11153,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18744:73:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11154,
                  "nodeType": "ExpressionStatement",
                  "src": "18744:73:10"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11156,
                        "name": "_convertibleToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11143,
                        "src": "18857:17:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11157,
                        "name": "_anchor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11145,
                        "src": "18876:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        },
                        {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      ],
                      "id": 11155,
                      "name": "ConvertibleTokenRemoved",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10294,
                      "src": "18833:23:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_contract$_IERC20Token_$21127_$_t_contract$_IConverterAnchor_$13349_$returns$__$",
                        "typeString": "function (contract IERC20Token,contract IConverterAnchor)"
                      }
                    },
                    "id": 11158,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18833:51:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11159,
                  "nodeType": "EmitStatement",
                  "src": "18828:56:10"
                }
              ]
            },
            "documentation": {
              "id": 11139,
              "nodeType": "StructuredDocumentation",
              "src": "18382:200:10",
              "text": " @dev removes a convertible token from the registry\n @param _convertibleToken    convertible token\n @param _anchor              associated converter anchor"
            },
            "id": 11161,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "removeConvertibleToken",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 11146,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11141,
                  "mutability": "mutable",
                  "name": "_converterRegistryData",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11161,
                  "src": "18620:45:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                    "typeString": "contract IConverterRegistryData"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11140,
                    "name": "IConverterRegistryData",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13647,
                    "src": "18620:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                      "typeString": "contract IConverterRegistryData"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11143,
                  "mutability": "mutable",
                  "name": "_convertibleToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11161,
                  "src": "18667:29:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20Token_$21127",
                    "typeString": "contract IERC20Token"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11142,
                    "name": "IERC20Token",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 21127,
                    "src": "18667:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                      "typeString": "contract IERC20Token"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11145,
                  "mutability": "mutable",
                  "name": "_anchor",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11161,
                  "src": "18698:24:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                    "typeString": "contract IConverterAnchor"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11144,
                    "name": "IConverterAnchor",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13349,
                    "src": "18698:16:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "18619:104:10"
            },
            "returnParameters": {
              "id": 11147,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "18733:0:10"
            },
            "scope": 11667,
            "src": "18588:304:10",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 11233,
              "nodeType": "Block",
              "src": "18961:749:10",
              "statements": [
                {
                  "assignments": [
                    11167
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11167,
                      "mutability": "mutable",
                      "name": "converterRegistryData",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11233,
                      "src": "18972:44:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                        "typeString": "contract IConverterRegistryData"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 11166,
                        "name": "IConverterRegistryData",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 13647,
                        "src": "18972:22:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                          "typeString": "contract IConverterRegistryData"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11173,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 11170,
                            "name": "CONVERTER_REGISTRY_DATA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21548,
                            "src": "19052:23:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 11169,
                          "name": "addressOf",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21718,
                          "src": "19042:9:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                            "typeString": "function (bytes32) view returns (address)"
                          }
                        },
                        "id": 11171,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "19042:34:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 11168,
                      "name": "IConverterRegistryData",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13647,
                      "src": "19019:22:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
                        "typeString": "type(contract IConverterRegistryData)"
                      }
                    },
                    "id": 11172,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19019:58:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                      "typeString": "contract IConverterRegistryData"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "18972:105:10"
                },
                {
                  "assignments": [
                    11175
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11175,
                      "mutability": "mutable",
                      "name": "anchor",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11233,
                      "src": "19088:23:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                        "typeString": "contract IConverterAnchor"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 11174,
                        "name": "IConverterAnchor",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 13349,
                        "src": "19088:16:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11181,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 11177,
                            "name": "_converter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11163,
                            "src": "19125:10:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IConverter_$13340",
                              "typeString": "contract IConverter"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IConverter_$13340",
                              "typeString": "contract IConverter"
                            }
                          ],
                          "id": 11176,
                          "name": "IConverter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13340,
                          "src": "19114:10:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IConverter_$13340_$",
                            "typeString": "type(contract IConverter)"
                          }
                        },
                        "id": 11178,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "19114:22:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      "id": 11179,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "token",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13297,
                      "src": "19114:28:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IConverterAnchor_$13349_$",
                        "typeString": "function () view external returns (contract IConverterAnchor)"
                      }
                    },
                    "id": 11180,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19114:30:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "19088:56:10"
                },
                {
                  "assignments": [
                    11183
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11183,
                      "mutability": "mutable",
                      "name": "reserveTokenCount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11233,
                      "src": "19155:25:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11182,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "19155:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11187,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 11184,
                        "name": "_converter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11163,
                        "src": "19183:10:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      "id": 11185,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "connectorTokenCount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13339,
                      "src": "19183:30:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint16_$",
                        "typeString": "function () view external returns (uint16)"
                      }
                    },
                    "id": 11186,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19183:32:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "19155:60:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11189,
                        "name": "converterRegistryData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11167,
                        "src": "19275:21:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                          "typeString": "contract IConverterRegistryData"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11190,
                        "name": "anchor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11175,
                        "src": "19298:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                          "typeString": "contract IConverterRegistryData"
                        },
                        {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      ],
                      "id": 11188,
                      "name": "addAnchor",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11054,
                      "src": "19265:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IConverterRegistryData_$13647_$_t_contract$_IConverterAnchor_$13349_$returns$__$",
                        "typeString": "function (contract IConverterRegistryData,contract IConverterAnchor)"
                      }
                    },
                    "id": 11191,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19265:40:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11192,
                  "nodeType": "ExpressionStatement",
                  "src": "19265:40:10"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 11195,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 11193,
                      "name": "reserveTokenCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11183,
                      "src": "19320:17:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 11194,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "19340:1:10",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "19320:21:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 11202,
                          "name": "converterRegistryData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11167,
                          "src": "19452:21:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                            "typeString": "contract IConverterRegistryData"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 11206,
                                  "name": "anchor",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11175,
                                  "src": "19495:6:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                                    "typeString": "contract IConverterAnchor"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                                    "typeString": "contract IConverterAnchor"
                                  }
                                ],
                                "id": 11205,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "19487:7:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 11204,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "19487:7:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 11207,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "19487:15:10",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 11203,
                            "name": "ISmartToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21182,
                            "src": "19475:11:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_ISmartToken_$21182_$",
                              "typeString": "type(contract ISmartToken)"
                            }
                          },
                          "id": 11208,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19475:28:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ISmartToken_$21182",
                            "typeString": "contract ISmartToken"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 11209,
                          "name": "anchor",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11175,
                          "src": "19505:6:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                            "typeString": "contract IConverterAnchor"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                            "typeString": "contract IConverterRegistryData"
                          },
                          {
                            "typeIdentifier": "t_contract$_ISmartToken_$21182",
                            "typeString": "contract ISmartToken"
                          },
                          {
                            "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                            "typeString": "contract IConverterAnchor"
                          }
                        ],
                        "id": 11201,
                        "name": "addConvertibleToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11138,
                        "src": "19432:19:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IConverterRegistryData_$13647_$_t_contract$_IERC20Token_$21127_$_t_contract$_IConverterAnchor_$13349_$returns$__$",
                          "typeString": "function (contract IConverterRegistryData,contract IERC20Token,contract IConverterAnchor)"
                        }
                      },
                      "id": 11210,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "19432:80:10",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 11211,
                    "nodeType": "ExpressionStatement",
                    "src": "19432:80:10"
                  },
                  "id": 11212,
                  "nodeType": "IfStatement",
                  "src": "19316:196:10",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 11197,
                          "name": "converterRegistryData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11167,
                          "src": "19373:21:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                            "typeString": "contract IConverterRegistryData"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 11198,
                          "name": "anchor",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11175,
                          "src": "19396:6:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                            "typeString": "contract IConverterAnchor"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                            "typeString": "contract IConverterRegistryData"
                          },
                          {
                            "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                            "typeString": "contract IConverterAnchor"
                          }
                        ],
                        "id": 11196,
                        "name": "addLiquidityPool",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11096,
                        "src": "19356:16:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IConverterRegistryData_$13647_$_t_contract$_IConverterAnchor_$13349_$returns$__$",
                          "typeString": "function (contract IConverterRegistryData,contract IConverterAnchor)"
                        }
                      },
                      "id": 11199,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "19356:47:10",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 11200,
                    "nodeType": "ExpressionStatement",
                    "src": "19356:47:10"
                  }
                },
                {
                  "body": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 11224,
                          "name": "converterRegistryData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11167,
                          "src": "19641:21:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                            "typeString": "contract IConverterRegistryData"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 11227,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11214,
                              "src": "19691:1:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 11225,
                              "name": "_converter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11163,
                              "src": "19664:10:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IConverter_$13340",
                                "typeString": "contract IConverter"
                              }
                            },
                            "id": 11226,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "connectorTokens",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 13334,
                            "src": "19664:26:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_contract$_IERC20Token_$21127_$",
                              "typeString": "function (uint256) view external returns (contract IERC20Token)"
                            }
                          },
                          "id": 11228,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19664:29:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20Token_$21127",
                            "typeString": "contract IERC20Token"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 11229,
                          "name": "anchor",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11175,
                          "src": "19695:6:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                            "typeString": "contract IConverterAnchor"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                            "typeString": "contract IConverterRegistryData"
                          },
                          {
                            "typeIdentifier": "t_contract$_IERC20Token_$21127",
                            "typeString": "contract IERC20Token"
                          },
                          {
                            "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                            "typeString": "contract IConverterAnchor"
                          }
                        ],
                        "id": 11223,
                        "name": "addConvertibleToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11138,
                        "src": "19621:19:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IConverterRegistryData_$13647_$_t_contract$_IERC20Token_$21127_$_t_contract$_IConverterAnchor_$13349_$returns$__$",
                          "typeString": "function (contract IConverterRegistryData,contract IERC20Token,contract IConverterAnchor)"
                        }
                      },
                      "id": 11230,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "19621:81:10",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 11231,
                    "nodeType": "ExpressionStatement",
                    "src": "19621:81:10"
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 11219,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 11217,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11214,
                      "src": "19580:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 11218,
                      "name": "reserveTokenCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11183,
                      "src": "19584:17:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "19580:21:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 11232,
                  "initializationExpression": {
                    "assignments": [
                      11214
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 11214,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11232,
                        "src": "19565:9:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11213,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "19565:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 11216,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 11215,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "19577:1:10",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "19565:13:10"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 11221,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "19603:3:10",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 11220,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11214,
                        "src": "19603:1:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 11222,
                    "nodeType": "ExpressionStatement",
                    "src": "19603:3:10"
                  },
                  "nodeType": "ForStatement",
                  "src": "19560:142:10"
                }
              ]
            },
            "documentation": null,
            "id": 11234,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "addConverterInternal",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 11164,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11163,
                  "mutability": "mutable",
                  "name": "_converter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11234,
                  "src": "18930:21:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverter_$13340",
                    "typeString": "contract IConverter"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11162,
                    "name": "IConverter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13340,
                    "src": "18930:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverter_$13340",
                      "typeString": "contract IConverter"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "18929:23:10"
            },
            "returnParameters": {
              "id": 11165,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "18961:0:10"
            },
            "scope": 11667,
            "src": "18900:810:10",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 11306,
              "nodeType": "Block",
              "src": "19782:767:10",
              "statements": [
                {
                  "assignments": [
                    11240
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11240,
                      "mutability": "mutable",
                      "name": "converterRegistryData",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11306,
                      "src": "19793:44:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                        "typeString": "contract IConverterRegistryData"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 11239,
                        "name": "IConverterRegistryData",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 13647,
                        "src": "19793:22:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                          "typeString": "contract IConverterRegistryData"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11246,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 11243,
                            "name": "CONVERTER_REGISTRY_DATA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21548,
                            "src": "19873:23:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 11242,
                          "name": "addressOf",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21718,
                          "src": "19863:9:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                            "typeString": "function (bytes32) view returns (address)"
                          }
                        },
                        "id": 11244,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "19863:34:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 11241,
                      "name": "IConverterRegistryData",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13647,
                      "src": "19840:22:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
                        "typeString": "type(contract IConverterRegistryData)"
                      }
                    },
                    "id": 11245,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19840:58:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                      "typeString": "contract IConverterRegistryData"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "19793:105:10"
                },
                {
                  "assignments": [
                    11248
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11248,
                      "mutability": "mutable",
                      "name": "anchor",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11306,
                      "src": "19909:23:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                        "typeString": "contract IConverterAnchor"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 11247,
                        "name": "IConverterAnchor",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 13349,
                        "src": "19909:16:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11254,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 11250,
                            "name": "_converter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11236,
                            "src": "19946:10:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IConverter_$13340",
                              "typeString": "contract IConverter"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IConverter_$13340",
                              "typeString": "contract IConverter"
                            }
                          ],
                          "id": 11249,
                          "name": "IConverter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13340,
                          "src": "19935:10:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IConverter_$13340_$",
                            "typeString": "type(contract IConverter)"
                          }
                        },
                        "id": 11251,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "19935:22:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      "id": 11252,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "token",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13297,
                      "src": "19935:28:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IConverterAnchor_$13349_$",
                        "typeString": "function () view external returns (contract IConverterAnchor)"
                      }
                    },
                    "id": 11253,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19935:30:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "19909:56:10"
                },
                {
                  "assignments": [
                    11256
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11256,
                      "mutability": "mutable",
                      "name": "reserveTokenCount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11306,
                      "src": "19976:25:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11255,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "19976:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11260,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 11257,
                        "name": "_converter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11236,
                        "src": "20004:10:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      "id": 11258,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "connectorTokenCount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13339,
                      "src": "20004:30:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint16_$",
                        "typeString": "function () view external returns (uint16)"
                      }
                    },
                    "id": 11259,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "20004:32:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "19976:60:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11262,
                        "name": "converterRegistryData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11240,
                        "src": "20102:21:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                          "typeString": "contract IConverterRegistryData"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11263,
                        "name": "anchor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11248,
                        "src": "20125:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                          "typeString": "contract IConverterRegistryData"
                        },
                        {
                          "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                          "typeString": "contract IConverterAnchor"
                        }
                      ],
                      "id": 11261,
                      "name": "removeAnchor",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11077,
                      "src": "20089:12:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IConverterRegistryData_$13647_$_t_contract$_IConverterAnchor_$13349_$returns$__$",
                        "typeString": "function (contract IConverterRegistryData,contract IConverterAnchor)"
                      }
                    },
                    "id": 11264,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "20089:43:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11265,
                  "nodeType": "ExpressionStatement",
                  "src": "20089:43:10"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 11268,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 11266,
                      "name": "reserveTokenCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11256,
                      "src": "20147:17:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 11267,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "20167:1:10",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "20147:21:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 11275,
                          "name": "converterRegistryData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11240,
                          "src": "20285:21:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                            "typeString": "contract IConverterRegistryData"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 11279,
                                  "name": "anchor",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11248,
                                  "src": "20328:6:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                                    "typeString": "contract IConverterAnchor"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                                    "typeString": "contract IConverterAnchor"
                                  }
                                ],
                                "id": 11278,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "20320:7:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 11277,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "20320:7:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 11280,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "20320:15:10",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 11276,
                            "name": "ISmartToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21182,
                            "src": "20308:11:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_ISmartToken_$21182_$",
                              "typeString": "type(contract ISmartToken)"
                            }
                          },
                          "id": 11281,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20308:28:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ISmartToken_$21182",
                            "typeString": "contract ISmartToken"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 11282,
                          "name": "anchor",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11248,
                          "src": "20338:6:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                            "typeString": "contract IConverterAnchor"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                            "typeString": "contract IConverterRegistryData"
                          },
                          {
                            "typeIdentifier": "t_contract$_ISmartToken_$21182",
                            "typeString": "contract ISmartToken"
                          },
                          {
                            "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                            "typeString": "contract IConverterAnchor"
                          }
                        ],
                        "id": 11274,
                        "name": "removeConvertibleToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11161,
                        "src": "20262:22:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IConverterRegistryData_$13647_$_t_contract$_IERC20Token_$21127_$_t_contract$_IConverterAnchor_$13349_$returns$__$",
                          "typeString": "function (contract IConverterRegistryData,contract IERC20Token,contract IConverterAnchor)"
                        }
                      },
                      "id": 11283,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "20262:83:10",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 11284,
                    "nodeType": "ExpressionStatement",
                    "src": "20262:83:10"
                  },
                  "id": 11285,
                  "nodeType": "IfStatement",
                  "src": "20143:202:10",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 11270,
                          "name": "converterRegistryData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11240,
                          "src": "20203:21:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                            "typeString": "contract IConverterRegistryData"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 11271,
                          "name": "anchor",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11248,
                          "src": "20226:6:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                            "typeString": "contract IConverterAnchor"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                            "typeString": "contract IConverterRegistryData"
                          },
                          {
                            "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                            "typeString": "contract IConverterAnchor"
                          }
                        ],
                        "id": 11269,
                        "name": "removeLiquidityPool",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11115,
                        "src": "20183:19:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IConverterRegistryData_$13647_$_t_contract$_IConverterAnchor_$13349_$returns$__$",
                          "typeString": "function (contract IConverterRegistryData,contract IConverterAnchor)"
                        }
                      },
                      "id": 11272,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "20183:50:10",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 11273,
                    "nodeType": "ExpressionStatement",
                    "src": "20183:50:10"
                  }
                },
                {
                  "body": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 11297,
                          "name": "converterRegistryData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11240,
                          "src": "20480:21:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                            "typeString": "contract IConverterRegistryData"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 11300,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11287,
                              "src": "20530:1:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 11298,
                              "name": "_converter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11236,
                              "src": "20503:10:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IConverter_$13340",
                                "typeString": "contract IConverter"
                              }
                            },
                            "id": 11299,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "connectorTokens",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 13334,
                            "src": "20503:26:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_contract$_IERC20Token_$21127_$",
                              "typeString": "function (uint256) view external returns (contract IERC20Token)"
                            }
                          },
                          "id": 11301,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20503:29:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20Token_$21127",
                            "typeString": "contract IERC20Token"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 11302,
                          "name": "anchor",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11248,
                          "src": "20534:6:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                            "typeString": "contract IConverterAnchor"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                            "typeString": "contract IConverterRegistryData"
                          },
                          {
                            "typeIdentifier": "t_contract$_IERC20Token_$21127",
                            "typeString": "contract IERC20Token"
                          },
                          {
                            "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                            "typeString": "contract IConverterAnchor"
                          }
                        ],
                        "id": 11296,
                        "name": "removeConvertibleToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11161,
                        "src": "20457:22:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IConverterRegistryData_$13647_$_t_contract$_IERC20Token_$21127_$_t_contract$_IConverterAnchor_$13349_$returns$__$",
                          "typeString": "function (contract IConverterRegistryData,contract IERC20Token,contract IConverterAnchor)"
                        }
                      },
                      "id": 11303,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "20457:84:10",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 11304,
                    "nodeType": "ExpressionStatement",
                    "src": "20457:84:10"
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 11292,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 11290,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11287,
                      "src": "20416:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 11291,
                      "name": "reserveTokenCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11256,
                      "src": "20420:17:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "20416:21:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 11305,
                  "initializationExpression": {
                    "assignments": [
                      11287
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 11287,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11305,
                        "src": "20401:9:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11286,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "20401:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 11289,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 11288,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "20413:1:10",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "20401:13:10"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 11294,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "20439:3:10",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 11293,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11287,
                        "src": "20439:1:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 11295,
                    "nodeType": "ExpressionStatement",
                    "src": "20439:3:10"
                  },
                  "nodeType": "ForStatement",
                  "src": "20396:145:10"
                }
              ]
            },
            "documentation": null,
            "id": 11307,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "removeConverterInternal",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 11237,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11236,
                  "mutability": "mutable",
                  "name": "_converter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11307,
                  "src": "19751:21:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverter_$13340",
                    "typeString": "contract IConverter"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11235,
                    "name": "IConverter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13340,
                    "src": "19751:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverter_$13340",
                      "typeString": "contract IConverter"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "19750:23:10"
            },
            "returnParameters": {
              "id": 11238,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "19782:0:10"
            },
            "scope": 11667,
            "src": "19718:831:10",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 11379,
              "nodeType": "Block",
              "src": "20672:819:10",
              "statements": [
                {
                  "assignments": [
                    11317
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11317,
                      "mutability": "mutable",
                      "name": "converterRegistryData",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11379,
                      "src": "20683:44:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                        "typeString": "contract IConverterRegistryData"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 11316,
                        "name": "IConverterRegistryData",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 13647,
                        "src": "20683:22:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                          "typeString": "contract IConverterRegistryData"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11323,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 11320,
                            "name": "CONVERTER_REGISTRY_DATA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21548,
                            "src": "20763:23:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 11319,
                          "name": "addressOf",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21718,
                          "src": "20753:9:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                            "typeString": "function (bytes32) view returns (address)"
                          }
                        },
                        "id": 11321,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "20753:34:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 11318,
                      "name": "IConverterRegistryData",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13647,
                      "src": "20730:22:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_IConverterRegistryData_$13647_$",
                        "typeString": "type(contract IConverterRegistryData)"
                      }
                    },
                    "id": 11322,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "20730:58:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                      "typeString": "contract IConverterRegistryData"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "20683:105:10"
                },
                {
                  "assignments": [
                    11325
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11325,
                      "mutability": "mutable",
                      "name": "minAnchorCount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11379,
                      "src": "20799:22:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11324,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "20799:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11332,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 11328,
                          "name": "_reserveTokens",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11310,
                          "src": "20881:14:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
                            "typeString": "contract IERC20Token[] memory"
                          }
                        },
                        "id": 11330,
                        "indexExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 11329,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "20896:1:10",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "20881:17:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 11326,
                        "name": "converterRegistryData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11317,
                        "src": "20824:21:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                          "typeString": "contract IConverterRegistryData"
                        }
                      },
                      "id": 11327,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getConvertibleTokenSmartTokenCount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13620,
                      "src": "20824:56:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_contract$_IERC20Token_$21127_$returns$_t_uint256_$",
                        "typeString": "function (contract IERC20Token) view external returns (uint256)"
                      }
                    },
                    "id": 11331,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "20824:75:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "20799:100:10"
                },
                {
                  "assignments": [
                    11334
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11334,
                      "mutability": "mutable",
                      "name": "index",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11379,
                      "src": "20910:13:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11333,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "20910:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11336,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 11335,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "20926:1:10",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "20910:17:10"
                },
                {
                  "body": {
                    "id": 11370,
                    "nodeType": "Block",
                    "src": "21078:311:10",
                    "statements": [
                      {
                        "assignments": [
                          11349
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11349,
                            "mutability": "mutable",
                            "name": "convertibleTokenAnchorCount",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 11370,
                            "src": "21093:35:10",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11348,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "21093:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 11356,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 11352,
                                "name": "_reserveTokens",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11310,
                                "src": "21188:14:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
                                  "typeString": "contract IERC20Token[] memory"
                                }
                              },
                              "id": 11354,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 11353,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11338,
                                "src": "21203:1:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "21188:17:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                "typeString": "contract IERC20Token"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                "typeString": "contract IERC20Token"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 11350,
                              "name": "converterRegistryData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11317,
                              "src": "21131:21:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                                "typeString": "contract IConverterRegistryData"
                              }
                            },
                            "id": 11351,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getConvertibleTokenSmartTokenCount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 13620,
                            "src": "21131:56:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_contract$_IERC20Token_$21127_$returns$_t_uint256_$",
                              "typeString": "function (contract IERC20Token) view external returns (uint256)"
                            }
                          },
                          "id": 11355,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "21131:75:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "21093:113:10"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11359,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 11357,
                            "name": "minAnchorCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11325,
                            "src": "21225:14:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 11358,
                            "name": "convertibleTokenAnchorCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11349,
                            "src": "21242:27:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "21225:44:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 11369,
                        "nodeType": "IfStatement",
                        "src": "21221:157:10",
                        "trueBody": {
                          "id": 11368,
                          "nodeType": "Block",
                          "src": "21271:107:10",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 11362,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 11360,
                                  "name": "minAnchorCount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11325,
                                  "src": "21290:14:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 11361,
                                  "name": "convertibleTokenAnchorCount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11349,
                                  "src": "21307:27:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "21290:44:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 11363,
                              "nodeType": "ExpressionStatement",
                              "src": "21290:44:10"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 11366,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 11364,
                                  "name": "index",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11334,
                                  "src": "21353:5:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 11365,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11338,
                                  "src": "21361:1:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "21353:9:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 11367,
                              "nodeType": "ExpressionStatement",
                              "src": "21353:9:10"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 11344,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 11341,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11338,
                      "src": "21046:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 11342,
                        "name": "_reserveTokens",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11310,
                        "src": "21050:14:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
                          "typeString": "contract IERC20Token[] memory"
                        }
                      },
                      "id": 11343,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "21050:21:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "21046:25:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 11371,
                  "initializationExpression": {
                    "assignments": [
                      11338
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 11338,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11371,
                        "src": "21031:9:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11337,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "21031:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 11340,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 11339,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "21043:1:10",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "21031:13:10"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 11346,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "21073:3:10",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 11345,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11338,
                        "src": "21073:1:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 11347,
                    "nodeType": "ExpressionStatement",
                    "src": "21073:3:10"
                  },
                  "nodeType": "ForStatement",
                  "src": "21026:363:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 11374,
                          "name": "_reserveTokens",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11310,
                          "src": "21461:14:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
                            "typeString": "contract IERC20Token[] memory"
                          }
                        },
                        "id": 11376,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 11375,
                          "name": "index",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11334,
                          "src": "21476:5:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "21461:21:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 11372,
                        "name": "converterRegistryData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11317,
                        "src": "21408:21:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverterRegistryData_$13647",
                          "typeString": "contract IConverterRegistryData"
                        }
                      },
                      "id": 11373,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getConvertibleTokenSmartTokens",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13628,
                      "src": "21408:52:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_contract$_IERC20Token_$21127_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                        "typeString": "function (contract IERC20Token) view external returns (address[] memory)"
                      }
                    },
                    "id": 11377,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "21408:75:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                      "typeString": "address[] memory"
                    }
                  },
                  "functionReturnParameters": 11315,
                  "id": 11378,
                  "nodeType": "Return",
                  "src": "21401:82:10"
                }
              ]
            },
            "documentation": null,
            "id": 11380,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getLeastFrequentTokenAnchors",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 11311,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11310,
                  "mutability": "mutable",
                  "name": "_reserveTokens",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11380,
                  "src": "20595:35:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
                    "typeString": "contract IERC20Token[]"
                  },
                  "typeName": {
                    "baseType": {
                      "contractScope": null,
                      "id": 11308,
                      "name": "IERC20Token",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 21127,
                      "src": "20595:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IERC20Token_$21127",
                        "typeString": "contract IERC20Token"
                      }
                    },
                    "id": 11309,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "20595:13:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_storage_ptr",
                      "typeString": "contract IERC20Token[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "20594:37:10"
            },
            "returnParameters": {
              "id": 11315,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11314,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11380,
                  "src": "20654:16:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 11312,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "20654:7:10",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 11313,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "20654:9:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "20653:18:10"
            },
            "scope": 11667,
            "src": "20557:934:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 11445,
              "nodeType": "Block",
              "src": "21673:484:10",
              "statements": [
                {
                  "assignments": [
                    11396
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11396,
                      "mutability": "mutable",
                      "name": "reserveTokenCount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11445,
                      "src": "21684:25:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11395,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "21684:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11400,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 11397,
                        "name": "_converter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11382,
                        "src": "21712:10:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      "id": 11398,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "connectorTokenCount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13339,
                      "src": "21712:30:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint16_$",
                        "typeString": "function () view external returns (uint16)"
                      }
                    },
                    "id": 11399,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "21712:32:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "21684:60:10"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    },
                    "id": 11406,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 11401,
                      "name": "_type",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11384,
                      "src": "21761:5:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 11403,
                          "name": "_converter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11382,
                          "src": "21787:10:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IConverter_$13340",
                            "typeString": "contract IConverter"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 11404,
                          "name": "reserveTokenCount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11396,
                          "src": "21799:17:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_IConverter_$13340",
                            "typeString": "contract IConverter"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 11402,
                        "name": "getConverterType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11520,
                        "src": "21770:16:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_contract$_IConverter_$13340_$_t_uint256_$returns$_t_uint16_$",
                          "typeString": "function (contract IConverter,uint256) view returns (uint16)"
                        }
                      },
                      "id": 11405,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "21770:47:10",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "src": "21761:56:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 11409,
                  "nodeType": "IfStatement",
                  "src": "21757:87:10",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "hexValue": "66616c7365",
                      "id": 11407,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "21839:5:10",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "false"
                    },
                    "functionReturnParameters": 11394,
                    "id": 11408,
                    "nodeType": "Return",
                    "src": "21832:12:10"
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 11413,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 11410,
                        "name": "_reserveTokens",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11387,
                        "src": "21861:14:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
                          "typeString": "contract IERC20Token[] memory"
                        }
                      },
                      "id": 11411,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "21861:21:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 11412,
                      "name": "reserveTokenCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11396,
                      "src": "21886:17:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "21861:42:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 11416,
                  "nodeType": "IfStatement",
                  "src": "21857:73:10",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "hexValue": "66616c7365",
                      "id": 11414,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "21925:5:10",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "false"
                    },
                    "functionReturnParameters": 11394,
                    "id": 11415,
                    "nodeType": "Return",
                    "src": "21918:12:10"
                  }
                },
                {
                  "body": {
                    "id": 11441,
                    "nodeType": "Block",
                    "src": "21995:131:10",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          },
                          "id": 11437,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 11428,
                              "name": "_reserveWeights",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11390,
                              "src": "22014:15:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
                                "typeString": "uint32[] memory"
                              }
                            },
                            "id": 11430,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 11429,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11418,
                              "src": "22030:1:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "22014:18:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 11432,
                                "name": "_converter",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11382,
                                "src": "22053:10:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IConverter_$13340",
                                  "typeString": "contract IConverter"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 11433,
                                  "name": "_reserveTokens",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11387,
                                  "src": "22065:14:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
                                    "typeString": "contract IERC20Token[] memory"
                                  }
                                },
                                "id": 11435,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 11434,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11418,
                                  "src": "22080:1:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "22065:17:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                  "typeString": "contract IERC20Token"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IConverter_$13340",
                                  "typeString": "contract IConverter"
                                },
                                {
                                  "typeIdentifier": "t_contract$_IERC20Token_$21127",
                                  "typeString": "contract IERC20Token"
                                }
                              ],
                              "id": 11431,
                              "name": "getReserveWeight",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11465,
                              "src": "22036:16:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_contract$_IConverter_$13340_$_t_contract$_IERC20Token_$21127_$returns$_t_uint32_$",
                                "typeString": "function (contract IConverter,contract IERC20Token) view returns (uint32)"
                              }
                            },
                            "id": 11436,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "22036:47:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "src": "22014:69:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 11440,
                        "nodeType": "IfStatement",
                        "src": "22010:104:10",
                        "trueBody": {
                          "expression": {
                            "argumentTypes": null,
                            "hexValue": "66616c7365",
                            "id": 11438,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "22109:5:10",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          },
                          "functionReturnParameters": 11394,
                          "id": 11439,
                          "nodeType": "Return",
                          "src": "22102:12:10"
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 11424,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 11421,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11418,
                      "src": "21963:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 11422,
                        "name": "_reserveTokens",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11387,
                        "src": "21967:14:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
                          "typeString": "contract IERC20Token[] memory"
                        }
                      },
                      "id": 11423,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "21967:21:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "21963:25:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 11442,
                  "initializationExpression": {
                    "assignments": [
                      11418
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 11418,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11442,
                        "src": "21948:9:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11417,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "21948:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 11420,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 11419,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "21960:1:10",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "21948:13:10"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 11426,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "21990:3:10",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 11425,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11418,
                        "src": "21990:1:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 11427,
                    "nodeType": "ExpressionStatement",
                    "src": "21990:3:10"
                  },
                  "nodeType": "ForStatement",
                  "src": "21943:183:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 11443,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "22145:4:10",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 11394,
                  "id": 11444,
                  "nodeType": "Return",
                  "src": "22138:11:10"
                }
              ]
            },
            "documentation": null,
            "id": 11446,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isConverterReserveConfigEqual",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 11391,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11382,
                  "mutability": "mutable",
                  "name": "_converter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11446,
                  "src": "21538:21:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverter_$13340",
                    "typeString": "contract IConverter"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11381,
                    "name": "IConverter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13340,
                    "src": "21538:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverter_$13340",
                      "typeString": "contract IConverter"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11384,
                  "mutability": "mutable",
                  "name": "_type",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11446,
                  "src": "21561:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 11383,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "21561:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11387,
                  "mutability": "mutable",
                  "name": "_reserveTokens",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11446,
                  "src": "21575:35:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
                    "typeString": "contract IERC20Token[]"
                  },
                  "typeName": {
                    "baseType": {
                      "contractScope": null,
                      "id": 11385,
                      "name": "IERC20Token",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 21127,
                      "src": "21575:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IERC20Token_$21127",
                        "typeString": "contract IERC20Token"
                      }
                    },
                    "id": 11386,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "21575:13:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_storage_ptr",
                      "typeString": "contract IERC20Token[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11390,
                  "mutability": "mutable",
                  "name": "_reserveWeights",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11446,
                  "src": "21612:31:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
                    "typeString": "uint32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 11388,
                      "name": "uint32",
                      "nodeType": "ElementaryTypeName",
                      "src": "21612:6:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      }
                    },
                    "id": 11389,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "21612:8:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint32_$dyn_storage_ptr",
                      "typeString": "uint32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "21537:107:10"
            },
            "returnParameters": {
              "id": 11394,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11393,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11446,
                  "src": "21667:4:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 11392,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "21667:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "21666:6:10"
            },
            "scope": 11667,
            "src": "21499:658:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 11464,
              "nodeType": "Block",
              "src": "22400:102:10",
              "statements": [
                {
                  "assignments": [
                    null,
                    11456,
                    null,
                    null,
                    null
                  ],
                  "declarations": [
                    null,
                    {
                      "constant": false,
                      "id": 11456,
                      "mutability": "mutable",
                      "name": "weight",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11464,
                      "src": "22414:13:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 11455,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "22414:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    null,
                    null,
                    null
                  ],
                  "id": 11461,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11459,
                        "name": "_reserveToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11450,
                        "src": "22456:13:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 11457,
                        "name": "_converter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11448,
                        "src": "22434:10:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConverter_$13340",
                          "typeString": "contract IConverter"
                        }
                      },
                      "id": 11458,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "connectors",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13320,
                      "src": "22434:21:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_contract$_IERC20Token_$21127_$returns$_t_uint256_$_t_uint32_$_t_bool_$_t_bool_$_t_bool_$",
                        "typeString": "function (contract IERC20Token) view external returns (uint256,uint32,bool,bool,bool)"
                      }
                    },
                    "id": 11460,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "22434:36:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint32_$_t_bool_$_t_bool_$_t_bool_$",
                      "typeString": "tuple(uint256,uint32,bool,bool,bool)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "22411:59:10"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 11462,
                    "name": "weight",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11456,
                    "src": "22488:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "functionReturnParameters": 11454,
                  "id": 11463,
                  "nodeType": "Return",
                  "src": "22481:13:10"
                }
              ]
            },
            "documentation": null,
            "id": 11465,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getReserveWeight",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 11451,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11448,
                  "mutability": "mutable",
                  "name": "_converter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11465,
                  "src": "22320:21:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverter_$13340",
                    "typeString": "contract IConverter"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11447,
                    "name": "IConverter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13340,
                    "src": "22320:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverter_$13340",
                      "typeString": "contract IConverter"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11450,
                  "mutability": "mutable",
                  "name": "_reserveToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11465,
                  "src": "22343:25:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20Token_$21127",
                    "typeString": "contract IERC20Token"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11449,
                    "name": "IERC20Token",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 21127,
                    "src": "22343:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                      "typeString": "contract IERC20Token"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "22319:50:10"
            },
            "returnParameters": {
              "id": 11454,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11453,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11465,
                  "src": "22392:6:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 11452,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "22392:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "22391:8:10"
            },
            "scope": 11667,
            "src": "22294:208:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 11473,
            "mutability": "constant",
            "name": "CONVERTER_TYPE_FUNC_SELECTOR",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 11667,
            "src": "22510:91:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 11466,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "22510:6:10",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "arguments": [
                {
                  "argumentTypes": null,
                  "arguments": [
                    {
                      "argumentTypes": null,
                      "hexValue": "636f6e766572746572547970652829",
                      "id": 11470,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "string",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "22582:17:10",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_stringliteral_3e8ff43f1cd1bc4d06a757749a6e6e9fd9d44e027b0f9466e12cafa4eda5c2dd",
                        "typeString": "literal_string \"converterType()\""
                      },
                      "value": "converterType()"
                    }
                  ],
                  "expression": {
                    "argumentTypes": [
                      {
                        "typeIdentifier": "t_stringliteral_3e8ff43f1cd1bc4d06a757749a6e6e9fd9d44e027b0f9466e12cafa4eda5c2dd",
                        "typeString": "literal_string \"converterType()\""
                      }
                    ],
                    "id": 11469,
                    "name": "keccak256",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": -8,
                    "src": "22572:9:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                      "typeString": "function (bytes memory) pure returns (bytes32)"
                    }
                  },
                  "id": 11471,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "functionCall",
                  "lValueRequested": false,
                  "names": [],
                  "nodeType": "FunctionCall",
                  "src": "22572:28:10",
                  "tryCall": false,
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                ],
                "id": 11468,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "lValueRequested": false,
                "nodeType": "ElementaryTypeNameExpression",
                "src": "22565:6:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_type$_t_bytes4_$",
                  "typeString": "type(bytes4)"
                },
                "typeName": {
                  "id": 11467,
                  "name": "bytes4",
                  "nodeType": "ElementaryTypeName",
                  "src": "22565:6:10",
                  "typeDescriptions": {
                    "typeIdentifier": null,
                    "typeString": null
                  }
                }
              },
              "id": 11472,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "typeConversion",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "22565:36:10",
              "tryCall": false,
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "visibility": "private"
          },
          {
            "body": {
              "id": 11519,
              "nodeType": "Block",
              "src": "22843:297:10",
              "statements": [
                {
                  "assignments": [
                    11483,
                    11485
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11483,
                      "mutability": "mutable",
                      "name": "success",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11519,
                      "src": "22855:12:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 11482,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "22855:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11485,
                      "mutability": "mutable",
                      "name": "returnData",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 11519,
                      "src": "22869:23:10",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 11484,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "22869:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11496,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 11493,
                            "name": "CONVERTER_TYPE_FUNC_SELECTOR",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11473,
                            "src": "22950:28:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 11491,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "22927:3:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 11492,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodeWithSelector",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "22927:22:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (bytes4) pure returns (bytes memory)"
                          }
                        },
                        "id": 11494,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "22927:52:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 11488,
                            "name": "_converter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11475,
                            "src": "22904:10:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IConverter_$13340",
                              "typeString": "contract IConverter"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IConverter_$13340",
                              "typeString": "contract IConverter"
                            }
                          ],
                          "id": 11487,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "22896:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 11486,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "22896:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 11489,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "22896:19:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "id": 11490,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "staticcall",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "22896:30:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                      }
                    },
                    "id": 11495,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "22896:84:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                      "typeString": "tuple(bool,bytes memory)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "22854:126:10"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 11502,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 11497,
                      "name": "success",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11483,
                      "src": "22995:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 11501,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 11498,
                          "name": "returnData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11485,
                          "src": "23006:10:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 11499,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "23006:17:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "3332",
                        "id": 11500,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "23027:2:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_32_by_1",
                          "typeString": "int_const 32"
                        },
                        "value": "32"
                      },
                      "src": "23006:23:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "22995:34:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 11511,
                  "nodeType": "IfStatement",
                  "src": "22991:93:10",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 11505,
                          "name": "returnData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11485,
                          "src": "23063:10:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 11507,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "23076:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint16_$",
                                "typeString": "type(uint16)"
                              },
                              "typeName": {
                                "id": 11506,
                                "name": "uint16",
                                "nodeType": "ElementaryTypeName",
                                "src": "23076:6:10",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            }
                          ],
                          "id": 11508,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "23075:8:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint16_$",
                            "typeString": "type(uint16)"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          },
                          {
                            "typeIdentifier": "t_type$_t_uint16_$",
                            "typeString": "type(uint16)"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 11503,
                          "name": "abi",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -1,
                          "src": "23052:3:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_abi",
                            "typeString": "abi"
                          }
                        },
                        "id": 11504,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberName": "decode",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "23052:10:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                          "typeString": "function () pure"
                        }
                      },
                      "id": 11509,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "23052:32:10",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "functionReturnParameters": 11481,
                    "id": 11510,
                    "nodeType": "Return",
                    "src": "23045:39:10"
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "condition": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 11514,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 11512,
                        "name": "_reserveTokenCount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11477,
                        "src": "23102:18:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 11513,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "23123:1:10",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "src": "23102:22:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 11516,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "23131:1:10",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "id": 11517,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "Conditional",
                    "src": "23102:30:10",
                    "trueExpression": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 11515,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "23127:1:10",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "functionReturnParameters": 11481,
                  "id": 11518,
                  "nodeType": "Return",
                  "src": "23095:37:10"
                }
              ]
            },
            "documentation": null,
            "id": 11520,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getConverterType",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 11478,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11475,
                  "mutability": "mutable",
                  "name": "_converter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11520,
                  "src": "22762:21:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverter_$13340",
                    "typeString": "contract IConverter"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11474,
                    "name": "IConverter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13340,
                    "src": "22762:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverter_$13340",
                      "typeString": "contract IConverter"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11477,
                  "mutability": "mutable",
                  "name": "_reserveTokenCount",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11520,
                  "src": "22785:26:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11476,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "22785:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "22761:51:10"
            },
            "returnParameters": {
              "id": 11481,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11480,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11520,
                  "src": "22835:6:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 11479,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "22835:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "22834:8:10"
            },
            "scope": 11667,
            "src": "22736:404:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 11529,
              "nodeType": "Block",
              "src": "23296:42:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 11526,
                      "name": "getAnchorCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10514,
                      "src": "23314:14:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                        "typeString": "function () view returns (uint256)"
                      }
                    },
                    "id": 11527,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "23314:16:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 11525,
                  "id": 11528,
                  "nodeType": "Return",
                  "src": "23307:23:10"
                }
              ]
            },
            "documentation": {
              "id": 11521,
              "nodeType": "StructuredDocumentation",
              "src": "23148:82:10",
              "text": " @dev deprecated, backward compatibility, use `getAnchorCount`"
            },
            "functionSelector": "e571049b",
            "id": 11530,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getSmartTokenCount",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 11522,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "23263:2:10"
            },
            "returnParameters": {
              "id": 11525,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11524,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11530,
                  "src": "23287:7:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11523,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "23287:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "23286:9:10"
            },
            "scope": 11667,
            "src": "23236:102:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 11540,
              "nodeType": "Block",
              "src": "23495:38:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 11537,
                      "name": "getAnchors",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10531,
                      "src": "23513:10:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                        "typeString": "function () view returns (address[] memory)"
                      }
                    },
                    "id": 11538,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "23513:12:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                      "typeString": "address[] memory"
                    }
                  },
                  "functionReturnParameters": 11536,
                  "id": 11539,
                  "nodeType": "Return",
                  "src": "23506:19:10"
                }
              ]
            },
            "documentation": {
              "id": 11531,
              "nodeType": "StructuredDocumentation",
              "src": "23346:78:10",
              "text": " @dev deprecated, backward compatibility, use `getAnchors`"
            },
            "functionSelector": "04ceaf41",
            "id": 11541,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getSmartTokens",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 11532,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "23453:2:10"
            },
            "returnParameters": {
              "id": 11536,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11535,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11541,
                  "src": "23477:16:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 11533,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "23477:7:10",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 11534,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "23477:9:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "23476:18:10"
            },
            "scope": 11667,
            "src": "23430:103:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 11553,
              "nodeType": "Block",
              "src": "23702:43:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11550,
                        "name": "_index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11544,
                        "src": "23730:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 11549,
                      "name": "getAnchor",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10550,
                      "src": "23720:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_contract$_IConverterAnchor_$13349_$",
                        "typeString": "function (uint256) view returns (contract IConverterAnchor)"
                      }
                    },
                    "id": 11551,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "23720:17:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "functionReturnParameters": 11548,
                  "id": 11552,
                  "nodeType": "Return",
                  "src": "23713:24:10"
                }
              ]
            },
            "documentation": {
              "id": 11542,
              "nodeType": "StructuredDocumentation",
              "src": "23541:77:10",
              "text": " @dev deprecated, backward compatibility, use `getAnchor`"
            },
            "functionSelector": "a109d214",
            "id": 11554,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getSmartToken",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 11545,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11544,
                  "mutability": "mutable",
                  "name": "_index",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11554,
                  "src": "23647:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11543,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "23647:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "23646:16:10"
            },
            "returnParameters": {
              "id": 11548,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11547,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11554,
                  "src": "23684:16:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                    "typeString": "contract IConverterAnchor"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11546,
                    "name": "IConverterAnchor",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13349,
                    "src": "23684:16:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "23683:18:10"
            },
            "scope": 11667,
            "src": "23624:121:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 11566,
              "nodeType": "Block",
              "src": "23900:42:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11563,
                        "name": "_value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11557,
                        "src": "23927:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 11562,
                      "name": "isAnchor",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10569,
                      "src": "23918:8:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                        "typeString": "function (address) view returns (bool)"
                      }
                    },
                    "id": 11564,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "23918:16:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 11561,
                  "id": 11565,
                  "nodeType": "Return",
                  "src": "23911:23:10"
                }
              ]
            },
            "documentation": {
              "id": 11555,
              "nodeType": "StructuredDocumentation",
              "src": "23753:76:10",
              "text": " @dev deprecated, backward compatibility, use `isAnchor`"
            },
            "functionSelector": "4123ef60",
            "id": 11567,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isSmartToken",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 11558,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11557,
                  "mutability": "mutable",
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11567,
                  "src": "23857:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11556,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "23857:7:10",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "23856:16:10"
            },
            "returnParameters": {
              "id": 11561,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11560,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11567,
                  "src": "23894:4:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 11559,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "23894:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "23893:6:10"
            },
            "scope": 11667,
            "src": "23835:107:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 11579,
              "nodeType": "Block",
              "src": "24159:75:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11576,
                        "name": "_convertibleToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11570,
                        "src": "24208:17:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        }
                      ],
                      "id": 11575,
                      "name": "getConvertibleTokenAnchorCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10730,
                      "src": "24177:30:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_contract$_IERC20Token_$21127_$returns$_t_uint256_$",
                        "typeString": "function (contract IERC20Token) view returns (uint256)"
                      }
                    },
                    "id": 11577,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "24177:49:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 11574,
                  "id": 11578,
                  "nodeType": "Return",
                  "src": "24170:56:10"
                }
              ]
            },
            "documentation": {
              "id": 11568,
              "nodeType": "StructuredDocumentation",
              "src": "23950:98:10",
              "text": " @dev deprecated, backward compatibility, use `getConvertibleTokenAnchorCount`"
            },
            "functionSelector": "a43d5e94",
            "id": 11580,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getConvertibleTokenSmartTokenCount",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 11571,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11570,
                  "mutability": "mutable",
                  "name": "_convertibleToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11580,
                  "src": "24098:29:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20Token_$21127",
                    "typeString": "contract IERC20Token"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11569,
                    "name": "IERC20Token",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 21127,
                    "src": "24098:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                      "typeString": "contract IERC20Token"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "24097:31:10"
            },
            "returnParameters": {
              "id": 11574,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11573,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11580,
                  "src": "24150:7:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11572,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "24150:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "24149:9:10"
            },
            "scope": 11667,
            "src": "24054:180:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 11593,
              "nodeType": "Block",
              "src": "24452:71:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11590,
                        "name": "_convertibleToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11583,
                        "src": "24497:17:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        }
                      ],
                      "id": 11589,
                      "name": "getConvertibleTokenAnchors",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10750,
                      "src": "24470:26:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_contract$_IERC20Token_$21127_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                        "typeString": "function (contract IERC20Token) view returns (address[] memory)"
                      }
                    },
                    "id": 11591,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "24470:45:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                      "typeString": "address[] memory"
                    }
                  },
                  "functionReturnParameters": 11588,
                  "id": 11592,
                  "nodeType": "Return",
                  "src": "24463:52:10"
                }
              ]
            },
            "documentation": {
              "id": 11581,
              "nodeType": "StructuredDocumentation",
              "src": "24242:94:10",
              "text": " @dev deprecated, backward compatibility, use `getConvertibleTokenAnchors`"
            },
            "functionSelector": "f4fb86c0",
            "id": 11594,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getConvertibleTokenSmartTokens",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 11584,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11583,
                  "mutability": "mutable",
                  "name": "_convertibleToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11594,
                  "src": "24382:29:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20Token_$21127",
                    "typeString": "contract IERC20Token"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11582,
                    "name": "IERC20Token",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 21127,
                    "src": "24382:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                      "typeString": "contract IERC20Token"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "24381:31:10"
            },
            "returnParameters": {
              "id": 11588,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11587,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11594,
                  "src": "24434:16:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 11585,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "24434:7:10",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 11586,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "24434:9:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "24433:18:10"
            },
            "scope": 11667,
            "src": "24342:181:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 11609,
              "nodeType": "Block",
              "src": "24755:78:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11605,
                        "name": "_convertibleToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11597,
                        "src": "24799:17:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11606,
                        "name": "_index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11599,
                        "src": "24818:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 11604,
                      "name": "getConvertibleTokenAnchor",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10772,
                      "src": "24773:25:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_contract$_IERC20Token_$21127_$_t_uint256_$returns$_t_contract$_IConverterAnchor_$13349_$",
                        "typeString": "function (contract IERC20Token,uint256) view returns (contract IConverterAnchor)"
                      }
                    },
                    "id": 11607,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "24773:52:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "functionReturnParameters": 11603,
                  "id": 11608,
                  "nodeType": "Return",
                  "src": "24766:59:10"
                }
              ]
            },
            "documentation": {
              "id": 11595,
              "nodeType": "StructuredDocumentation",
              "src": "24531:93:10",
              "text": " @dev deprecated, backward compatibility, use `getConvertibleTokenAnchor`"
            },
            "functionSelector": "d6c4b5b2",
            "id": 11610,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getConvertibleTokenSmartToken",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 11600,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11597,
                  "mutability": "mutable",
                  "name": "_convertibleToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11610,
                  "src": "24669:29:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20Token_$21127",
                    "typeString": "contract IERC20Token"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11596,
                    "name": "IERC20Token",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 21127,
                    "src": "24669:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                      "typeString": "contract IERC20Token"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11599,
                  "mutability": "mutable",
                  "name": "_index",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11610,
                  "src": "24700:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11598,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "24700:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "24668:47:10"
            },
            "returnParameters": {
              "id": 11603,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11602,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11610,
                  "src": "24737:16:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                    "typeString": "contract IConverterAnchor"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11601,
                    "name": "IConverterAnchor",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13349,
                    "src": "24737:16:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "24736:18:10"
            },
            "scope": 11667,
            "src": "24630:203:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 11625,
              "nodeType": "Block",
              "src": "25051:77:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11621,
                        "name": "_convertibleToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11613,
                        "src": "25094:17:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11622,
                        "name": "_value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11615,
                        "src": "25113:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IERC20Token_$21127",
                          "typeString": "contract IERC20Token"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 11620,
                      "name": "isConvertibleTokenAnchor",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10794,
                      "src": "25069:24:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_contract$_IERC20Token_$21127_$_t_address_$returns$_t_bool_$",
                        "typeString": "function (contract IERC20Token,address) view returns (bool)"
                      }
                    },
                    "id": 11623,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "25069:51:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 11619,
                  "id": 11624,
                  "nodeType": "Return",
                  "src": "25062:58:10"
                }
              ]
            },
            "documentation": {
              "id": 11611,
              "nodeType": "StructuredDocumentation",
              "src": "24841:92:10",
              "text": " @dev deprecated, backward compatibility, use `isConvertibleTokenAnchor`"
            },
            "functionSelector": "725b8786",
            "id": 11626,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isConvertibleTokenSmartToken",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 11616,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11613,
                  "mutability": "mutable",
                  "name": "_convertibleToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11626,
                  "src": "24977:29:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20Token_$21127",
                    "typeString": "contract IERC20Token"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11612,
                    "name": "IERC20Token",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 21127,
                    "src": "24977:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Token_$21127",
                      "typeString": "contract IERC20Token"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11615,
                  "mutability": "mutable",
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11626,
                  "src": "25008:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11614,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "25008:7:10",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "24976:47:10"
            },
            "returnParameters": {
              "id": 11619,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11618,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11626,
                  "src": "25045:4:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 11617,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "25045:4:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "25044:6:10"
            },
            "scope": 11667,
            "src": "24939:189:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 11640,
              "nodeType": "Block",
              "src": "25341:62:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11637,
                        "name": "_smartTokens",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11630,
                        "src": "25382:12:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      ],
                      "id": 11636,
                      "name": "getConvertersByAnchors",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10847,
                      "src": "25359:22:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_contract$_IConverter_$13340_$dyn_memory_ptr_$",
                        "typeString": "function (address[] memory) view returns (contract IConverter[] memory)"
                      }
                    },
                    "id": 11638,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "25359:36:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_contract$_IConverter_$13340_$dyn_memory_ptr",
                      "typeString": "contract IConverter[] memory"
                    }
                  },
                  "functionReturnParameters": 11635,
                  "id": 11639,
                  "nodeType": "Return",
                  "src": "25352:43:10"
                }
              ]
            },
            "documentation": {
              "id": 11627,
              "nodeType": "StructuredDocumentation",
              "src": "25136:90:10",
              "text": " @dev deprecated, backward compatibility, use `getConvertersByAnchors`"
            },
            "functionSelector": "1f8e2620",
            "id": 11641,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getConvertersBySmartTokens",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 11631,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11630,
                  "mutability": "mutable",
                  "name": "_smartTokens",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11641,
                  "src": "25268:29:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 11628,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "25268:7:10",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 11629,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "25268:9:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "25267:31:10"
            },
            "returnParameters": {
              "id": 11635,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11634,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11641,
                  "src": "25320:19:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_contract$_IConverter_$13340_$dyn_memory_ptr",
                    "typeString": "contract IConverter[]"
                  },
                  "typeName": {
                    "baseType": {
                      "contractScope": null,
                      "id": 11632,
                      "name": "IConverter",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 13340,
                      "src": "25320:10:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IConverter_$13340",
                        "typeString": "contract IConverter"
                      }
                    },
                    "id": 11633,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "25320:12:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_contract$_IConverter_$13340_$dyn_storage_ptr",
                      "typeString": "contract IConverter[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "25319:21:10"
            },
            "scope": 11667,
            "src": "25232:171:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 11665,
              "nodeType": "Block",
              "src": "25659:118:10",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11657,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 11654,
                              "name": "_reserveTokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11645,
                              "src": "25702:14:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
                                "typeString": "contract IERC20Token[] memory"
                              }
                            },
                            "id": 11655,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "25702:21:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 11656,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "25726:1:10",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "25702:25:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 11659,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "25734:1:10",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "id": 11660,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "Conditional",
                        "src": "25702:33:10",
                        "trueExpression": {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 11658,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "25730:1:10",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11661,
                        "name": "_reserveTokens",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11645,
                        "src": "25737:14:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
                          "typeString": "contract IERC20Token[] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11662,
                        "name": "_reserveWeights",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11648,
                        "src": "25753:15:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
                          "typeString": "uint32[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
                          "typeString": "contract IERC20Token[] memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
                          "typeString": "uint32[] memory"
                        }
                      ],
                      "id": 11653,
                      "name": "getLiquidityPoolByConfig",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11031,
                      "src": "25677:24:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint16_$_t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr_$_t_array$_t_uint32_$dyn_memory_ptr_$returns$_t_contract$_IConverterAnchor_$13349_$",
                        "typeString": "function (uint16,contract IERC20Token[] memory,uint32[] memory) view returns (contract IConverterAnchor)"
                      }
                    },
                    "id": 11663,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "25677:92:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "functionReturnParameters": 11652,
                  "id": 11664,
                  "nodeType": "Return",
                  "src": "25670:99:10"
                }
              ]
            },
            "documentation": {
              "id": 11642,
              "nodeType": "StructuredDocumentation",
              "src": "25411:92:10",
              "text": " @dev deprecated, backward compatibility, use `getLiquidityPoolByConfig`"
            },
            "functionSelector": "c22b82f0",
            "id": 11666,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getLiquidityPoolByReserveConfig",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 11649,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11645,
                  "mutability": "mutable",
                  "name": "_reserveTokens",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11666,
                  "src": "25550:35:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_memory_ptr",
                    "typeString": "contract IERC20Token[]"
                  },
                  "typeName": {
                    "baseType": {
                      "contractScope": null,
                      "id": 11643,
                      "name": "IERC20Token",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 21127,
                      "src": "25550:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IERC20Token_$21127",
                        "typeString": "contract IERC20Token"
                      }
                    },
                    "id": 11644,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "25550:13:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_contract$_IERC20Token_$21127_$dyn_storage_ptr",
                      "typeString": "contract IERC20Token[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11648,
                  "mutability": "mutable",
                  "name": "_reserveWeights",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11666,
                  "src": "25587:31:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr",
                    "typeString": "uint32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 11646,
                      "name": "uint32",
                      "nodeType": "ElementaryTypeName",
                      "src": "25587:6:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      }
                    },
                    "id": 11647,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "25587:8:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint32_$dyn_storage_ptr",
                      "typeString": "uint32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "25549:70:10"
            },
            "returnParameters": {
              "id": 11652,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11651,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 11666,
                  "src": "25641:16:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                    "typeString": "contract IConverterAnchor"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11650,
                    "name": "IConverterAnchor",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 13349,
                    "src": "25641:16:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConverterAnchor_$13349",
                      "typeString": "contract IConverterAnchor"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "25640:18:10"
            },
            "scope": 11667,
            "src": "25509:268:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          }
        ],
        "scope": 11668,
        "src": "1414:24366:10"
      }
    ],
    "src": "52:25730:10"
  },
  "compiler": {
    "name": "solc",
    "version": "0.6.12+commit.27d51765.Emscripten.clang"
  },
  "networks": {
    "42": {
      "events": {
        "0xc0a6d303d67b7ed9fa0abae1c48878df32acc0e7ca4334c7dad2bceeee5956fd": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_anchor",
              "type": "address"
            }
          ],
          "name": "ConverterAnchorAdded",
          "type": "event"
        },
        "0xbfdf1baaa7e4871111360083540f067050014f651c9e4610a2a4a4bdf8bfab5d": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_anchor",
              "type": "address"
            }
          ],
          "name": "ConverterAnchorRemoved",
          "type": "event"
        },
        "0xf2e7cf6d6ed3f77039511409a43d4fa5108f09ab71d72b014380364c910233a5": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IERC20Token",
              "name": "_convertibleToken",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_smartToken",
              "type": "address"
            }
          ],
          "name": "ConvertibleTokenAdded",
          "type": "event"
        },
        "0x9430ad6ff45d6c3e126c7711bf0036bd9bc6b202fa19628abd88e59cf43ced43": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IERC20Token",
              "name": "_convertibleToken",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_smartToken",
              "type": "address"
            }
          ],
          "name": "ConvertibleTokenRemoved",
          "type": "event"
        },
        "0xb893f883ef734b712208a877459424ee509832c57e0461fb1ac99ed4d42f2d89": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_liquidityPool",
              "type": "address"
            }
          ],
          "name": "LiquidityPoolAdded",
          "type": "event"
        },
        "0x59c3fbcae88f30e9b0e35c132a7f68c53231dffa4722f197c7ecb0ee013eee60": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_liquidityPool",
              "type": "address"
            }
          ],
          "name": "LiquidityPoolRemoved",
          "type": "event"
        },
        "0x343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "_prevOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "_newOwner",
              "type": "address"
            }
          ],
          "name": "OwnerUpdate",
          "type": "event"
        },
        "0x88881feecdf61136ac4bdb1f681f2f3746a82910263d21ffea94750d2a78c0ab": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_smartToken",
              "type": "address"
            }
          ],
          "name": "SmartTokenAdded",
          "type": "event"
        },
        "0x2aff63790c7da80d1c50ede92d23bc841c384837735c92c184331f3d7b91e5bf": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_smartToken",
              "type": "address"
            }
          ],
          "name": "SmartTokenRemoved",
          "type": "event"
        }
      },
      "links": {},
      "address": "0xCF60ebC445b636a5ab787F9E8BC465A2A3eF8299",
      "transactionHash": "0xea7ab1f17fff15b657a861099e05cfd8196aa6f1062785212d159ddfb0bc09be"
    },
    "8995": {
      "events": {
        "0xc0a6d303d67b7ed9fa0abae1c48878df32acc0e7ca4334c7dad2bceeee5956fd": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_anchor",
              "type": "address"
            }
          ],
          "name": "ConverterAnchorAdded",
          "type": "event"
        },
        "0xbfdf1baaa7e4871111360083540f067050014f651c9e4610a2a4a4bdf8bfab5d": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_anchor",
              "type": "address"
            }
          ],
          "name": "ConverterAnchorRemoved",
          "type": "event"
        },
        "0xf2e7cf6d6ed3f77039511409a43d4fa5108f09ab71d72b014380364c910233a5": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IERC20Token",
              "name": "_convertibleToken",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_smartToken",
              "type": "address"
            }
          ],
          "name": "ConvertibleTokenAdded",
          "type": "event"
        },
        "0x9430ad6ff45d6c3e126c7711bf0036bd9bc6b202fa19628abd88e59cf43ced43": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IERC20Token",
              "name": "_convertibleToken",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_smartToken",
              "type": "address"
            }
          ],
          "name": "ConvertibleTokenRemoved",
          "type": "event"
        },
        "0xb893f883ef734b712208a877459424ee509832c57e0461fb1ac99ed4d42f2d89": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_liquidityPool",
              "type": "address"
            }
          ],
          "name": "LiquidityPoolAdded",
          "type": "event"
        },
        "0x59c3fbcae88f30e9b0e35c132a7f68c53231dffa4722f197c7ecb0ee013eee60": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_liquidityPool",
              "type": "address"
            }
          ],
          "name": "LiquidityPoolRemoved",
          "type": "event"
        },
        "0x343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "_prevOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "_newOwner",
              "type": "address"
            }
          ],
          "name": "OwnerUpdate",
          "type": "event"
        },
        "0x88881feecdf61136ac4bdb1f681f2f3746a82910263d21ffea94750d2a78c0ab": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_smartToken",
              "type": "address"
            }
          ],
          "name": "SmartTokenAdded",
          "type": "event"
        },
        "0x2aff63790c7da80d1c50ede92d23bc841c384837735c92c184331f3d7b91e5bf": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_smartToken",
              "type": "address"
            }
          ],
          "name": "SmartTokenRemoved",
          "type": "event"
        }
      },
      "links": {},
      "address": "0xCF60ebC445b636a5ab787F9E8BC465A2A3eF8299",
      "transactionHash": "0xea7ab1f17fff15b657a861099e05cfd8196aa6f1062785212d159ddfb0bc09be"
    },
    "1604964387852": {
      "events": {
        "0xc0a6d303d67b7ed9fa0abae1c48878df32acc0e7ca4334c7dad2bceeee5956fd": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_anchor",
              "type": "address"
            }
          ],
          "name": "ConverterAnchorAdded",
          "type": "event"
        },
        "0xbfdf1baaa7e4871111360083540f067050014f651c9e4610a2a4a4bdf8bfab5d": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_anchor",
              "type": "address"
            }
          ],
          "name": "ConverterAnchorRemoved",
          "type": "event"
        },
        "0xf2e7cf6d6ed3f77039511409a43d4fa5108f09ab71d72b014380364c910233a5": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IERC20Token",
              "name": "_convertibleToken",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_smartToken",
              "type": "address"
            }
          ],
          "name": "ConvertibleTokenAdded",
          "type": "event"
        },
        "0x9430ad6ff45d6c3e126c7711bf0036bd9bc6b202fa19628abd88e59cf43ced43": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IERC20Token",
              "name": "_convertibleToken",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_smartToken",
              "type": "address"
            }
          ],
          "name": "ConvertibleTokenRemoved",
          "type": "event"
        },
        "0xb893f883ef734b712208a877459424ee509832c57e0461fb1ac99ed4d42f2d89": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_liquidityPool",
              "type": "address"
            }
          ],
          "name": "LiquidityPoolAdded",
          "type": "event"
        },
        "0x59c3fbcae88f30e9b0e35c132a7f68c53231dffa4722f197c7ecb0ee013eee60": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_liquidityPool",
              "type": "address"
            }
          ],
          "name": "LiquidityPoolRemoved",
          "type": "event"
        },
        "0x343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "_prevOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "_newOwner",
              "type": "address"
            }
          ],
          "name": "OwnerUpdate",
          "type": "event"
        },
        "0x88881feecdf61136ac4bdb1f681f2f3746a82910263d21ffea94750d2a78c0ab": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_smartToken",
              "type": "address"
            }
          ],
          "name": "SmartTokenAdded",
          "type": "event"
        },
        "0x2aff63790c7da80d1c50ede92d23bc841c384837735c92c184331f3d7b91e5bf": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_smartToken",
              "type": "address"
            }
          ],
          "name": "SmartTokenRemoved",
          "type": "event"
        }
      },
      "links": {},
      "address": "0x71ee5585513e4fe9BDc67A3f527675C83a74c37e",
      "transactionHash": "0xc7e60288612f1da37cfe45a25e9dde2d9ee5f5aeee58a1e72904f7bb07c7270d"
    },
    "1604964469407": {
      "events": {
        "0xc0a6d303d67b7ed9fa0abae1c48878df32acc0e7ca4334c7dad2bceeee5956fd": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_anchor",
              "type": "address"
            }
          ],
          "name": "ConverterAnchorAdded",
          "type": "event"
        },
        "0xbfdf1baaa7e4871111360083540f067050014f651c9e4610a2a4a4bdf8bfab5d": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_anchor",
              "type": "address"
            }
          ],
          "name": "ConverterAnchorRemoved",
          "type": "event"
        },
        "0xf2e7cf6d6ed3f77039511409a43d4fa5108f09ab71d72b014380364c910233a5": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IERC20Token",
              "name": "_convertibleToken",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_smartToken",
              "type": "address"
            }
          ],
          "name": "ConvertibleTokenAdded",
          "type": "event"
        },
        "0x9430ad6ff45d6c3e126c7711bf0036bd9bc6b202fa19628abd88e59cf43ced43": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IERC20Token",
              "name": "_convertibleToken",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_smartToken",
              "type": "address"
            }
          ],
          "name": "ConvertibleTokenRemoved",
          "type": "event"
        },
        "0xb893f883ef734b712208a877459424ee509832c57e0461fb1ac99ed4d42f2d89": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_liquidityPool",
              "type": "address"
            }
          ],
          "name": "LiquidityPoolAdded",
          "type": "event"
        },
        "0x59c3fbcae88f30e9b0e35c132a7f68c53231dffa4722f197c7ecb0ee013eee60": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_liquidityPool",
              "type": "address"
            }
          ],
          "name": "LiquidityPoolRemoved",
          "type": "event"
        },
        "0x343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "_prevOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "_newOwner",
              "type": "address"
            }
          ],
          "name": "OwnerUpdate",
          "type": "event"
        },
        "0x88881feecdf61136ac4bdb1f681f2f3746a82910263d21ffea94750d2a78c0ab": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_smartToken",
              "type": "address"
            }
          ],
          "name": "SmartTokenAdded",
          "type": "event"
        },
        "0x2aff63790c7da80d1c50ede92d23bc841c384837735c92c184331f3d7b91e5bf": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_smartToken",
              "type": "address"
            }
          ],
          "name": "SmartTokenRemoved",
          "type": "event"
        }
      },
      "links": {},
      "address": "0x8c3a1Ba32764346c643aF8Ad9A440bBDC41758Fe",
      "transactionHash": "0x6ed9d2837a8320c7c6dd7255a96eaa3d2b9fc3b5c9dee387a2db43fda48ff9bc"
    },
    "1604965528035": {
      "events": {
        "0xc0a6d303d67b7ed9fa0abae1c48878df32acc0e7ca4334c7dad2bceeee5956fd": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_anchor",
              "type": "address"
            }
          ],
          "name": "ConverterAnchorAdded",
          "type": "event"
        },
        "0xbfdf1baaa7e4871111360083540f067050014f651c9e4610a2a4a4bdf8bfab5d": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_anchor",
              "type": "address"
            }
          ],
          "name": "ConverterAnchorRemoved",
          "type": "event"
        },
        "0xf2e7cf6d6ed3f77039511409a43d4fa5108f09ab71d72b014380364c910233a5": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IERC20Token",
              "name": "_convertibleToken",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_smartToken",
              "type": "address"
            }
          ],
          "name": "ConvertibleTokenAdded",
          "type": "event"
        },
        "0x9430ad6ff45d6c3e126c7711bf0036bd9bc6b202fa19628abd88e59cf43ced43": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IERC20Token",
              "name": "_convertibleToken",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_smartToken",
              "type": "address"
            }
          ],
          "name": "ConvertibleTokenRemoved",
          "type": "event"
        },
        "0xb893f883ef734b712208a877459424ee509832c57e0461fb1ac99ed4d42f2d89": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_liquidityPool",
              "type": "address"
            }
          ],
          "name": "LiquidityPoolAdded",
          "type": "event"
        },
        "0x59c3fbcae88f30e9b0e35c132a7f68c53231dffa4722f197c7ecb0ee013eee60": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_liquidityPool",
              "type": "address"
            }
          ],
          "name": "LiquidityPoolRemoved",
          "type": "event"
        },
        "0x343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "_prevOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "_newOwner",
              "type": "address"
            }
          ],
          "name": "OwnerUpdate",
          "type": "event"
        },
        "0x88881feecdf61136ac4bdb1f681f2f3746a82910263d21ffea94750d2a78c0ab": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_smartToken",
              "type": "address"
            }
          ],
          "name": "SmartTokenAdded",
          "type": "event"
        },
        "0x2aff63790c7da80d1c50ede92d23bc841c384837735c92c184331f3d7b91e5bf": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_smartToken",
              "type": "address"
            }
          ],
          "name": "SmartTokenRemoved",
          "type": "event"
        }
      },
      "links": {},
      "address": "0xEC8e2cC834470B3b7bbE2d1ae69CC0bb26f58EBa",
      "transactionHash": "0x01a141adfc530dd82965fb5bea01a2fe668fd85ac421f1fefaff44945217442e"
    },
    "1604965645554": {
      "events": {
        "0xc0a6d303d67b7ed9fa0abae1c48878df32acc0e7ca4334c7dad2bceeee5956fd": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_anchor",
              "type": "address"
            }
          ],
          "name": "ConverterAnchorAdded",
          "type": "event"
        },
        "0xbfdf1baaa7e4871111360083540f067050014f651c9e4610a2a4a4bdf8bfab5d": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_anchor",
              "type": "address"
            }
          ],
          "name": "ConverterAnchorRemoved",
          "type": "event"
        },
        "0xf2e7cf6d6ed3f77039511409a43d4fa5108f09ab71d72b014380364c910233a5": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IERC20Token",
              "name": "_convertibleToken",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_smartToken",
              "type": "address"
            }
          ],
          "name": "ConvertibleTokenAdded",
          "type": "event"
        },
        "0x9430ad6ff45d6c3e126c7711bf0036bd9bc6b202fa19628abd88e59cf43ced43": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IERC20Token",
              "name": "_convertibleToken",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_smartToken",
              "type": "address"
            }
          ],
          "name": "ConvertibleTokenRemoved",
          "type": "event"
        },
        "0xb893f883ef734b712208a877459424ee509832c57e0461fb1ac99ed4d42f2d89": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_liquidityPool",
              "type": "address"
            }
          ],
          "name": "LiquidityPoolAdded",
          "type": "event"
        },
        "0x59c3fbcae88f30e9b0e35c132a7f68c53231dffa4722f197c7ecb0ee013eee60": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_liquidityPool",
              "type": "address"
            }
          ],
          "name": "LiquidityPoolRemoved",
          "type": "event"
        },
        "0x343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "_prevOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "_newOwner",
              "type": "address"
            }
          ],
          "name": "OwnerUpdate",
          "type": "event"
        },
        "0x88881feecdf61136ac4bdb1f681f2f3746a82910263d21ffea94750d2a78c0ab": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_smartToken",
              "type": "address"
            }
          ],
          "name": "SmartTokenAdded",
          "type": "event"
        },
        "0x2aff63790c7da80d1c50ede92d23bc841c384837735c92c184331f3d7b91e5bf": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_smartToken",
              "type": "address"
            }
          ],
          "name": "SmartTokenRemoved",
          "type": "event"
        }
      },
      "links": {},
      "address": "0x3C87F4471592cE5d81943EEdA26c5B5e59D062B9",
      "transactionHash": "0xf4223f4e3885a9ca67ad25373e9bbfc92a4af7309198d1e63f2eb5f0b2f69e7e"
    },
    "1604965679541": {
      "events": {
        "0xc0a6d303d67b7ed9fa0abae1c48878df32acc0e7ca4334c7dad2bceeee5956fd": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_anchor",
              "type": "address"
            }
          ],
          "name": "ConverterAnchorAdded",
          "type": "event"
        },
        "0xbfdf1baaa7e4871111360083540f067050014f651c9e4610a2a4a4bdf8bfab5d": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_anchor",
              "type": "address"
            }
          ],
          "name": "ConverterAnchorRemoved",
          "type": "event"
        },
        "0xf2e7cf6d6ed3f77039511409a43d4fa5108f09ab71d72b014380364c910233a5": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IERC20Token",
              "name": "_convertibleToken",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_smartToken",
              "type": "address"
            }
          ],
          "name": "ConvertibleTokenAdded",
          "type": "event"
        },
        "0x9430ad6ff45d6c3e126c7711bf0036bd9bc6b202fa19628abd88e59cf43ced43": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IERC20Token",
              "name": "_convertibleToken",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_smartToken",
              "type": "address"
            }
          ],
          "name": "ConvertibleTokenRemoved",
          "type": "event"
        },
        "0xb893f883ef734b712208a877459424ee509832c57e0461fb1ac99ed4d42f2d89": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_liquidityPool",
              "type": "address"
            }
          ],
          "name": "LiquidityPoolAdded",
          "type": "event"
        },
        "0x59c3fbcae88f30e9b0e35c132a7f68c53231dffa4722f197c7ecb0ee013eee60": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_liquidityPool",
              "type": "address"
            }
          ],
          "name": "LiquidityPoolRemoved",
          "type": "event"
        },
        "0x343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "_prevOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "_newOwner",
              "type": "address"
            }
          ],
          "name": "OwnerUpdate",
          "type": "event"
        },
        "0x88881feecdf61136ac4bdb1f681f2f3746a82910263d21ffea94750d2a78c0ab": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_smartToken",
              "type": "address"
            }
          ],
          "name": "SmartTokenAdded",
          "type": "event"
        },
        "0x2aff63790c7da80d1c50ede92d23bc841c384837735c92c184331f3d7b91e5bf": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_smartToken",
              "type": "address"
            }
          ],
          "name": "SmartTokenRemoved",
          "type": "event"
        }
      },
      "links": {},
      "address": "0xc6ACc7d18d5084498287e247657d95545C10e9e4",
      "transactionHash": "0x4a452a729592b9fbf4afacb288c569879a508acc52e0e47973d826f6ba39d890"
    },
    "1604965719492": {
      "events": {
        "0xc0a6d303d67b7ed9fa0abae1c48878df32acc0e7ca4334c7dad2bceeee5956fd": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_anchor",
              "type": "address"
            }
          ],
          "name": "ConverterAnchorAdded",
          "type": "event"
        },
        "0xbfdf1baaa7e4871111360083540f067050014f651c9e4610a2a4a4bdf8bfab5d": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_anchor",
              "type": "address"
            }
          ],
          "name": "ConverterAnchorRemoved",
          "type": "event"
        },
        "0xf2e7cf6d6ed3f77039511409a43d4fa5108f09ab71d72b014380364c910233a5": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IERC20Token",
              "name": "_convertibleToken",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_smartToken",
              "type": "address"
            }
          ],
          "name": "ConvertibleTokenAdded",
          "type": "event"
        },
        "0x9430ad6ff45d6c3e126c7711bf0036bd9bc6b202fa19628abd88e59cf43ced43": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IERC20Token",
              "name": "_convertibleToken",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_smartToken",
              "type": "address"
            }
          ],
          "name": "ConvertibleTokenRemoved",
          "type": "event"
        },
        "0xb893f883ef734b712208a877459424ee509832c57e0461fb1ac99ed4d42f2d89": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_liquidityPool",
              "type": "address"
            }
          ],
          "name": "LiquidityPoolAdded",
          "type": "event"
        },
        "0x59c3fbcae88f30e9b0e35c132a7f68c53231dffa4722f197c7ecb0ee013eee60": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_liquidityPool",
              "type": "address"
            }
          ],
          "name": "LiquidityPoolRemoved",
          "type": "event"
        },
        "0x343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "_prevOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "_newOwner",
              "type": "address"
            }
          ],
          "name": "OwnerUpdate",
          "type": "event"
        },
        "0x88881feecdf61136ac4bdb1f681f2f3746a82910263d21ffea94750d2a78c0ab": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_smartToken",
              "type": "address"
            }
          ],
          "name": "SmartTokenAdded",
          "type": "event"
        },
        "0x2aff63790c7da80d1c50ede92d23bc841c384837735c92c184331f3d7b91e5bf": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_smartToken",
              "type": "address"
            }
          ],
          "name": "SmartTokenRemoved",
          "type": "event"
        }
      },
      "links": {},
      "address": "0x8a62247a070de6c081486797d9C365f3C75526b7",
      "transactionHash": "0x958d55e52dcf1d7059ab95aff0ae24649325bc7953e915d990442945fba39651"
    },
    "1604965760834": {
      "events": {
        "0xc0a6d303d67b7ed9fa0abae1c48878df32acc0e7ca4334c7dad2bceeee5956fd": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_anchor",
              "type": "address"
            }
          ],
          "name": "ConverterAnchorAdded",
          "type": "event"
        },
        "0xbfdf1baaa7e4871111360083540f067050014f651c9e4610a2a4a4bdf8bfab5d": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_anchor",
              "type": "address"
            }
          ],
          "name": "ConverterAnchorRemoved",
          "type": "event"
        },
        "0xf2e7cf6d6ed3f77039511409a43d4fa5108f09ab71d72b014380364c910233a5": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IERC20Token",
              "name": "_convertibleToken",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_smartToken",
              "type": "address"
            }
          ],
          "name": "ConvertibleTokenAdded",
          "type": "event"
        },
        "0x9430ad6ff45d6c3e126c7711bf0036bd9bc6b202fa19628abd88e59cf43ced43": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IERC20Token",
              "name": "_convertibleToken",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_smartToken",
              "type": "address"
            }
          ],
          "name": "ConvertibleTokenRemoved",
          "type": "event"
        },
        "0xb893f883ef734b712208a877459424ee509832c57e0461fb1ac99ed4d42f2d89": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_liquidityPool",
              "type": "address"
            }
          ],
          "name": "LiquidityPoolAdded",
          "type": "event"
        },
        "0x59c3fbcae88f30e9b0e35c132a7f68c53231dffa4722f197c7ecb0ee013eee60": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_liquidityPool",
              "type": "address"
            }
          ],
          "name": "LiquidityPoolRemoved",
          "type": "event"
        },
        "0x343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "_prevOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "_newOwner",
              "type": "address"
            }
          ],
          "name": "OwnerUpdate",
          "type": "event"
        },
        "0x88881feecdf61136ac4bdb1f681f2f3746a82910263d21ffea94750d2a78c0ab": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_smartToken",
              "type": "address"
            }
          ],
          "name": "SmartTokenAdded",
          "type": "event"
        },
        "0x2aff63790c7da80d1c50ede92d23bc841c384837735c92c184331f3d7b91e5bf": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "contract IConverterAnchor",
              "name": "_smartToken",
              "type": "address"
            }
          ],
          "name": "SmartTokenRemoved",
          "type": "event"
        }
      },
      "links": {},
      "address": "0x5eE7451738f30E78BFa1b800dd2c799994D50930",
      "transactionHash": "0x050e9db9f0ac9770f8c36cc490f80910d380962c069ac59ab0b29b1d3636d9e7"
    }
  },
  "schemaVersion": "3.2.3",
  "updatedAt": "2020-11-10T14:20:45.569Z",
  "networkType": "ethereum",
  "devdoc": {
    "details": "The ConverterRegistry maintains a list of all active converters in the Bancor Network. Since converters can be upgraded and thus their address can change, the registry actually keeps converter anchors internally and not the converters themselves. The active converter for each anchor can be easily accessed by querying the anchor's owner. The registry exposes 3 differnet lists that can be accessed and iterated, based on the use-case of the caller: - Anchors - can be used to get all the latest / historical data in the network - Liquidity pools - can be used to get all liquidity pools for funding, liquidation etc. - Convertible tokens - can be used to get all tokens that can be converted in the network (excluding pool   tokens), and for each one - all anchors that hold it in their reserves The contract fires events whenever one of the primitives is added to or removed from the registry The contract is upgradable.",
    "events": {
      "ConverterAnchorAdded(address)": {
        "details": "triggered when a converter anchor is added to the registry",
        "params": {
          "_anchor": "smart token"
        }
      },
      "ConverterAnchorRemoved(address)": {
        "details": "triggered when a converter anchor is removed from the registry",
        "params": {
          "_anchor": "smart token"
        }
      },
      "ConvertibleTokenAdded(address,address)": {
        "details": "triggered when a convertible token is added to the registry",
        "params": {
          "_convertibleToken": "convertible token",
          "_smartToken": "associated smart token"
        }
      },
      "ConvertibleTokenRemoved(address,address)": {
        "details": "triggered when a convertible token is removed from the registry",
        "params": {
          "_convertibleToken": "convertible token",
          "_smartToken": "associated smart token"
        }
      },
      "LiquidityPoolAdded(address)": {
        "details": "triggered when a liquidity pool is added to the registry",
        "params": {
          "_liquidityPool": "liquidity pool"
        }
      },
      "LiquidityPoolRemoved(address)": {
        "details": "triggered when a liquidity pool is removed from the registry",
        "params": {
          "_liquidityPool": "liquidity pool"
        }
      },
      "SmartTokenAdded(address)": {
        "details": "deprecated, backward compatibility, use `ConverterAnchorAdded`"
      },
      "SmartTokenRemoved(address)": {
        "details": "deprecated, backward compatibility, use `ConverterAnchorRemoved`"
      }
    },
    "kind": "dev",
    "methods": {
      "acceptOwnership()": {
        "details": "used by a new owner to accept an ownership transfer"
      },
      "addConverter(address)": {
        "details": "adds an existing converter to the registry can only be called by the owner",
        "params": {
          "_converter": "converter"
        }
      },
      "constructor": {
        "details": "initializes a new ConverterRegistry instance",
        "params": {
          "_registry": "address of a contract registry contract"
        }
      },
      "getAnchor(uint256)": {
        "details": "returns the converter anchor at a given index",
        "params": {
          "_index": "index"
        },
        "returns": {
          "_0": "anchor at the given index"
        }
      },
      "getAnchorCount()": {
        "details": "returns the number of converter anchors in the registry",
        "returns": {
          "_0": "number of anchors"
        }
      },
      "getAnchors()": {
        "details": "returns the list of converter anchors in the registry",
        "returns": {
          "_0": "list of anchors"
        }
      },
      "getConvertersByAnchors(address[])": {
        "details": "returns a list of converters for a given list of anchors this is a utility function that can be used to reduce the number of calls to the contract",
        "params": {
          "_anchors": "list of converter anchors"
        },
        "returns": {
          "_0": "list of converters"
        }
      },
      "getConvertersBySmartTokens(address[])": {
        "details": "deprecated, backward compatibility, use `getConvertersByAnchors`"
      },
      "getConvertibleToken(uint256)": {
        "details": "returns the convertible token at a given index",
        "params": {
          "_index": "index"
        },
        "returns": {
          "_0": "convertible token at the given index"
        }
      },
      "getConvertibleTokenAnchor(address,uint256)": {
        "details": "returns the converter anchor associated with a given convertible token at a given index",
        "params": {
          "_index": "index"
        },
        "returns": {
          "_0": "anchor associated with the given convertible token at the given index"
        }
      },
      "getConvertibleTokenAnchorCount(address)": {
        "details": "returns the number of converter anchors associated with a given convertible token",
        "params": {
          "_convertibleToken": "convertible token"
        },
        "returns": {
          "_0": "number of anchors associated with the given convertible token"
        }
      },
      "getConvertibleTokenAnchors(address)": {
        "details": "returns the list of aoncerter anchors associated with a given convertible token",
        "params": {
          "_convertibleToken": "convertible token"
        },
        "returns": {
          "_0": "list of anchors associated with the given convertible token"
        }
      },
      "getConvertibleTokenCount()": {
        "details": "returns the number of convertible tokens in the registry",
        "returns": {
          "_0": "number of convertible tokens"
        }
      },
      "getConvertibleTokenSmartToken(address,uint256)": {
        "details": "deprecated, backward compatibility, use `getConvertibleTokenAnchor`"
      },
      "getConvertibleTokenSmartTokenCount(address)": {
        "details": "deprecated, backward compatibility, use `getConvertibleTokenAnchorCount`"
      },
      "getConvertibleTokenSmartTokens(address)": {
        "details": "deprecated, backward compatibility, use `getConvertibleTokenAnchors`"
      },
      "getConvertibleTokens()": {
        "details": "returns the list of convertible tokens in the registry",
        "returns": {
          "_0": "list of convertible tokens"
        }
      },
      "getLiquidityPool(uint256)": {
        "details": "returns the liquidity pool at a given index",
        "params": {
          "_index": "index"
        },
        "returns": {
          "_0": "liquidity pool at the given index"
        }
      },
      "getLiquidityPoolByConfig(uint16,address[],uint32[])": {
        "details": "searches for a liquidity pool with specific configuration",
        "params": {
          "_reserveTokens": "reserve tokens",
          "_reserveWeights": "reserve weights",
          "_type": "converter type, see ConverterBase contract main doc"
        },
        "returns": {
          "_0": "the liquidity pool, or zero if no such liquidity pool exists"
        }
      },
      "getLiquidityPoolByReserveConfig(address[],uint32[])": {
        "details": "deprecated, backward compatibility, use `getLiquidityPoolByConfig`"
      },
      "getLiquidityPoolCount()": {
        "details": "returns the number of liquidity pools in the registry",
        "returns": {
          "_0": "number of liquidity pools"
        }
      },
      "getLiquidityPools()": {
        "details": "returns the list of liquidity pools in the registry",
        "returns": {
          "_0": "list of liquidity pools"
        }
      },
      "getSmartToken(uint256)": {
        "details": "deprecated, backward compatibility, use `getAnchor`"
      },
      "getSmartTokenCount()": {
        "details": "deprecated, backward compatibility, use `getAnchorCount`"
      },
      "getSmartTokens()": {
        "details": "deprecated, backward compatibility, use `getAnchors`"
      },
      "isAnchor(address)": {
        "details": "checks whether or not a given value is a converter anchor",
        "params": {
          "_value": "value"
        },
        "returns": {
          "_0": "true if the given value is an anchor, false if not"
        }
      },
      "isConverterValid(address)": {
        "details": "checks whether or not a given converter is valid",
        "params": {
          "_converter": "converter"
        },
        "returns": {
          "_0": "true if the given converter is valid, false if not"
        }
      },
      "isConvertibleToken(address)": {
        "details": "checks whether or not a given value is a convertible token",
        "params": {
          "_value": "value"
        },
        "returns": {
          "_0": "true if the given value is a convertible token, false if not"
        }
      },
      "isConvertibleTokenAnchor(address,address)": {
        "details": "checks whether or not a given value is a converter anchor of a given convertible token",
        "params": {
          "_convertibleToken": "convertible token",
          "_value": "value"
        },
        "returns": {
          "_0": "true if the given value is an anchor of the given convertible token, false if not"
        }
      },
      "isConvertibleTokenSmartToken(address,address)": {
        "details": "deprecated, backward compatibility, use `isConvertibleTokenAnchor`"
      },
      "isLiquidityPool(address)": {
        "details": "checks whether or not a given value is a liquidity pool",
        "params": {
          "_value": "value"
        },
        "returns": {
          "_0": "true if the given value is a liquidity pool, false if not"
        }
      },
      "isSimilarLiquidityPoolRegistered(address)": {
        "details": "checks if a liquidity pool with given configuration is already registered",
        "params": {
          "_converter": "converter with specific configuration"
        },
        "returns": {
          "_0": "if a liquidity pool with the same configuration is already registered"
        }
      },
      "isSmartToken(address)": {
        "details": "deprecated, backward compatibility, use `isAnchor`"
      },
      "newConverter(uint16,string,string,uint8,uint32,address[],uint32[])": {
        "details": "creates a zero supply liquid token / empty liquidity pool and adds its converter to the registry",
        "params": {
          "_decimals": "token / pool decimals",
          "_maxConversionFee": "maximum conversion-fee",
          "_name": "token / pool name",
          "_reserveTokens": "reserve tokens",
          "_reserveWeights": "reserve weights",
          "_symbol": "token / pool symbol",
          "_type": "converter type, see ConverterBase contract main doc"
        },
        "returns": {
          "_0": "new converter"
        }
      },
      "removeConverter(address)": {
        "details": "removes a converter from the registry anyone can remove an existing converter from the registry, as long as the converter is invalid note that the owner can also remove valid converters",
        "params": {
          "_converter": "converter"
        }
      },
      "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"
        }
      },
      "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"
      }
    },
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {},
    "version": 1
  }
}