{
  "contractName": "Invoker",
  "abi": [
    {
      "inputs": [],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "invokeTo",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "invokeValue",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "invokeDataHash",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "underlyingAmount",
          "type": "uint256"
        }
      ],
      "name": "Invocation",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "poolReward",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "platformReward",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "tokenAddress",
          "type": "address"
        }
      ],
      "name": "Reward",
      "type": "event"
    },
    {
      "stateMutability": "payable",
      "type": "fallback"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "stateMutability": "payable",
      "type": "receive"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "invokeTo",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "invokeData",
          "type": "bytes"
        },
        {
          "internalType": "address",
          "name": "tokenAddress",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenAmount",
          "type": "uint256"
        }
      ],
      "name": "invoke",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "invokeCallback",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "currentSender",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "currentTokenAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "currentTokenAmount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "currentRepaymentAmount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenAddress",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenAmount",
          "type": "uint256"
        }
      ],
      "name": "estimateRepaymentAmount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "poolReward",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenAddress",
          "type": "address"
        }
      ],
      "name": "poolRewardAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "platformReward",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "platformVaultAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "poolRewardBips",
          "type": "uint256"
        }
      ],
      "name": "setPoolReward",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenAddress",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "newPoolRewardAddress",
          "type": "address"
        }
      ],
      "name": "setPoolRewardAddress",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "platformRewardBips",
          "type": "uint256"
        }
      ],
      "name": "setPlatformReward",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newPlatformVaultAddress",
          "type": "address"
        }
      ],
      "name": "setPlatformVaultAddress",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenAddress",
          "type": "address"
        },
        {
          "internalType": "address[]",
          "name": "liquidityProxies",
          "type": "address[]"
        }
      ],
      "name": "setLiquidityProxies",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenAddress",
          "type": "address"
        }
      ],
      "name": "liquidityProxies",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenAddress",
          "type": "address"
        }
      ],
      "name": "isTokenAddressRegistered",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenAddress",
          "type": "address"
        }
      ],
      "name": "totalLiquidity",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenAddress",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "removeStuckTokens",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.7.3+commit.9bfce1f6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"invokeTo\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"invokeValue\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"invokeDataHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"underlyingAmount\",\"type\":\"uint256\"}],\"name\":\"Invocation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"poolReward\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"platformReward\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"Reward\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"currentRepaymentAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"currentSender\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"currentTokenAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"currentTokenAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmount\",\"type\":\"uint256\"}],\"name\":\"estimateRepaymentAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"invokeTo\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"invokeData\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmount\",\"type\":\"uint256\"}],\"name\":\"invoke\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"invokeCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"isTokenAddressRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"liquidityProxies\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"platformReward\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"platformVaultAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"poolReward\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"poolRewardAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"removeStuckTokens\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"liquidityProxies\",\"type\":\"address[]\"}],\"name\":\"setLiquidityProxies\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"platformRewardBips\",\"type\":\"uint256\"}],\"name\":\"setPlatformReward\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newPlatformVaultAddress\",\"type\":\"address\"}],\"name\":\"setPlatformVaultAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"poolRewardBips\",\"type\":\"uint256\"}],\"name\":\"setPoolReward\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newPoolRewardAddress\",\"type\":\"address\"}],\"name\":\"setPoolRewardAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"totalLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/Users/andrekorol/src/kollateral/protocol/contracts/Invoker.sol\":\"Invoker\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/andrekorol/src/kollateral/protocol/contracts/Invoker.sol\":{\"keccak256\":\"0x60401459c775a49f36692b87a9c9eebde5a8a963cb862ec124570c64e3ab3d8e\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://06b88d2310545d7822a15da027f1a024c5fdb779924e2edd6caece1cfa4a81f6\",\"dweb:/ipfs/Qmb5W6ihWb4JEH5spWDq2VmAg1C4ZW4Z6JyCMWrv3hZUgN\"]},\"/Users/andrekorol/src/kollateral/protocol/contracts/common/invoke/IInvocationHook.sol\":{\"keccak256\":\"0x36fb31db8a8e7eed7038b37554582655826969a556005d8ee3ab5070fe034860\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://e0dde70be03ea1e086a5bce0d3a7bb1ac65549eab7ea2618343255332edddca7\",\"dweb:/ipfs/QmVaQG686g3tbgM3L3mtw4ei1WxzcDRcS9UxipSt4KCYs1\"]},\"/Users/andrekorol/src/kollateral/protocol/contracts/common/invoke/IInvokable.sol\":{\"keccak256\":\"0x372bca80a3e9d20439e9bf88cc026d6d1ec01556463e902511c67b6fc92e12d5\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a5e6b5ef4246d03871bbd44b34e1212a9567d963f1b1e8e58e6273709442d4fb\",\"dweb:/ipfs/Qmb5Es45FLS4hhNGb9md3KU7L7hyMW7HHzumrVfsZZgxgC\"]},\"/Users/andrekorol/src/kollateral/protocol/contracts/common/invoke/IInvoker.sol\":{\"keccak256\":\"0x8a9fcbe16fdb00f3b5f32c528564cf4ba5c47ed9741a673973087d4d604e0b5a\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://b4af56bf9d2bd95bddca2156c6eea65c5caf0117d9a99d6cc575ac2c329bd672\",\"dweb:/ipfs/QmTxg3NpWNAxaVHKYU1cdVboo962auWmq5pmS9XvXcXNAF\"]},\"/Users/andrekorol/src/kollateral/protocol/contracts/common/utils/BalanceCarrier.sol\":{\"keccak256\":\"0x69e63e482d839c831c8c32f002e6454f6a8d9e602b39e9cdc1c0649451df3337\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://0a40661372b8f95cbed7714a16323b435ccbe85205178d32bc6012e47bfc0640\",\"dweb:/ipfs/QmTyHr1Ag4AkcyazzTT5GDcWabAMHPTrELoGhL85ZWDgBy\"]},\"/Users/andrekorol/src/kollateral/protocol/contracts/common/utils/ExternalCaller.sol\":{\"keccak256\":\"0x54f88a1f0ac5dd7ab99a0519124cb09f1e19b4efb9baf240bc2500f8caa0b4ff\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://3170671378d20b47498224d065e33fccc223ae772d7f0af2c5ef314f94b75c98\",\"dweb:/ipfs/Qme8ZEEBnBG5Vvj8uyJCD2YVPcLx6funKsSSCpGkTyn1zi\"]},\"/Users/andrekorol/src/kollateral/protocol/contracts/liquidity/ILiquidityProxy.sol\":{\"keccak256\":\"0xd463abb162d0ce2e2d1a5f80b6b1254857e8800b930b4d8d1c3557c444d6363d\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://1c65c049566e4b8586ffb7ab62018d49f09d8f915450f6e79a0db84e4500fffb\",\"dweb:/ipfs/QmNSjMiWsY2Tt9eMYyNf3oGTFWDJjnWpgmVWTY6zKBAy3f\"]},\"@openzeppelin/contracts/GSN/Context.sol\":{\"keccak256\":\"0x910a2e625b71168563edf9eeef55a50d6d699acfe27ceba3921f291829a8f938\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://248246ac66e6479dce1ad7d4945ec5540c98ceb09881e93c93f7c48d5772925c\",\"dweb:/ipfs/QmXr8tmUiZgEYid6ixeeBRmTdUnASWjKzhP3KRxMPy8fRt\"]},\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0x46d2453e9db55eae25c9abdae2c42229086c54f1a6a247e8ce32658bb785f6ae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://198ef77ef5d9f7a7709d6bbfba1d4d54d82ccc15358e9dced37f1376dac887fa\",\"dweb:/ipfs/QmQHFvCA74s3AHU3NMn4AAYzFTt6UotWq7yk3WzLQs1oJS\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xba96bc371ba999f452985a98717cca1e4c4abb598dc038a9a9c3db08129b1ba4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26e50e3f7b6482fb6f598f2e006994a74aa492687daa4b3eee7fd4fb5398ce7f\",\"dweb:/ipfs/QmZudqoPSkA4USLMFsBBmt19dDPZFS8aaAmL5R7pECXu6t\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xbd74f587ab9b9711801baf667db1426e4a03fd2d7f15af33e0e0d0394e7cef76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0913dfbfce90d170df0d496ad7596c0778518e5fa7aba6c32562522546f66b\",\"dweb:/ipfs/QmR6B8nLj2PJf5e1JWD9Nk7ErkAwkqUwadCnvE82FJr1RU\"]}},\"version\":1}",
  "bytecode": "0x60806040523480156200001157600080fd5b5060016000620000266200010c60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505062000114565b600033905090565b613d1580620001246000396000f3fe6080604052600436106101445760003560e01c8063779bbd47116100b6578063f24776781161006f578063f247767814610737578063f2fde38b146107dd578063f35a37aa1461082e578063fe6551b614610869578063fef10b9514610894578063ff69ac36146108bf5761014b565b8063779bbd47146104b85780638a698bcc1461055e5780638da5cb5b146105d95780639c0743df1461061a578063b255158914610681578063c56326de146106d25761014b565b80635f39e93a116101085780635f39e93a146103145780635f4130dd146103555780636476b069146103c45780636f27e9d81461043557806370348f3e14610460578063715018a6146104a15761014b565b8063046e79131461014d5780630a5ca4e8146101885780630e02e6a31461019f57806311eefd5d146102625780631c761d46146102a35761014b565b3661014b57005b005b34801561015957600080fd5b506101866004803603602081101561017057600080fd5b81019080803590602001909291905050506108ea565b005b34801561019457600080fd5b5061019d610a3f565b005b610260600480360360808110156101b557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156101f257600080fd5b82018360208201111561020457600080fd5b8035906020019184600183028401116401000000008311171561022657600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610afa565b005b34801561026e57600080fd5b50610277610cee565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102af57600080fd5b50610312600480360360408110156102c657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d18565b005b34801561032057600080fd5b50610329610ee5565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561036157600080fd5b506103ae6004803603604081101561037857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f0f565b6040518082815260200191505060405180910390f35b3480156103d057600080fd5b5061041d600480360360408110156103e757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611372565b60405180821515815260200191505060405180910390f35b34801561044157600080fd5b5061044a6114f4565b6040518082815260200191505060405180910390f35b34801561046c57600080fd5b506104756114fe565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156104ad57600080fd5b506104b6611528565b005b3480156104c457600080fd5b50610507600480360360208110156104db57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116ae565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561054a57808201518184015260208101905061052f565b505050509050019250505060405180910390f35b34801561056a57600080fd5b506105ad6004803603602081101561058157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061177b565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156105e557600080fd5b506105ee6117e4565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561062657600080fd5b506106696004803603602081101561063d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061180d565b60405180821515815260200191505060405180910390f35b34801561068d57600080fd5b506106d0600480360360208110156106a457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061185b565b005b3480156106de57600080fd5b50610721600480360360208110156106f557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506119ea565b6040518082815260200191505060405180910390f35b34801561074357600080fd5b506107db6004803603604081101561075a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561079757600080fd5b8201836020820111156107a957600080fd5b803590602001918460208302840111640100000000831117156107cb57600080fd5b9091929391929390505050611b99565b005b3480156107e957600080fd5b5061082c6004803603602081101561080057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d38565b005b34801561083a57600080fd5b506108676004803603602081101561085157600080fd5b8101908080359060200190929190505050611f43565b005b34801561087557600080fd5b5061087e612098565b6040518082815260200191505060405180910390f35b3480156108a057600080fd5b506108a96120a2565b6040518082815260200191505060405180910390f35b3480156108cb57600080fd5b506108d46120ac565b6040518082815260200191505060405180910390f35b600660149054906101000a900460ff161561096d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e766f6b65723a206e6f7420667265736820656e7669726f6e6d656e74000081525060200191505060405180910390fd5b6109756120b6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a35576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060038190555050565b600660149054906101000a900460ff16610ac1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f496e766f6b65723a206e6f74207363686564756c65640000000000000000000081525060200191505060405180910390fd5b600c60008154809291906001019190505550600f80549050600c541415610aef57610aea6120be565b610af8565b610af761266d565b5b565b600660149054906101000a900460ff1615610b7d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e766f6b65723a206e6f7420667265736820656e7669726f6e6d656e74000081525060200191505060405180910390fd5b610b868261180d565b610bf8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f496e766f6b65723a206e6f206c697175696469747920666f7220746f6b656e0081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415610c7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180613b8a6024913960400191505060405180910390fd5b610ccf33863487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508686612743565b610cd761266d565b610cdf612c8a565b610ce7612f90565b5050505050565b6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600660149054906101000a900460ff1615610d9b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e766f6b65723a206e6f7420667265736820656e7669726f6e6d656e74000081525060200191505060405180910390fd5b610da36120b6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e63576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000610f1a8361180d565b610f8c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f496e766f6b65723a206e6f206c697175696469747920666f7220746f6b656e0081525060200191505060405180910390fd5b60008083905060005b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490508110156112bc576000600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061102b57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff1663c32dc3b6896040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156110c157600080fd5b505afa1580156110d5573d6000803e3d6000fd5b505050506040513d60208110156110eb57600080fd5b810190808051906020019092919050505090508084116111d45760008273ffffffffffffffffffffffffffffffffffffffff1663aa8190578a876040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b15801561117657600080fd5b505afa15801561118a573d6000803e3d6000fd5b505050506040513d60208110156111a057600080fd5b810190808051906020019092919050505090506111c681876130d590919063ffffffff16565b9550600094505050506112bc565b60008273ffffffffffffffffffffffffffffffffffffffff1663aa8190578a846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b15801561124557600080fd5b505afa158015611259573d6000803e3d6000fd5b505050506040513d602081101561126f57600080fd5b8101908080519060200190929190505050905061129581876130d590919063ffffffff16565b95506112aa828661315d90919063ffffffff16565b94505050508080600101915050610f95565b5060008114611333576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f496e766f6b65723a206e6f7420656e6f756768206c697175696469747900000081525060200191505060405180910390fd5b61136861133f856131a7565b61135a61134b876131d9565b856130d590919063ffffffff16565b6130d590919063ffffffff16565b9250505092915050565b6000600660149054906101000a900460ff16156113f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e766f6b65723a206e6f7420667265736820656e7669726f6e6d656e74000081525060200191505060405180910390fd5b6113ff6120b6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6114ec83600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461320b565b905092915050565b6000601054905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6115306120b6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6060600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561176f57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611725575b50505050509050919050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050119050919050565b600660149054906101000a900460ff16156118de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e766f6b65723a206e6f7420667265736820656e7669726f6e6d656e74000081525060200191505060405180910390fd5b6118e66120b6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119a6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006119f58261180d565b15611b8f576000805b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050811015611b85576000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110611a9457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050611b758173ffffffffffffffffffffffffffffffffffffffff1663c32dc3b6876040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611b2b57600080fd5b505afa158015611b3f573d6000803e3d6000fd5b505050506040513d6020811015611b5557600080fd5b8101908080519060200190929190505050846130d590919063ffffffff16565b92505080806001019150506119fe565b5080915050611b94565b600090505b919050565b600660149054906101000a900460ff1615611c1c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e766f6b65723a206e6f7420667265736820656e7669726f6e6d656e74000081525060200191505060405180910390fd5b611c246120b6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ce4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8181600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209190611d329291906139e3565b50505050565b611d406120b6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611e86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613bae6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600660149054906101000a900460ff1615611fc6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e766f6b65723a206e6f7420667265736820656e7669726f6e6d656e74000081525060200191505060405180910390fd5b611fce6120b6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461208e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060058190555050565b6000600554905090565b6000600354905090565b6000600e54905090565b600033905090565b60006120d7600e546007546130d590919063ffffffff16565b9050600061211f6120e661332c565b612111600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613394565b61315d90919063ffffffff16565b9050818114612179576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180613c21602b913960400191505060405180910390fd5b6121ca600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600e5461320b565b61223c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f496e766f6b65723a207472616e73666572206661696c6564000000000000000081525060200191505060405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166309c5eabe600a54600b6040518363ffffffff1660e01b815260040180806020018281038252838181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156123175780601f106122ec57610100808354040283529160200191612317565b820191906000526020600020905b8154815290600101906020018083116122fa57829003601f168201915b5050925050506000604051808303818588803b15801561233657600080fd5b505af115801561234a573d6000803e3d6000fd5b50505050507f75f9f0d535d12ed7059cfbe33ce52e574c3d3e46557966f2338095976688ac9d600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a54600b60405180828054600181600116156101000203166002900480156123f35780601f106123d15761010080835404028352918201916123f3565b820191906000526020600020905b8154815290600101906020018083116123df575b50509150506040518091039020600e54604051808573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200194505050505060405180910390a1600061245c6010546007546130d590919063ffffffff16565b90508061248a600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613394565b146124e0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180613bd46023913960400191505060405180910390fd5b60005b6011805490508110156126675760006124fb8261349e565b73ffffffffffffffffffffffffffffffffffffffff1663680c7b94600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561258357600080fd5b505afa158015612597573d6000803e3d6000fd5b505050506040513d60208110156125ad57600080fd5b81019080805190602001909291905050509050612604600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682601185815481106125f457fe5b906000526020600020015461320b565b612659576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180613c4c6027913960400191505060405180910390fd5b5080806001019150506124e3565b50505050565b600061267a600c5461349e565b90508073ffffffffffffffffffffffffffffffffffffffff16634b8a3529600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600f600c54815481106126ca57fe5b90600052602060002001546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561272857600080fd5b505af115801561273c573d6000803e3d6000fd5b5050505050565b85600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600a8190555082600b90805190602001906127e2929190613a83565b5081600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600e8190555061284d61283661332c565b61283f84613394565b61315d90919063ffffffff16565b600781905550600081905060005b61286361353e565b811015612b9c5760006128758261349e565b905060008173ffffffffffffffffffffffffffffffffffffffff1663c32dc3b6876040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156128e057600080fd5b505afa1580156128f4573d6000803e3d6000fd5b505050506040513d602081101561290a57600080fd5b81019080805190602001909291905050509050600081141561292d575050612b8f565b808411612a5b5760008273ffffffffffffffffffffffffffffffffffffffff1663aa81905788876040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b1580156129a557600080fd5b505afa1580156129b9573d6000803e3d6000fd5b505050506040513d60208110156129cf57600080fd5b81019080805190602001909291905050509050600f8590806001815401808255809150506001900390600052602060002001600090919091909150556011819080600181540180825580915050600190039060005260206000200160009091909190915055612a49816010546130d590919063ffffffff16565b60108190555060009450505050612b9c565b60008273ffffffffffffffffffffffffffffffffffffffff1663aa81905788846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b158015612acc57600080fd5b505afa158015612ae0573d6000803e3d6000fd5b505050506040513d6020811015612af657600080fd5b81019080805190602001909291905050509050600f8290806001815401808255809150506001900390600052602060002001600090919091909150556011819080600181540180825580915050600190039060005260206000200160009091909190915055612b70816010546130d590919063ffffffff16565b601081905550612b89828661315d90919063ffffffff16565b94505050505b808060010191505061285b565b5060008114612c13576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f496e766f6b65723a206e6f7420656e6f756768206c697175696469747900000081525060200191505060405180910390fd5b612c1e600e546131d9565b601281905550612c2f600e546131a7565b601381905550612c60601354612c526012546010546130d590919063ffffffff16565b6130d590919063ffffffff16565b6010819055506001600660146101000a81548160ff02191690831515021790555050505050505050565b60008073ffffffffffffffffffffffffffffffffffffffff1660046000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d4857601254612d4b565b60005b90506000811115612e5a57612e04600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660046000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168361320b565b612e59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180613c946024913960400191505060405180910390fd5b5b60006013541115612f0c57612eb6600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660135461320b565b612f0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180613cb86028913960400191505060405180910390fd5b5b7faab4527149d32aa1e134471eee25c0c019ab961e93f6604ca89353c17a3eb60f81601354600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060405180910390a150565b6000600660146101000a81548160ff02191690831515021790555060006007819055506000600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600a81905550600b600061304d9190613b03565b6000600c819055506000600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600e81905550600f60006130ad9190613b4b565b6000601081905550601160006130c39190613b4b565b60006012819055506000601381905550565b600080828401905083811015613153576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600061319f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506135aa565b905092915050565b60006131d26127106131c46005548561366a90919063ffffffff16565b6136f090919063ffffffff16565b9050919050565b60006132046127106131f66003548561366a90919063ffffffff16565b6136f090919063ffffffff16565b9050919050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156132765761326d838361373a565b60019050613325565b8373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156132e757600080fd5b505af11580156132fb573d6000803e3d6000fd5b505050506040513d602081101561331157600080fd5b810190808051906020019092919050505090505b9392505050565b6000600173ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461338b57600061338f565b600a545b905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156133f457479050613499565b8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561345b57600080fd5b505afa15801561346f573d6000803e3d6000fd5b505050506040513d602081101561348557600080fd5b810190808051906020019092919050505090505b919050565b600060026000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061350c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600060026000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050905090565b6000838311158290613657576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561361c578082015181840152602081019050613601565b50505050905090810190601f1680156136495780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008083141561367d57600090506136ea565b600082840290508284828161368e57fe5b04146136e5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180613c736021913960400191505060405180910390fd5b809150505b92915050565b600061373283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506137b1565b905092915050565b80471015613793576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180613bf7602a913960400191505060405180910390fd5b6137ad828260405180602001604052806000815250613877565b5050565b6000808311829061385d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613822578082015181840152602081019050613807565b50505050905090810190601f16801561384f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161386957fe5b049050809150509392505050565b600060608473ffffffffffffffffffffffffffffffffffffffff1684846040518082805190602001908083835b602083106138c757805182526020820191506020810190506020830392506138a4565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613929576040519150601f19603f3d011682016040523d82523d6000602084013e61392e565b606091505b50915091508181906139db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156139a0578082015181840152602081019050613985565b50505050905090810190601f1680156139cd5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050505050565b828054828255906000526020600020908101928215613a72579160200282015b82811115613a7157823573ffffffffffffffffffffffffffffffffffffffff168260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190613a03565b5b509050613a7f9190613b6c565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613ac457805160ff1916838001178555613af2565b82800160010185558215613af2579182015b82811115613af1578251825591602001919060010190613ad6565b5b509050613aff9190613b6c565b5090565b50805460018160011615610100020316600290046000825580601f10613b295750613b48565b601f016020900490600052602060002090810190613b479190613b6c565b5b50565b5080546000825590600052602060002090810190613b699190613b6c565b50565b5b80821115613b85576000816000905550600101613b6d565b509056fe496e766f6b65723a2063616e6e6f7420696e766f6b65207468697320636f6e74726163744f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373496e766f6b65723a20696e636f72726563742072657061796d656e7420616d6f756e7445787465726e616c43616c6c65723a20696e73756666696369656e742065746865722062616c616e6365496e766f6b65723a20696e636f7272656374206c697175696469747920616d6f756e7420736f7572636564496e766f6b65723a20706f6f6c2072657061796d656e74207472616e73666572206661696c6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77496e766f6b65723a20706f6f6c20726577617264207472616e73666572206661696c6564496e766f6b65723a20706c6174666f726d20726577617264207472616e73666572206661696c6564a2646970667358221220a052f4e056a376d84e7a27e22b63abdb911de7b49d2ac39a7f06cffbe617b32764736f6c63430007030033",
  "deployedBytecode": "0x6080604052600436106101445760003560e01c8063779bbd47116100b6578063f24776781161006f578063f247767814610737578063f2fde38b146107dd578063f35a37aa1461082e578063fe6551b614610869578063fef10b9514610894578063ff69ac36146108bf5761014b565b8063779bbd47146104b85780638a698bcc1461055e5780638da5cb5b146105d95780639c0743df1461061a578063b255158914610681578063c56326de146106d25761014b565b80635f39e93a116101085780635f39e93a146103145780635f4130dd146103555780636476b069146103c45780636f27e9d81461043557806370348f3e14610460578063715018a6146104a15761014b565b8063046e79131461014d5780630a5ca4e8146101885780630e02e6a31461019f57806311eefd5d146102625780631c761d46146102a35761014b565b3661014b57005b005b34801561015957600080fd5b506101866004803603602081101561017057600080fd5b81019080803590602001909291905050506108ea565b005b34801561019457600080fd5b5061019d610a3f565b005b610260600480360360808110156101b557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156101f257600080fd5b82018360208201111561020457600080fd5b8035906020019184600183028401116401000000008311171561022657600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610afa565b005b34801561026e57600080fd5b50610277610cee565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102af57600080fd5b50610312600480360360408110156102c657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d18565b005b34801561032057600080fd5b50610329610ee5565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561036157600080fd5b506103ae6004803603604081101561037857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f0f565b6040518082815260200191505060405180910390f35b3480156103d057600080fd5b5061041d600480360360408110156103e757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611372565b60405180821515815260200191505060405180910390f35b34801561044157600080fd5b5061044a6114f4565b6040518082815260200191505060405180910390f35b34801561046c57600080fd5b506104756114fe565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156104ad57600080fd5b506104b6611528565b005b3480156104c457600080fd5b50610507600480360360208110156104db57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116ae565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561054a57808201518184015260208101905061052f565b505050509050019250505060405180910390f35b34801561056a57600080fd5b506105ad6004803603602081101561058157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061177b565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156105e557600080fd5b506105ee6117e4565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561062657600080fd5b506106696004803603602081101561063d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061180d565b60405180821515815260200191505060405180910390f35b34801561068d57600080fd5b506106d0600480360360208110156106a457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061185b565b005b3480156106de57600080fd5b50610721600480360360208110156106f557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506119ea565b6040518082815260200191505060405180910390f35b34801561074357600080fd5b506107db6004803603604081101561075a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561079757600080fd5b8201836020820111156107a957600080fd5b803590602001918460208302840111640100000000831117156107cb57600080fd5b9091929391929390505050611b99565b005b3480156107e957600080fd5b5061082c6004803603602081101561080057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d38565b005b34801561083a57600080fd5b506108676004803603602081101561085157600080fd5b8101908080359060200190929190505050611f43565b005b34801561087557600080fd5b5061087e612098565b6040518082815260200191505060405180910390f35b3480156108a057600080fd5b506108a96120a2565b6040518082815260200191505060405180910390f35b3480156108cb57600080fd5b506108d46120ac565b6040518082815260200191505060405180910390f35b600660149054906101000a900460ff161561096d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e766f6b65723a206e6f7420667265736820656e7669726f6e6d656e74000081525060200191505060405180910390fd5b6109756120b6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a35576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060038190555050565b600660149054906101000a900460ff16610ac1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f496e766f6b65723a206e6f74207363686564756c65640000000000000000000081525060200191505060405180910390fd5b600c60008154809291906001019190505550600f80549050600c541415610aef57610aea6120be565b610af8565b610af761266d565b5b565b600660149054906101000a900460ff1615610b7d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e766f6b65723a206e6f7420667265736820656e7669726f6e6d656e74000081525060200191505060405180910390fd5b610b868261180d565b610bf8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f496e766f6b65723a206e6f206c697175696469747920666f7220746f6b656e0081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415610c7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180613b8a6024913960400191505060405180910390fd5b610ccf33863487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508686612743565b610cd761266d565b610cdf612c8a565b610ce7612f90565b5050505050565b6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600660149054906101000a900460ff1615610d9b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e766f6b65723a206e6f7420667265736820656e7669726f6e6d656e74000081525060200191505060405180910390fd5b610da36120b6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e63576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000610f1a8361180d565b610f8c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f496e766f6b65723a206e6f206c697175696469747920666f7220746f6b656e0081525060200191505060405180910390fd5b60008083905060005b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490508110156112bc576000600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061102b57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff1663c32dc3b6896040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156110c157600080fd5b505afa1580156110d5573d6000803e3d6000fd5b505050506040513d60208110156110eb57600080fd5b810190808051906020019092919050505090508084116111d45760008273ffffffffffffffffffffffffffffffffffffffff1663aa8190578a876040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b15801561117657600080fd5b505afa15801561118a573d6000803e3d6000fd5b505050506040513d60208110156111a057600080fd5b810190808051906020019092919050505090506111c681876130d590919063ffffffff16565b9550600094505050506112bc565b60008273ffffffffffffffffffffffffffffffffffffffff1663aa8190578a846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b15801561124557600080fd5b505afa158015611259573d6000803e3d6000fd5b505050506040513d602081101561126f57600080fd5b8101908080519060200190929190505050905061129581876130d590919063ffffffff16565b95506112aa828661315d90919063ffffffff16565b94505050508080600101915050610f95565b5060008114611333576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f496e766f6b65723a206e6f7420656e6f756768206c697175696469747900000081525060200191505060405180910390fd5b61136861133f856131a7565b61135a61134b876131d9565b856130d590919063ffffffff16565b6130d590919063ffffffff16565b9250505092915050565b6000600660149054906101000a900460ff16156113f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e766f6b65723a206e6f7420667265736820656e7669726f6e6d656e74000081525060200191505060405180910390fd5b6113ff6120b6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6114ec83600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461320b565b905092915050565b6000601054905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6115306120b6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6060600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561176f57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611725575b50505050509050919050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050119050919050565b600660149054906101000a900460ff16156118de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e766f6b65723a206e6f7420667265736820656e7669726f6e6d656e74000081525060200191505060405180910390fd5b6118e66120b6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119a6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006119f58261180d565b15611b8f576000805b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050811015611b85576000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110611a9457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050611b758173ffffffffffffffffffffffffffffffffffffffff1663c32dc3b6876040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611b2b57600080fd5b505afa158015611b3f573d6000803e3d6000fd5b505050506040513d6020811015611b5557600080fd5b8101908080519060200190929190505050846130d590919063ffffffff16565b92505080806001019150506119fe565b5080915050611b94565b600090505b919050565b600660149054906101000a900460ff1615611c1c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e766f6b65723a206e6f7420667265736820656e7669726f6e6d656e74000081525060200191505060405180910390fd5b611c246120b6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ce4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8181600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209190611d329291906139e3565b50505050565b611d406120b6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611e86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613bae6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600660149054906101000a900460ff1615611fc6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e766f6b65723a206e6f7420667265736820656e7669726f6e6d656e74000081525060200191505060405180910390fd5b611fce6120b6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461208e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060058190555050565b6000600554905090565b6000600354905090565b6000600e54905090565b600033905090565b60006120d7600e546007546130d590919063ffffffff16565b9050600061211f6120e661332c565b612111600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613394565b61315d90919063ffffffff16565b9050818114612179576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180613c21602b913960400191505060405180910390fd5b6121ca600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600e5461320b565b61223c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f496e766f6b65723a207472616e73666572206661696c6564000000000000000081525060200191505060405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166309c5eabe600a54600b6040518363ffffffff1660e01b815260040180806020018281038252838181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156123175780601f106122ec57610100808354040283529160200191612317565b820191906000526020600020905b8154815290600101906020018083116122fa57829003601f168201915b5050925050506000604051808303818588803b15801561233657600080fd5b505af115801561234a573d6000803e3d6000fd5b50505050507f75f9f0d535d12ed7059cfbe33ce52e574c3d3e46557966f2338095976688ac9d600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a54600b60405180828054600181600116156101000203166002900480156123f35780601f106123d15761010080835404028352918201916123f3565b820191906000526020600020905b8154815290600101906020018083116123df575b50509150506040518091039020600e54604051808573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200194505050505060405180910390a1600061245c6010546007546130d590919063ffffffff16565b90508061248a600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613394565b146124e0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180613bd46023913960400191505060405180910390fd5b60005b6011805490508110156126675760006124fb8261349e565b73ffffffffffffffffffffffffffffffffffffffff1663680c7b94600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561258357600080fd5b505afa158015612597573d6000803e3d6000fd5b505050506040513d60208110156125ad57600080fd5b81019080805190602001909291905050509050612604600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682601185815481106125f457fe5b906000526020600020015461320b565b612659576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180613c4c6027913960400191505060405180910390fd5b5080806001019150506124e3565b50505050565b600061267a600c5461349e565b90508073ffffffffffffffffffffffffffffffffffffffff16634b8a3529600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600f600c54815481106126ca57fe5b90600052602060002001546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561272857600080fd5b505af115801561273c573d6000803e3d6000fd5b5050505050565b85600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600a8190555082600b90805190602001906127e2929190613a83565b5081600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600e8190555061284d61283661332c565b61283f84613394565b61315d90919063ffffffff16565b600781905550600081905060005b61286361353e565b811015612b9c5760006128758261349e565b905060008173ffffffffffffffffffffffffffffffffffffffff1663c32dc3b6876040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156128e057600080fd5b505afa1580156128f4573d6000803e3d6000fd5b505050506040513d602081101561290a57600080fd5b81019080805190602001909291905050509050600081141561292d575050612b8f565b808411612a5b5760008273ffffffffffffffffffffffffffffffffffffffff1663aa81905788876040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b1580156129a557600080fd5b505afa1580156129b9573d6000803e3d6000fd5b505050506040513d60208110156129cf57600080fd5b81019080805190602001909291905050509050600f8590806001815401808255809150506001900390600052602060002001600090919091909150556011819080600181540180825580915050600190039060005260206000200160009091909190915055612a49816010546130d590919063ffffffff16565b60108190555060009450505050612b9c565b60008273ffffffffffffffffffffffffffffffffffffffff1663aa81905788846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b158015612acc57600080fd5b505afa158015612ae0573d6000803e3d6000fd5b505050506040513d6020811015612af657600080fd5b81019080805190602001909291905050509050600f8290806001815401808255809150506001900390600052602060002001600090919091909150556011819080600181540180825580915050600190039060005260206000200160009091909190915055612b70816010546130d590919063ffffffff16565b601081905550612b89828661315d90919063ffffffff16565b94505050505b808060010191505061285b565b5060008114612c13576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f496e766f6b65723a206e6f7420656e6f756768206c697175696469747900000081525060200191505060405180910390fd5b612c1e600e546131d9565b601281905550612c2f600e546131a7565b601381905550612c60601354612c526012546010546130d590919063ffffffff16565b6130d590919063ffffffff16565b6010819055506001600660146101000a81548160ff02191690831515021790555050505050505050565b60008073ffffffffffffffffffffffffffffffffffffffff1660046000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d4857601254612d4b565b60005b90506000811115612e5a57612e04600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660046000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168361320b565b612e59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180613c946024913960400191505060405180910390fd5b5b60006013541115612f0c57612eb6600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660135461320b565b612f0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180613cb86028913960400191505060405180910390fd5b5b7faab4527149d32aa1e134471eee25c0c019ab961e93f6604ca89353c17a3eb60f81601354600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060405180910390a150565b6000600660146101000a81548160ff02191690831515021790555060006007819055506000600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600a81905550600b600061304d9190613b03565b6000600c819055506000600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600e81905550600f60006130ad9190613b4b565b6000601081905550601160006130c39190613b4b565b60006012819055506000601381905550565b600080828401905083811015613153576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600061319f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506135aa565b905092915050565b60006131d26127106131c46005548561366a90919063ffffffff16565b6136f090919063ffffffff16565b9050919050565b60006132046127106131f66003548561366a90919063ffffffff16565b6136f090919063ffffffff16565b9050919050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156132765761326d838361373a565b60019050613325565b8373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156132e757600080fd5b505af11580156132fb573d6000803e3d6000fd5b505050506040513d602081101561331157600080fd5b810190808051906020019092919050505090505b9392505050565b6000600173ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461338b57600061338f565b600a545b905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156133f457479050613499565b8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561345b57600080fd5b505afa15801561346f573d6000803e3d6000fd5b505050506040513d602081101561348557600080fd5b810190808051906020019092919050505090505b919050565b600060026000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061350c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600060026000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050905090565b6000838311158290613657576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561361c578082015181840152602081019050613601565b50505050905090810190601f1680156136495780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008083141561367d57600090506136ea565b600082840290508284828161368e57fe5b04146136e5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180613c736021913960400191505060405180910390fd5b809150505b92915050565b600061373283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506137b1565b905092915050565b80471015613793576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180613bf7602a913960400191505060405180910390fd5b6137ad828260405180602001604052806000815250613877565b5050565b6000808311829061385d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613822578082015181840152602081019050613807565b50505050905090810190601f16801561384f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161386957fe5b049050809150509392505050565b600060608473ffffffffffffffffffffffffffffffffffffffff1684846040518082805190602001908083835b602083106138c757805182526020820191506020810190506020830392506138a4565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613929576040519150601f19603f3d011682016040523d82523d6000602084013e61392e565b606091505b50915091508181906139db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156139a0578082015181840152602081019050613985565b50505050905090810190601f1680156139cd5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050505050565b828054828255906000526020600020908101928215613a72579160200282015b82811115613a7157823573ffffffffffffffffffffffffffffffffffffffff168260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190613a03565b5b509050613a7f9190613b6c565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613ac457805160ff1916838001178555613af2565b82800160010185558215613af2579182015b82811115613af1578251825591602001919060010190613ad6565b5b509050613aff9190613b6c565b5090565b50805460018160011615610100020316600290046000825580601f10613b295750613b48565b601f016020900490600052602060002090810190613b479190613b6c565b5b50565b5080546000825590600052602060002090810190613b699190613b6c565b50565b5b80821115613b85576000816000905550600101613b6d565b509056fe496e766f6b65723a2063616e6e6f7420696e766f6b65207468697320636f6e74726163744f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373496e766f6b65723a20696e636f72726563742072657061796d656e7420616d6f756e7445787465726e616c43616c6c65723a20696e73756666696369656e742065746865722062616c616e6365496e766f6b65723a20696e636f7272656374206c697175696469747920616d6f756e7420736f7572636564496e766f6b65723a20706f6f6c2072657061796d656e74207472616e73666572206661696c6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77496e766f6b65723a20706f6f6c20726577617264207472616e73666572206661696c6564496e766f6b65723a20706c6174666f726d20726577617264207472616e73666572206661696c6564a2646970667358221220a052f4e056a376d84e7a27e22b63abdb911de7b49d2ac39a7f06cffbe617b32764736f6c63430007030033",
  "immutableReferences": {},
  "generatedSources": [],
  "deployedGeneratedSources": [],
  "sourceMap": "937:14251:0:-:0;;;2128:43;;;;;;;;;;2165:1;865:17:39;885:12;:10;;;:12;;:::i;:::-;865:32;;916:9;907:6;;:18;;;;;;;;;;;;;;;;;;973:9;940:43;;969:1;940:43;;;;;;;;;;;;840:150;916:15:7;897:16;;:34;;;;;;;;;;;;;;;;;;850:88;937:14251:0;;590:104:38;643:15;677:10;670:17;;590:104;:::o;937:14251:0:-;;;;;;;",
  "deployedSourceMap": "937:14251:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12019:153;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3113:233;;;;;;;;;;;;;:::i;:::-;;2177:687;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9165:117;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12178:207;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11895:118;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;9534:1536;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14647:222;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;9409:119;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9048:111;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;1689:145:39;;;;;;;;;;;;;:::i;:::-;;13209:172:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11589:184;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;1066:77:39;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;13387:194:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12566:187;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13880:631;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12997:206;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1983:240:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12391:169:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11779:110;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11481:102;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9288:115;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12019:153;14948:10;;;;;;;;;;;14947:11;14939:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1280:12:39::1;:10;:12::i;:::-;1270:22;;:6;::::0;::::1;;;;;;;;:22;;;1262:67;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;12151:14:0::2;12133:15;:32;;;;12019:153:::0;:::o;3113:233::-;15060:10;;;;;;;;;;;15052:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3181:14:::1;;:16;;;;;;;;;;;;;3229:21;:28;;;;3211:14;;:46;3207:133;;;3273:13;:11;:13::i;:::-;3207:133;;;3317:12;:10;:12::i;:::-;3207:133;3113:233::o:0;2177:687::-;14948:10;;;;;;;;;;;14947:11;14939:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2386:38:::1;2411:12;2386:24;:38::i;:::-;2365:116;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;2532:4;2512:25;;:8;:25;;;;2491:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2610:171;2641:10;2665:8;2687:9;2710:10;;2610:171;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2734:12;2760:11;2610:17;:171::i;:::-;2792:12;:10;:12::i;:::-;2815:16;:14;:16::i;:::-;2842:15;:13;:15::i;:::-;2177:687:::0;;;;;:::o;9165:117::-;9228:7;9254:21;;;;;;;;;;;9247:28;;9165:117;:::o;12178:207::-;14948:10;;;;;;;;;;;14947:11;14939:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1280:12:39::1;:10;:12::i;:::-;1270:22;;:6;::::0;::::1;;;;;;;;:22;;;1262:67;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;12358:20:0::2;12321;:34;12342:12;12321:34;;;;;;;;;;;;;;;;:57;;;;;;;;;;;;;;;;;;12178:207:::0;;:::o;11895:118::-;11959:7;11985:21;;;;;;;;;;;11978:28;;11895:118;:::o;9534:1536::-;9657:7;9701:38;9726:12;9701:24;:38::i;:::-;9680:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9807:23;9844;9870:11;9844:37;;9897:9;9892:945;9916:17;:31;9934:12;9916:31;;;;;;;;;;;;;;;:38;;;;9912:1;:42;9892:945;;;9975:21;10032:17;:31;10050:12;10032:31;;;;;;;;;;;;;;;10064:1;10032:34;;;;;;;;;;;;;;;;;;;;;;;;;9975:105;;10094:20;10117:5;:21;;;10139:12;10117:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10094:58;;10189:12;10170:15;:31;10166:661;;10221:24;10248:5;:24;;;10294:12;10328:15;10248:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10221:140;;10397:37;10417:16;10397:15;:19;;:37;;;;:::i;:::-;10379:55;;10470:1;10452:19;;10489:5;;;;;10166:661;10533:24;10560:5;:24;;;10606:12;10640;10560:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10533:137;;10706:37;10726:16;10706:15;:19;;:37;;;;:::i;:::-;10688:55;;10779:33;10799:12;10779:15;:19;;:33;;;;:::i;:::-;10761:51;;10166:661;9892:945;;9956:3;;;;;;;9892:945;;;;10873:1;10854:15;:20;10846:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10938:125;11013:36;11037:11;11013:23;:36::i;:::-;10938:53;10958:32;10978:11;10958:19;:32::i;:::-;10938:15;:19;;:53;;;;:::i;:::-;:57;;:125;;;;:::i;:::-;10919:144;;;;9534:1536;;;;:::o;14647:222::-;14782:4;14948:10;;;;;;;;;;;14947:11;14939:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1280:12:39::1;:10;:12::i;:::-;1270:22;;:6;::::0;::::1;;;;;;;;:22;;;1262:67;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;14809:53:0::2;14818:12;14832:21;;;;;;;;;;;14855:6;14809:8;:53::i;:::-;14802:60;;14647:222:::0;;;;:::o;9409:119::-;9475:7;9501:20;;9494:27;;9409:119;:::o;9048:111::-;9105:7;9131:21;;;;;;;;;;;9124:28;;9048:111;:::o;1689:145:39:-;1280:12;:10;:12::i;:::-;1270:22;;:6;;;;;;;;;;:22;;;1262:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1795:1:::1;1758:40;;1779:6;::::0;::::1;;;;;;;;1758:40;;;;;;;;;;;;1825:1;1808:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1689:145::o:0;13209:172:0:-;13304:16;13343:17;:31;13361:12;13343:31;;;;;;;;;;;;;;;13336:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13209:172;;;:::o;11589:184::-;11702:7;11732:20;:34;11753:12;11732:34;;;;;;;;;;;;;;;;;;;;;;;;;11725:41;;11589:184;;;:::o;1066:77:39:-;1104:7;1130:6;;;;;;;;;;;1123:13;;1066:77;:::o;13387:194:0:-;13505:4;13573:1;13532:17;:31;13550:12;13532:31;;;;;;;;;;;;;;;:38;;;;:42;13525:49;;13387:194;;;:::o;12566:187::-;14948:10;;;;;;;;;;;14947:11;14939:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1280:12:39::1;:10;:12::i;:::-;1270:22;;:6;::::0;::::1;;;;;;;;:22;;;1262:67;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;12723:23:0::2;12699:21;;:47;;;;;;;;;;;;;;;;;;12566:187:::0;:::o;13880:631::-;13990:7;14017:38;14042:12;14017:24;:38::i;:::-;14013:474;;;14071:13;14124:9;14102:349;14159:17;:31;14177:12;14159:31;;;;;;;;;;;;;;;:38;;;;14155:1;:42;14102:349;;;14251:21;14312:17;:31;14330:12;14312:31;;;;;;;;;;;;;;;14344:1;14312:34;;;;;;;;;;;;;;;;;;;;;;;;;14251:113;;14390:46;14400:5;:21;;;14422:12;14400:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14390:5;:9;;:46;;;;:::i;:::-;14382:54;;14102:349;14215:3;;;;;;;14102:349;;;;14471:5;14464:12;;;;;14013:474;14503:1;14496:8;;13880:631;;;;:::o;12997:206::-;14948:10;;;;;;;;;;;14947:11;14939:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1280:12:39::1;:10;:12::i;:::-;1270:22;;:6;::::0;::::1;;;;;;;;:22;;;1262:67;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;13180:16:0::2;;13146:17;:31;13164:12;13146:31;;;;;;;;;;;;;;;:50;;;;;;;:::i;:::-;;12997:206:::0;;;:::o;1983:240:39:-;1280:12;:10;:12::i;:::-;1270:22;;:6;;;;;;;;;;:22;;;1262:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2091:1:::1;2071:22;;:8;:22;;;;2063:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2180:8;2151:38;;2172:6;::::0;::::1;;;;;;;;2151:38;;;;;;;;;;;;2208:8;2199:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1983:240:::0;:::o;12391:169:0:-;14948:10;;;;;;;;;;;14947:11;14939:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1280:12:39::1;:10;:12::i;:::-;1270:22;;:6;::::0;::::1;;;;;;;;:22;;;1262:67;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;12535:18:0::2;12513:19;:40;;;;12391:169:::0;:::o;11779:110::-;11837:7;11863:19;;11856:26;;11779:110;:::o;11481:102::-;11535:7;11561:15;;11554:22;;11481:102;:::o;9288:115::-;9350:7;9376:20;;9369:27;;9288:115;:::o;590:104:38:-;643:15;677:10;670:17;;590:104;:::o;3352:1700:0:-;3394:32;3429:73;3472:20;;3429:25;;:29;;:73;;;;:::i;:::-;3394:108;;3512:26;3541:86;3591:26;:24;:26::i;:::-;3541:32;3551:21;;;;;;;;;;;3541:9;:32::i;:::-;:36;;:86;;;;:::i;:::-;3512:115;;3680:24;3658:18;:46;3637:136;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3804:134;3830:21;;;;;;;;;;;3869:17;;;;;;;;;;;3904:20;;3804:8;:134::i;:::-;3783:205;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4010:17;;;;;;;;;;;3999:37;;;4044:20;;4079:19;3999:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4123:163;4147:17;;;;;;;;;;;4178:20;;4222:19;4212:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4256:20;;4123:163;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4297:36;4336:73;4379:20;;4336:25;;:29;;:73;;;;:::i;:::-;4297:112;;4476:28;4440:32;4450:21;;;;;;;;;;;4440:9;:32::i;:::-;:64;4419:146;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4581:9;4576:470;4600:21;:28;;;;4596:1;:32;4576:470;;;4649:24;4692:17;4707:1;4692:14;:17::i;:::-;4676:71;;;4748:21;;;;;;;;;;;4676:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4649:121;;4809:153;4839:21;;;;;;;;;;;4882:16;4920:21;4942:1;4920:24;;;;;;;;;;;;;;;;4809:8;:153::i;:::-;4784:251;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4576:470;4630:3;;;;;;;4576:470;;;;3352:1700;;;:::o;2870:237::-;2911:21;2951:30;2966:14;;2951;:30::i;:::-;2911:71;;2992:5;:12;;;3018:21;;;;;;;;;;;3053;3075:14;;3053:37;;;;;;;;;;;;;;;;2992:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2870:237;:::o;6099:2348::-;6352:12;6328:21;;:36;;;;;;;;;;;;;;;;;;6394:8;6374:17;;:28;;;;;;;;;;;;;;;;;;6435:11;6412:20;:34;;;;6478:10;6456:19;:32;;;;;;;;;;;;:::i;:::-;;6522:12;6498:21;;:36;;;;;;;;;;;;;;;;;;6567:11;6544:20;:34;;;;6616:77;6657:26;:24;:26::i;:::-;6616:23;6626:12;6616:9;:23::i;:::-;:27;;:77;;;;:::i;:::-;6588:25;:105;;;;6704:23;6730:11;6704:37;;6756:9;6751:1302;6775:26;:24;:26::i;:::-;6771:1;:30;6751:1302;;;6822:21;6862:17;6877:1;6862:14;:17::i;:::-;6822:58;;6894:20;6917:5;:21;;;6939:12;6917:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6894:58;;6986:1;6970:12;:17;6966:64;;;7007:8;;;;6966:64;7066:12;7047:15;:31;7043:1000;;7098:24;7125:5;:24;;;7171:12;7205:15;7125:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7098:140;;7256:21;7283:15;7256:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7317:21;7344:16;7317:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7402:80;7448:16;7402:20;;:24;;:80;;;;:::i;:::-;7379:20;:103;;;;7518:1;7500:19;;7537:5;;;;;7043:1000;7581:24;7608:5;:24;;;7654:12;7688;7608:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7581:137;;7736:21;7763:12;7736:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7794:21;7821:16;7794:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7879:80;7925:16;7879:20;;:24;;:80;;;;:::i;:::-;7856:20;:103;;;;7995:33;8015:12;7995:15;:19;;:33;;;;:::i;:::-;7977:51;;7043:1000;6751:1302;;;6803:3;;;;;;;6751:1302;;;;8089:1;8070:15;:20;8062:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8157:41;8177:20;;8157:19;:41::i;:::-;8135:19;:63;;;;8234:45;8258:20;;8234:23;:45::i;:::-;8208:23;:71;;;;8312:100;8388:23;;8312:58;8350:19;;8312:20;;:37;;:58;;;;:::i;:::-;:75;;:100;;;;:::i;:::-;8289:20;:123;;;;8436:4;8423:10;;:17;;;;;;;;;;;;;;;;;;6099:2348;;;;;;;:::o;5058:991::-;5108:26;5201:1;5146:57;;:20;:43;5167:21;;;;;;;;;;;5146:43;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;:107;;5234:19;;5146:107;;;5218:1;5146:107;5108:145;;5288:1;5267:18;:22;5263:322;;;5330:174;5360:21;;;;;;;;;;;5403:20;:43;5424:21;;;;;;;;;;;5403:43;;;;;;;;;;;;;;;;;;;;;;;;;5468:18;5330:8;:174::i;:::-;5305:269;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5263:322;5624:1;5598:23;;:27;5594:314;;;5666:157;5696:21;;;;;;;;;;;5739;;;;;;;;;;;5782:23;;5666:8;:157::i;:::-;5641:256;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5594:314;5922:120;5942:18;5974:23;;6011:21;;;;;;;;;;;5922:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5058:991;:::o;8453:548::-;8510:5;8497:10;;:18;;;;;;;;;;;;;;;;;;8553:1;8525:25;:29;;;;8596:1;8564:21;;:34;;;;;;;;;;;;;;;;;;8636:1;8608:17;;:30;;;;;;;;;;;;;;;;;;8671:1;8648:20;:24;;;;8689:19;;8682:26;;;;:::i;:::-;8735:1;8718:14;:18;;;;8778:1;8746:21;;:34;;;;;;;;;;;;;;;;;;8813:1;8790:20;:24;;;;8831:21;;8824:28;;;;:::i;:::-;8885:1;8862:20;:24;;;;8903:21;;8896:28;;;;:::i;:::-;8956:1;8934:19;:23;;;;8993:1;8967:23;:27;;;;8453:548::o;874:176:40:-;932:7;951:9;967:1;963;:5;951:17;;991:1;986;:6;;978:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1042:1;1035:8;;;874:176;;;;:::o;1321:134::-;1379:7;1405:43;1409:1;1412;1405:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1398:50;;1321:134;;;;:::o;11290:185:0:-;11391:7;11421:47;11462:5;11421:36;11437:19;;11421:11;:15;;:36;;;;:::i;:::-;:40;;:47;;;;:::i;:::-;11414:54;;11290:185;;;:::o;11107:177::-;11204:7;11234:43;11271:5;11234:32;11250:15;;11234:11;:15;;:32;;;;:::i;:::-;:36;;:43;;;;:::i;:::-;11227:50;;11107:177;;;:::o;944:333:7:-;1060:4;1096:16;;;;;;;;;;;1080:32;;:12;:32;;;1076:195;;;1128:28;1145:2;1149:6;1128:16;:28::i;:::-;1177:4;1170:11;;;;1076:195;1226:12;1219:29;;;1249:2;1253:6;1219:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1212:48;;944:333;;;;;;:::o;12796:154:0:-;12855:7;12914:1;12881:35;;:21;;;;;;;;;;;:35;;;:62;;12942:1;12881:62;;;12919:20;;12881:62;12874:69;;12796:154;:::o;1283:263:7:-;1347:7;1386:16;;;;;;;;;;;1370:32;;:12;:32;;;1366:174;;;1425:21;1418:28;;;;1366:174;1491:12;1484:30;;;1523:4;1484:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1477:52;;1283:263;;;;:::o;13587:142:0:-;13649:7;13675:17;:40;13693:21;;;;;;;;;;;13675:40;;;;;;;;;;;;;;;13716:5;13675:47;;;;;;;;;;;;;;;;;;;;;;;;;13668:54;;13587:142;;;:::o;13735:139::-;13794:7;13820:17;:40;13838:21;;;;;;;;;;;13820:40;;;;;;;;;;;;;;;:47;;;;13813:54;;13735:139;:::o;1746:187:40:-;1832:7;1864:1;1859;:6;;1867:12;1851:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1890:9;1906:1;1902;:5;1890:17;;1925:1;1918:8;;;1746:187;;;;;:::o;2180:459::-;2238:7;2484:1;2479;:6;2475:45;;;2508:1;2501:8;;;;2475:45;2530:9;2546:1;2542;:5;2530:17;;2574:1;2569;2565;:5;;;;;;:10;2557:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2631:1;2624:8;;;2180:459;;;;;:::o;3101:130::-;3159:7;3185:39;3189:1;3192;3185:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3178:46;;3101:130;;;;:::o;695:240:9:-;815:6;790:21;:31;;769:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;899:29;912:3;917:6;899:29;;;;;;;;;;;;:12;:29::i;:::-;695:240;;:::o;3713:272:40:-;3799:7;3830:1;3826;:5;3833:12;3818:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3856:9;3872:1;3868;:5;;;;;;3856:17;;3977:1;3970:8;;;3713:272;;;;;:::o;941:267:9:-;1062:12;1076:23;1103:3;:8;;1119:6;1140:5;1103:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1061:94;;;;1173:7;1189:10;1165:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;941:267;;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o",
  "source": "/*\n\n    Copyright 2020 Kollateral LLC.\n\n    Licensed under the Apache License, Version 2.0 (the \"License\");\n    you may not use this file except in compliance with the License.\n    You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\n    Unless required by applicable law or agreed to in writing, software\n    distributed under the License is distributed on an \"AS IS\" BASIS,\n    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    See the License for the specific language governing permissions and\n    limitations under the License.\n\n*/\n\n// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.7.0;\n\nimport \"@openzeppelin/contracts/math/SafeMath.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"./common/utils/BalanceCarrier.sol\";\nimport \"./liquidity/ILiquidityProxy.sol\";\nimport \"./common/invoke/IInvokable.sol\";\nimport \"./common/invoke/IInvoker.sol\";\n\ncontract Invoker is IInvoker, Ownable, BalanceCarrier {\n    using SafeMath for uint256;\n\n    event Invocation(\n        address invokeTo,\n        uint256 invokeValue,\n        bytes32 invokeDataHash,\n        uint256 underlyingAmount\n    );\n    event Reward(\n        uint256 poolReward,\n        uint256 platformReward,\n        address tokenAddress\n    );\n\n    mapping(address => address[]) internal _liquidityProxies;\n    uint256 internal _poolRewardBips;\n    mapping(address => address) _poolRewardAddresses;\n    uint256 internal _platformRewardBips;\n    address internal _platformVaultAddress;\n\n    bool internal _scheduled;\n    uint256 internal _schedulePriorTokenAmount;\n    address internal _scheduleInvokeSender;\n    address internal _scheduleInvokeTo;\n    uint256 internal _scheduleInvokeValue;\n    bytes internal _scheduleInvokeData;\n    uint256 internal _scheduleIndex;\n    address internal _scheduleTokenAddress;\n    uint256 internal _scheduleTokenAmount;\n    uint256[] internal _scheduleTokenAmounts;\n    uint256 internal _scheduleRepayAmount;\n    uint256[] internal _scheduleRepayAmounts;\n    uint256 internal _schedulePoolReward;\n    uint256 internal _schedulePlatformReward;\n\n    constructor() BalanceCarrier(address(1)) {}\n\n    function invoke(\n        address invokeTo,\n        bytes calldata invokeData,\n        address tokenAddress,\n        uint256 tokenAmount\n    ) external payable override onlyFresh {\n        require(\n            isTokenAddressRegistered(tokenAddress),\n            \"Invoker: no liquidity for token\"\n        );\n        require(\n            invokeTo != address(this),\n            \"Invoker: cannot invoke this contract\"\n        );\n\n        scheduleExecution(\n            msg.sender,\n            invokeTo,\n            msg.value,\n            invokeData,\n            tokenAddress,\n            tokenAmount\n        );\n\n        invokeNext();\n\n        disburseReward();\n\n        cleanSchedule();\n    }\n\n    function invokeNext() internal {\n        ILiquidityProxy proxy = ILiquidityProxy(liquidityProxy(_scheduleIndex));\n        proxy.borrow(\n            _scheduleTokenAddress,\n            _scheduleTokenAmounts[_scheduleIndex]\n        );\n    }\n\n    function invokeCallback() external override onlyScheduled {\n        _scheduleIndex++;\n        if (_scheduleIndex == _scheduleTokenAmounts.length) {\n            invokeFinal();\n        } else {\n            invokeNext();\n        }\n    }\n\n    function invokeFinal() internal {\n        uint256 expectedPriorTokenAmount = _schedulePriorTokenAmount.add(\n            _scheduleTokenAmount\n        );\n        uint256 currentTokenAmount = balanceOf(_scheduleTokenAddress).sub(\n            payableReserveAdjustment()\n        );\n        require(\n            currentTokenAmount == expectedPriorTokenAmount,\n            \"Invoker: incorrect liquidity amount sourced\"\n        );\n        require(\n            transfer(\n                _scheduleTokenAddress,\n                _scheduleInvokeTo,\n                _scheduleTokenAmount\n            ),\n            \"Invoker: transfer failed\"\n        );\n\n        IInvokable(_scheduleInvokeTo).execute{value: _scheduleInvokeValue}(\n            _scheduleInvokeData\n        );\n        emit Invocation(\n            _scheduleInvokeTo,\n            _scheduleInvokeValue,\n            keccak256(_scheduleInvokeData),\n            _scheduleTokenAmount\n        );\n\n        uint256 expectedResultingTokenAmount = _schedulePriorTokenAmount.add(\n            _scheduleRepayAmount\n        );\n        require(\n            balanceOf(_scheduleTokenAddress) == expectedResultingTokenAmount,\n            \"Invoker: incorrect repayment amount\"\n        );\n\n        for (uint256 i = 0; i < _scheduleRepayAmounts.length; i++) {\n            address repaymentAddress = ILiquidityProxy(liquidityProxy(i))\n                .getRepaymentAddress(_scheduleTokenAddress);\n            require(\n                transfer(\n                    _scheduleTokenAddress,\n                    repaymentAddress,\n                    _scheduleRepayAmounts[i]\n                ),\n                \"Invoker: pool repayment transfer failed\"\n            );\n        }\n    }\n\n    function disburseReward() internal {\n\n            uint256 modifiedPoolReward\n         = _poolRewardAddresses[_scheduleTokenAddress] == address(0)\n            ? 0\n            : _schedulePoolReward;\n        if (modifiedPoolReward > 0) {\n            require(\n                transfer(\n                    _scheduleTokenAddress,\n                    _poolRewardAddresses[_scheduleTokenAddress],\n                    modifiedPoolReward\n                ),\n                \"Invoker: pool reward transfer failed\"\n            );\n        }\n        if (_schedulePlatformReward > 0) {\n            require(\n                transfer(\n                    _scheduleTokenAddress,\n                    _platformVaultAddress,\n                    _schedulePlatformReward\n                ),\n                \"Invoker: platform reward transfer failed\"\n            );\n        }\n        emit Reward(\n            modifiedPoolReward,\n            _schedulePlatformReward,\n            _scheduleTokenAddress\n        );\n    }\n\n    /*\n     * EXECUTION SCHEDULING\n     */\n\n    function scheduleExecution(\n        address invokeSender,\n        address invokeTo,\n        uint256 invokeValue,\n        bytes memory invokeData,\n        address tokenAddress,\n        uint256 tokenAmount\n    ) internal {\n        _scheduleInvokeSender = invokeSender;\n        _scheduleInvokeTo = invokeTo;\n        _scheduleInvokeValue = invokeValue;\n        _scheduleInvokeData = invokeData;\n        _scheduleTokenAddress = tokenAddress;\n        _scheduleTokenAmount = tokenAmount;\n        _schedulePriorTokenAmount = balanceOf(tokenAddress).sub(\n            payableReserveAdjustment()\n        );\n\n        uint256 tokenAmountLeft = tokenAmount;\n        for (uint256 i = 0; i < liquidityProxiesForToken(); i++) {\n            ILiquidityProxy proxy = ILiquidityProxy(liquidityProxy(i));\n            uint256 totalReserve = proxy.getTotalReserve(tokenAddress);\n            if (totalReserve == 0) {\n                continue;\n            }\n            if (tokenAmountLeft <= totalReserve) {\n                uint256 proxyRepayAmount = proxy.getRepaymentAmount(\n                    tokenAddress,\n                    tokenAmountLeft\n                );\n                _scheduleTokenAmounts.push(tokenAmountLeft);\n                _scheduleRepayAmounts.push(proxyRepayAmount);\n                _scheduleRepayAmount = _scheduleRepayAmount.add(\n                    proxyRepayAmount\n                );\n                tokenAmountLeft = 0;\n                break;\n            } else {\n                uint256 proxyRepayAmount = proxy.getRepaymentAmount(\n                    tokenAddress,\n                    totalReserve\n                );\n                _scheduleTokenAmounts.push(totalReserve);\n                _scheduleRepayAmounts.push(proxyRepayAmount);\n                _scheduleRepayAmount = _scheduleRepayAmount.add(\n                    proxyRepayAmount\n                );\n                tokenAmountLeft = tokenAmountLeft.sub(totalReserve);\n            }\n        }\n        require(tokenAmountLeft == 0, \"Invoker: not enough liquidity\");\n\n        _schedulePoolReward = calculatePoolReward(_scheduleTokenAmount);\n        _schedulePlatformReward = calculatePlatformReward(_scheduleTokenAmount);\n        _scheduleRepayAmount = _scheduleRepayAmount\n            .add(_schedulePoolReward)\n            .add(_schedulePlatformReward);\n\n        _scheduled = true;\n    }\n\n    function cleanSchedule() internal {\n        _scheduled = false;\n        _schedulePriorTokenAmount = 0;\n        _scheduleInvokeSender = address(0);\n        _scheduleInvokeTo = address(0);\n        _scheduleInvokeValue = 0;\n        delete _scheduleInvokeData;\n        _scheduleIndex = 0;\n        _scheduleTokenAddress = address(0);\n        _scheduleTokenAmount = 0;\n        delete _scheduleTokenAmounts;\n        _scheduleRepayAmount = 0;\n        delete _scheduleRepayAmounts;\n        _schedulePoolReward = 0;\n        _schedulePlatformReward = 0;\n    }\n\n    /*\n     * INVOKABLE HELPERS\n     */\n\n    function currentSender() external view override returns (address) {\n        return _scheduleInvokeSender;\n    }\n\n    function currentTokenAddress() external view override returns (address) {\n        return _scheduleTokenAddress;\n    }\n\n    function currentTokenAmount() external view override returns (uint256) {\n        return _scheduleTokenAmount;\n    }\n\n    function currentRepaymentAmount() external view override returns (uint256) {\n        return _scheduleRepayAmount;\n    }\n\n    function estimateRepaymentAmount(address tokenAddress, uint256 tokenAmount)\n        external\n        view\n        returns (uint256)\n    {\n        require(\n            isTokenAddressRegistered(tokenAddress),\n            \"Invoker: no liquidity for token\"\n        );\n\n        uint256 repaymentAmount = 0;\n        uint256 tokenAmountLeft = tokenAmount;\n\n        for (uint256 i = 0; i < _liquidityProxies[tokenAddress].length; i++) {\n            ILiquidityProxy proxy = ILiquidityProxy(\n                _liquidityProxies[tokenAddress][i]\n            );\n            uint256 totalReserve = proxy.getTotalReserve(tokenAddress);\n            if (tokenAmountLeft <= totalReserve) {\n                uint256 proxyRepayAmount = proxy.getRepaymentAmount(\n                    tokenAddress,\n                    tokenAmountLeft\n                );\n                repaymentAmount = repaymentAmount.add(proxyRepayAmount);\n                tokenAmountLeft = 0;\n                break;\n            } else {\n                uint256 proxyRepayAmount = proxy.getRepaymentAmount(\n                    tokenAddress,\n                    totalReserve\n                );\n                repaymentAmount = repaymentAmount.add(proxyRepayAmount);\n                tokenAmountLeft = tokenAmountLeft.sub(totalReserve);\n            }\n        }\n        require(tokenAmountLeft == 0, \"Invoker: not enough liquidity\");\n\n        return\n            repaymentAmount.add(calculatePoolReward(tokenAmount)).add(\n                calculatePlatformReward(tokenAmount)\n            );\n    }\n\n    /*\n     * REWARDS\n     */\n\n    function calculatePoolReward(uint256 tokenAmount)\n        internal\n        view\n        returns (uint256)\n    {\n        return tokenAmount.mul(_poolRewardBips).div(10000);\n    }\n\n    function calculatePlatformReward(uint256 tokenAmount)\n        internal\n        view\n        returns (uint256)\n    {\n        return tokenAmount.mul(_platformRewardBips).div(10000);\n    }\n\n    function poolReward() external view override returns (uint256) {\n        return _poolRewardBips;\n    }\n\n    function poolRewardAddress(address tokenAddress)\n        external\n        view\n        override\n        returns (address)\n    {\n        return _poolRewardAddresses[tokenAddress];\n    }\n\n    function platformReward() external view override returns (uint256) {\n        return _platformRewardBips;\n    }\n\n    function platformVaultAddress() external view override returns (address) {\n        return _platformVaultAddress;\n    }\n\n    function setPoolReward(uint256 poolRewardBips)\n        external\n        onlyFresh\n        onlyOwner\n    {\n        _poolRewardBips = poolRewardBips;\n    }\n\n    function setPoolRewardAddress(\n        address tokenAddress,\n        address newPoolRewardAddress\n    ) external onlyFresh onlyOwner {\n        _poolRewardAddresses[tokenAddress] = newPoolRewardAddress;\n    }\n\n    function setPlatformReward(uint256 platformRewardBips)\n        external\n        onlyFresh\n        onlyOwner\n    {\n        _platformRewardBips = platformRewardBips;\n    }\n\n    function setPlatformVaultAddress(address newPlatformVaultAddress)\n        external\n        onlyFresh\n        onlyOwner\n    {\n        _platformVaultAddress = newPlatformVaultAddress;\n    }\n\n    /*\n     * ASSET HELPERS\n     */\n\n    function payableReserveAdjustment() internal view returns (uint256) {\n        return _scheduleTokenAddress == address(1) ? _scheduleInvokeValue : 0;\n    }\n\n    /*\n     * LIQUIDITY PROXIES\n     */\n\n    function setLiquidityProxies(\n        address tokenAddress,\n        address[] calldata liquidityProxies\n    ) external onlyFresh onlyOwner {\n        _liquidityProxies[tokenAddress] = liquidityProxies;\n    }\n\n    function liquidityProxies(address tokenAddress)\n        external\n        view\n        returns (address[] memory)\n    {\n        return _liquidityProxies[tokenAddress];\n    }\n\n    function isTokenAddressRegistered(address tokenAddress)\n        public\n        view\n        override\n        returns (bool)\n    {\n        return _liquidityProxies[tokenAddress].length > 0;\n    }\n\n    function liquidityProxy(uint256 index) internal view returns (address) {\n        return _liquidityProxies[_scheduleTokenAddress][index];\n    }\n\n    function liquidityProxiesForToken() internal view returns (uint256) {\n        return _liquidityProxies[_scheduleTokenAddress].length;\n    }\n\n    function totalLiquidity(address tokenAddress)\n        external\n        view\n        override\n        returns (uint256)\n    {\n        if (isTokenAddressRegistered(tokenAddress)) {\n            uint256 total = 0;\n            for (\n                uint256 i = 0;\n                i < _liquidityProxies[tokenAddress].length;\n                i++\n            ) {\n                ILiquidityProxy proxy = ILiquidityProxy(\n                    _liquidityProxies[tokenAddress][i]\n                );\n                total = total.add(proxy.getTotalReserve(tokenAddress));\n            }\n            return total;\n        }\n        return 0;\n    }\n\n    /* This contract should never have a token balance at rest. If so it is in error,\n       allow tokens to be moved to vault */\n    function removeStuckTokens(address tokenAddress, uint256 amount)\n        external\n        onlyFresh\n        onlyOwner\n        returns (bool)\n    {\n        return transfer(tokenAddress, _platformVaultAddress, amount);\n    }\n\n    /*\n     * MODIFIERS\n     */\n\n    modifier onlyFresh() {\n        require(!_scheduled, \"Invoker: not fresh environment\");\n        _;\n    }\n\n    modifier onlyScheduled() {\n        require(_scheduled, \"Invoker: not scheduled\");\n        _;\n    }\n\n    receive() external payable {}\n\n    fallback() external payable {}\n}\n",
  "sourcePath": "/Users/andrekorol/src/kollateral/protocol/contracts/Invoker.sol",
  "ast": {
    "absolutePath": "/Users/andrekorol/src/kollateral/protocol/contracts/Invoker.sol",
    "exportedSymbols": {
      "BalanceCarrier": [
        1464
      ],
      "Context": [
        5279
      ],
      "ExternalCaller": [
        1563
      ],
      "IERC20": [
        6165
      ],
      "IInvocationHook": [
        1170
      ],
      "IInvokable": [
        1178
      ],
      "IInvoker": [
        1234
      ],
      "ILiquidityProxy": [
        2148
      ],
      "Invoker": [
        1090
      ],
      "Ownable": [
        5388
      ],
      "SafeMath": [
        5584
      ]
    },
    "id": 1091,
    "license": "Apache-2.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1,
        "literals": [
          "solidity",
          "^",
          "0.7",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "640:23:0"
      },
      {
        "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol",
        "file": "@openzeppelin/contracts/math/SafeMath.sol",
        "id": 2,
        "nodeType": "ImportDirective",
        "scope": 1091,
        "sourceUnit": 5585,
        "src": "665:51:0",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@openzeppelin/contracts/access/Ownable.sol",
        "file": "@openzeppelin/contracts/access/Ownable.sol",
        "id": 3,
        "nodeType": "ImportDirective",
        "scope": 1091,
        "sourceUnit": 5389,
        "src": "717:52:0",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/andrekorol/src/kollateral/protocol/contracts/common/utils/BalanceCarrier.sol",
        "file": "./common/utils/BalanceCarrier.sol",
        "id": 4,
        "nodeType": "ImportDirective",
        "scope": 1091,
        "sourceUnit": 1465,
        "src": "770:43:0",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/andrekorol/src/kollateral/protocol/contracts/liquidity/ILiquidityProxy.sol",
        "file": "./liquidity/ILiquidityProxy.sol",
        "id": 5,
        "nodeType": "ImportDirective",
        "scope": 1091,
        "sourceUnit": 2149,
        "src": "814:41:0",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/andrekorol/src/kollateral/protocol/contracts/common/invoke/IInvokable.sol",
        "file": "./common/invoke/IInvokable.sol",
        "id": 6,
        "nodeType": "ImportDirective",
        "scope": 1091,
        "sourceUnit": 1179,
        "src": "856:40:0",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/andrekorol/src/kollateral/protocol/contracts/common/invoke/IInvoker.sol",
        "file": "./common/invoke/IInvoker.sol",
        "id": 7,
        "nodeType": "ImportDirective",
        "scope": 1091,
        "sourceUnit": 1235,
        "src": "897:38:0",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 8,
              "name": "IInvoker",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1234,
              "src": "957:8:0",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IInvoker_$1234",
                "typeString": "contract IInvoker"
              }
            },
            "id": 9,
            "nodeType": "InheritanceSpecifier",
            "src": "957:8:0"
          },
          {
            "baseName": {
              "id": 10,
              "name": "Ownable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 5388,
              "src": "967:7:0",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Ownable_$5388",
                "typeString": "contract Ownable"
              }
            },
            "id": 11,
            "nodeType": "InheritanceSpecifier",
            "src": "967:7:0"
          },
          {
            "baseName": {
              "id": 12,
              "name": "BalanceCarrier",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1464,
              "src": "976:14:0",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_BalanceCarrier_$1464",
                "typeString": "contract BalanceCarrier"
              }
            },
            "id": 13,
            "nodeType": "InheritanceSpecifier",
            "src": "976:14:0"
          }
        ],
        "contractDependencies": [
          1170,
          1234,
          1464,
          1563,
          5279,
          5388
        ],
        "contractKind": "contract",
        "fullyImplemented": true,
        "id": 1090,
        "linearizedBaseContracts": [
          1090,
          1464,
          1563,
          5388,
          5279,
          1234,
          1170
        ],
        "name": "Invoker",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 16,
            "libraryName": {
              "id": 14,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 5584,
              "src": "1003:8:0",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$5584",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "997:27:0",
            "typeName": {
              "id": 15,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1016:7:0",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "anonymous": false,
            "id": 26,
            "name": "Invocation",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 25,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "invokeTo",
                  "nodeType": "VariableDeclaration",
                  "scope": 26,
                  "src": "1056:16:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1056:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "invokeValue",
                  "nodeType": "VariableDeclaration",
                  "scope": 26,
                  "src": "1082:19:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1082:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "invokeDataHash",
                  "nodeType": "VariableDeclaration",
                  "scope": 26,
                  "src": "1111:22:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 21,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1111:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "underlyingAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 26,
                  "src": "1143:24:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1143:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1046:127:0"
            },
            "src": "1030:144:0"
          },
          {
            "anonymous": false,
            "id": 34,
            "name": "Reward",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 33,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 28,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "poolReward",
                  "nodeType": "VariableDeclaration",
                  "scope": 34,
                  "src": "1201:18:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 27,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1201:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 30,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "platformReward",
                  "nodeType": "VariableDeclaration",
                  "scope": 34,
                  "src": "1229:22:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 29,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1229:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 32,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "tokenAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 34,
                  "src": "1261:20:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 31,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1261:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1191:96:0"
            },
            "src": "1179:109:0"
          },
          {
            "constant": false,
            "id": 39,
            "mutability": "mutable",
            "name": "_liquidityProxies",
            "nodeType": "VariableDeclaration",
            "scope": 1090,
            "src": "1294:56:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
              "typeString": "mapping(address => address[])"
            },
            "typeName": {
              "id": 38,
              "keyType": {
                "id": 35,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "1302:7:0",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "1294:29:0",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                "typeString": "mapping(address => address[])"
              },
              "valueType": {
                "baseType": {
                  "id": 36,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "1313:7:0",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "id": 37,
                "nodeType": "ArrayTypeName",
                "src": "1313:9:0",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                  "typeString": "address[]"
                }
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 41,
            "mutability": "mutable",
            "name": "_poolRewardBips",
            "nodeType": "VariableDeclaration",
            "scope": 1090,
            "src": "1356:32:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 40,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1356:7:0",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 45,
            "mutability": "mutable",
            "name": "_poolRewardAddresses",
            "nodeType": "VariableDeclaration",
            "scope": 1090,
            "src": "1394:48:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
              "typeString": "mapping(address => address)"
            },
            "typeName": {
              "id": 44,
              "keyType": {
                "id": 42,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "1402:7:0",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "1394:27:0",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                "typeString": "mapping(address => address)"
              },
              "valueType": {
                "id": 43,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "1413:7:0",
                "stateMutability": "nonpayable",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 47,
            "mutability": "mutable",
            "name": "_platformRewardBips",
            "nodeType": "VariableDeclaration",
            "scope": 1090,
            "src": "1448:36:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 46,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1448:7:0",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 49,
            "mutability": "mutable",
            "name": "_platformVaultAddress",
            "nodeType": "VariableDeclaration",
            "scope": 1090,
            "src": "1490:38:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 48,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "1490:7:0",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 51,
            "mutability": "mutable",
            "name": "_scheduled",
            "nodeType": "VariableDeclaration",
            "scope": 1090,
            "src": "1535:24:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bool",
              "typeString": "bool"
            },
            "typeName": {
              "id": 50,
              "name": "bool",
              "nodeType": "ElementaryTypeName",
              "src": "1535:4:0",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 53,
            "mutability": "mutable",
            "name": "_schedulePriorTokenAmount",
            "nodeType": "VariableDeclaration",
            "scope": 1090,
            "src": "1565:42:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 52,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1565:7:0",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 55,
            "mutability": "mutable",
            "name": "_scheduleInvokeSender",
            "nodeType": "VariableDeclaration",
            "scope": 1090,
            "src": "1613:38:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 54,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "1613:7:0",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 57,
            "mutability": "mutable",
            "name": "_scheduleInvokeTo",
            "nodeType": "VariableDeclaration",
            "scope": 1090,
            "src": "1657:34:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 56,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "1657:7:0",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 59,
            "mutability": "mutable",
            "name": "_scheduleInvokeValue",
            "nodeType": "VariableDeclaration",
            "scope": 1090,
            "src": "1697:37:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 58,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1697:7:0",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 61,
            "mutability": "mutable",
            "name": "_scheduleInvokeData",
            "nodeType": "VariableDeclaration",
            "scope": 1090,
            "src": "1740:34:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes_storage",
              "typeString": "bytes"
            },
            "typeName": {
              "id": 60,
              "name": "bytes",
              "nodeType": "ElementaryTypeName",
              "src": "1740:5:0",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes_storage_ptr",
                "typeString": "bytes"
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 63,
            "mutability": "mutable",
            "name": "_scheduleIndex",
            "nodeType": "VariableDeclaration",
            "scope": 1090,
            "src": "1780:31:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 62,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1780:7:0",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 65,
            "mutability": "mutable",
            "name": "_scheduleTokenAddress",
            "nodeType": "VariableDeclaration",
            "scope": 1090,
            "src": "1817:38:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 64,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "1817:7:0",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 67,
            "mutability": "mutable",
            "name": "_scheduleTokenAmount",
            "nodeType": "VariableDeclaration",
            "scope": 1090,
            "src": "1861:37:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 66,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1861:7:0",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 70,
            "mutability": "mutable",
            "name": "_scheduleTokenAmounts",
            "nodeType": "VariableDeclaration",
            "scope": 1090,
            "src": "1904:40:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
              "typeString": "uint256[]"
            },
            "typeName": {
              "baseType": {
                "id": 68,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "1904:7:0",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "id": 69,
              "nodeType": "ArrayTypeName",
              "src": "1904:9:0",
              "typeDescriptions": {
                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                "typeString": "uint256[]"
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 72,
            "mutability": "mutable",
            "name": "_scheduleRepayAmount",
            "nodeType": "VariableDeclaration",
            "scope": 1090,
            "src": "1950:37:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 71,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1950:7:0",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 75,
            "mutability": "mutable",
            "name": "_scheduleRepayAmounts",
            "nodeType": "VariableDeclaration",
            "scope": 1090,
            "src": "1993:40:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
              "typeString": "uint256[]"
            },
            "typeName": {
              "baseType": {
                "id": 73,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "1993:7:0",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "id": 74,
              "nodeType": "ArrayTypeName",
              "src": "1993:9:0",
              "typeDescriptions": {
                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                "typeString": "uint256[]"
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 77,
            "mutability": "mutable",
            "name": "_schedulePoolReward",
            "nodeType": "VariableDeclaration",
            "scope": 1090,
            "src": "2039:36:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 76,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "2039:7:0",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 79,
            "mutability": "mutable",
            "name": "_schedulePlatformReward",
            "nodeType": "VariableDeclaration",
            "scope": 1090,
            "src": "2081:40:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 78,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "2081:7:0",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "visibility": "internal"
          },
          {
            "body": {
              "id": 88,
              "nodeType": "Block",
              "src": "2169:2:0",
              "statements": []
            },
            "id": 89,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "arguments": [
                      {
                        "hexValue": "31",
                        "id": 84,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2165:1:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        }
                      ],
                      "id": 83,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "2157:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": {
                        "id": 82,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2157:7:0",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 85,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2157:10:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  }
                ],
                "id": 86,
                "modifierName": {
                  "id": 81,
                  "name": "BalanceCarrier",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1464,
                  "src": "2142:14:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_BalanceCarrier_$1464_$",
                    "typeString": "type(contract BalanceCarrier)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2142:26:0"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 80,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2139:2:0"
            },
            "returnParameters": {
              "id": 87,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2169:0:0"
            },
            "scope": 1090,
            "src": "2128:43:0",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              1194
            ],
            "body": {
              "id": 140,
              "nodeType": "Block",
              "src": "2355:509:0",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 105,
                            "name": "tokenAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 95,
                            "src": "2411:12:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 104,
                          "name": "isTokenAddressRegistered",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 960,
                          "src": "2386:24:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                            "typeString": "function (address) view returns (bool)"
                          }
                        },
                        "id": 106,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2386:38:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "496e766f6b65723a206e6f206c697175696469747920666f7220746f6b656e",
                        "id": 107,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2438:33:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_3baebd1e484b5704c0e6ab1bee585c31e762e1cb1c76bc62bb5ea845c3f0b548",
                          "typeString": "literal_string \"Invoker: no liquidity for token\""
                        },
                        "value": "Invoker: no liquidity for token"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_3baebd1e484b5704c0e6ab1bee585c31e762e1cb1c76bc62bb5ea845c3f0b548",
                          "typeString": "literal_string \"Invoker: no liquidity for token\""
                        }
                      ],
                      "id": 103,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "2365:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 108,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2365:116:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 109,
                  "nodeType": "ExpressionStatement",
                  "src": "2365:116:0"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 116,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 111,
                          "name": "invokeTo",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 91,
                          "src": "2512:8:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "arguments": [
                            {
                              "id": 114,
                              "name": "this",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -28,
                              "src": "2532:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Invoker_$1090",
                                "typeString": "contract Invoker"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_Invoker_$1090",
                                "typeString": "contract Invoker"
                              }
                            ],
                            "id": 113,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2524:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 112,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2524:7:0",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 115,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2524:13:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "2512:25:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "496e766f6b65723a2063616e6e6f7420696e766f6b65207468697320636f6e7472616374",
                        "id": 117,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2551:38:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_240b70231dc1ab85d5e65461741072f1747b65c237266f84676ff40a283df5c9",
                          "typeString": "literal_string \"Invoker: cannot invoke this contract\""
                        },
                        "value": "Invoker: cannot invoke this contract"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_240b70231dc1ab85d5e65461741072f1747b65c237266f84676ff40a283df5c9",
                          "typeString": "literal_string \"Invoker: cannot invoke this contract\""
                        }
                      ],
                      "id": 110,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "2491:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 118,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2491:108:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 119,
                  "nodeType": "ExpressionStatement",
                  "src": "2491:108:0"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 121,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "2641:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 122,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "2641:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "id": 123,
                        "name": "invokeTo",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 91,
                        "src": "2665:8:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "expression": {
                          "id": 124,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "2687:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 125,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "value",
                        "nodeType": "MemberAccess",
                        "src": "2687:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 126,
                        "name": "invokeData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 93,
                        "src": "2710:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      },
                      {
                        "id": 127,
                        "name": "tokenAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 95,
                        "src": "2734:12:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 128,
                        "name": "tokenAmount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 97,
                        "src": "2760:11:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 120,
                      "name": "scheduleExecution",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 538,
                      "src": "2610:17:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256,bytes memory,address,uint256)"
                      }
                    },
                    "id": 129,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2610:171:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 130,
                  "nodeType": "ExpressionStatement",
                  "src": "2610:171:0"
                },
                {
                  "expression": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 131,
                      "name": "invokeNext",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 162,
                      "src": "2792:10:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 132,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2792:12:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 133,
                  "nodeType": "ExpressionStatement",
                  "src": "2792:12:0"
                },
                {
                  "expression": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 134,
                      "name": "disburseReward",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 345,
                      "src": "2815:14:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 135,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2815:16:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 136,
                  "nodeType": "ExpressionStatement",
                  "src": "2815:16:0"
                },
                {
                  "expression": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 137,
                      "name": "cleanSchedule",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 604,
                      "src": "2842:13:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 138,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2842:15:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 139,
                  "nodeType": "ExpressionStatement",
                  "src": "2842:15:0"
                }
              ]
            },
            "functionSelector": "0e02e6a3",
            "id": 141,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 101,
                "modifierName": {
                  "id": 100,
                  "name": "onlyFresh",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1072,
                  "src": "2345:9:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2345:9:0"
              }
            ],
            "name": "invoke",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 99,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2336:8:0"
            },
            "parameters": {
              "id": 98,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 91,
                  "mutability": "mutable",
                  "name": "invokeTo",
                  "nodeType": "VariableDeclaration",
                  "scope": 141,
                  "src": "2202:16:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 90,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2202:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 93,
                  "mutability": "mutable",
                  "name": "invokeData",
                  "nodeType": "VariableDeclaration",
                  "scope": 141,
                  "src": "2228:25:0",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 92,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2228:5:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 95,
                  "mutability": "mutable",
                  "name": "tokenAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 141,
                  "src": "2263:20:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 94,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2263:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 97,
                  "mutability": "mutable",
                  "name": "tokenAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 141,
                  "src": "2293:19:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 96,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2293:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2192:126:0"
            },
            "returnParameters": {
              "id": 102,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2355:0:0"
            },
            "scope": 1090,
            "src": "2177:687:0",
            "stateMutability": "payable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 161,
              "nodeType": "Block",
              "src": "2901:206:0",
              "statements": [
                {
                  "assignments": [
                    145
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 145,
                      "mutability": "mutable",
                      "name": "proxy",
                      "nodeType": "VariableDeclaration",
                      "scope": 161,
                      "src": "2911:21:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ILiquidityProxy_$2148",
                        "typeString": "contract ILiquidityProxy"
                      },
                      "typeName": {
                        "id": 144,
                        "name": "ILiquidityProxy",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2148,
                        "src": "2911:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ILiquidityProxy_$2148",
                          "typeString": "contract ILiquidityProxy"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 151,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 148,
                            "name": "_scheduleIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 63,
                            "src": "2966:14:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 147,
                          "name": "liquidityProxy",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 974,
                          "src": "2951:14:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                            "typeString": "function (uint256) view returns (address)"
                          }
                        },
                        "id": 149,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2951:30:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 146,
                      "name": "ILiquidityProxy",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2148,
                      "src": "2935:15:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_ILiquidityProxy_$2148_$",
                        "typeString": "type(contract ILiquidityProxy)"
                      }
                    },
                    "id": 150,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2935:47:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ILiquidityProxy_$2148",
                      "typeString": "contract ILiquidityProxy"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2911:71:0"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 155,
                        "name": "_scheduleTokenAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 65,
                        "src": "3018:21:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "baseExpression": {
                          "id": 156,
                          "name": "_scheduleTokenAmounts",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 70,
                          "src": "3053:21:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                            "typeString": "uint256[] storage ref"
                          }
                        },
                        "id": 158,
                        "indexExpression": {
                          "id": 157,
                          "name": "_scheduleIndex",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 63,
                          "src": "3075:14:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3053:37:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 152,
                        "name": "proxy",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 145,
                        "src": "2992:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ILiquidityProxy_$2148",
                          "typeString": "contract ILiquidityProxy"
                        }
                      },
                      "id": 154,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "borrow",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2147,
                      "src": "2992:12:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256) external"
                      }
                    },
                    "id": 159,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2992:108:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 160,
                  "nodeType": "ExpressionStatement",
                  "src": "2992:108:0"
                }
              ]
            },
            "id": 162,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "invokeNext",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 142,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2889:2:0"
            },
            "returnParameters": {
              "id": 143,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2901:0:0"
            },
            "scope": 1090,
            "src": "2870:237:0",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "baseFunctions": [
              1197
            ],
            "body": {
              "id": 184,
              "nodeType": "Block",
              "src": "3171:175:0",
              "statements": [
                {
                  "expression": {
                    "id": 169,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "++",
                    "prefix": false,
                    "src": "3181:16:0",
                    "subExpression": {
                      "id": 168,
                      "name": "_scheduleIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 63,
                      "src": "3181:14:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 170,
                  "nodeType": "ExpressionStatement",
                  "src": "3181:16:0"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 174,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 171,
                      "name": "_scheduleIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 63,
                      "src": "3211:14:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "expression": {
                        "id": 172,
                        "name": "_scheduleTokenAmounts",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 70,
                        "src": "3229:21:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                          "typeString": "uint256[] storage ref"
                        }
                      },
                      "id": 173,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "3229:28:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3211:46:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 182,
                    "nodeType": "Block",
                    "src": "3303:37:0",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 179,
                            "name": "invokeNext",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 162,
                            "src": "3317:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 180,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3317:12:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 181,
                        "nodeType": "ExpressionStatement",
                        "src": "3317:12:0"
                      }
                    ]
                  },
                  "id": 183,
                  "nodeType": "IfStatement",
                  "src": "3207:133:0",
                  "trueBody": {
                    "id": 178,
                    "nodeType": "Block",
                    "src": "3259:38:0",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 175,
                            "name": "invokeFinal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 291,
                            "src": "3273:11:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 176,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3273:13:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 177,
                        "nodeType": "ExpressionStatement",
                        "src": "3273:13:0"
                      }
                    ]
                  }
                }
              ]
            },
            "functionSelector": "0a5ca4e8",
            "id": 185,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 166,
                "modifierName": {
                  "id": 165,
                  "name": "onlyScheduled",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1081,
                  "src": "3157:13:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3157:13:0"
              }
            ],
            "name": "invokeCallback",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 164,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "3148:8:0"
            },
            "parameters": {
              "id": 163,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3136:2:0"
            },
            "returnParameters": {
              "id": 167,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3171:0:0"
            },
            "scope": 1090,
            "src": "3113:233:0",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 290,
              "nodeType": "Block",
              "src": "3384:1668:0",
              "statements": [
                {
                  "assignments": [
                    189
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 189,
                      "mutability": "mutable",
                      "name": "expectedPriorTokenAmount",
                      "nodeType": "VariableDeclaration",
                      "scope": 290,
                      "src": "3394:32:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 188,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3394:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 194,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 192,
                        "name": "_scheduleTokenAmount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 67,
                        "src": "3472:20:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 190,
                        "name": "_schedulePriorTokenAmount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 53,
                        "src": "3429:25:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 191,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "add",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5417,
                      "src": "3429:29:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 193,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3429:73:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3394:108:0"
                },
                {
                  "assignments": [
                    196
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 196,
                      "mutability": "mutable",
                      "name": "currentTokenAmount",
                      "nodeType": "VariableDeclaration",
                      "scope": 290,
                      "src": "3512:26:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 195,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3512:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 204,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 201,
                          "name": "payableReserveAdjustment",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 912,
                          "src": "3591:24:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                            "typeString": "function () view returns (uint256)"
                          }
                        },
                        "id": 202,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3591:26:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "arguments": [
                          {
                            "id": 198,
                            "name": "_scheduleTokenAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 65,
                            "src": "3551:21:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 197,
                          "name": "balanceOf",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1463,
                          "src": "3541:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                            "typeString": "function (address) view returns (uint256)"
                          }
                        },
                        "id": 199,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3541:32:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 200,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sub",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5434,
                      "src": "3541:36:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 203,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3541:86:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3512:115:0"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 208,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 206,
                          "name": "currentTokenAmount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 196,
                          "src": "3658:18:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "id": 207,
                          "name": "expectedPriorTokenAmount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 189,
                          "src": "3680:24:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3658:46:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "496e766f6b65723a20696e636f7272656374206c697175696469747920616d6f756e7420736f7572636564",
                        "id": 209,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3718:45:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_55b82c48bdc7538c0b1fef7750395b597f60cfcb3776bc97bead2d77d6813d90",
                          "typeString": "literal_string \"Invoker: incorrect liquidity amount sourced\""
                        },
                        "value": "Invoker: incorrect liquidity amount sourced"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_55b82c48bdc7538c0b1fef7750395b597f60cfcb3776bc97bead2d77d6813d90",
                          "typeString": "literal_string \"Invoker: incorrect liquidity amount sourced\""
                        }
                      ],
                      "id": 205,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "3637:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 210,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3637:136:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 211,
                  "nodeType": "ExpressionStatement",
                  "src": "3637:136:0"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 214,
                            "name": "_scheduleTokenAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 65,
                            "src": "3830:21:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 215,
                            "name": "_scheduleInvokeTo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 57,
                            "src": "3869:17:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 216,
                            "name": "_scheduleTokenAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 67,
                            "src": "3904:20:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 213,
                          "name": "transfer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1433,
                          "src": "3804:8:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,address,uint256) returns (bool)"
                          }
                        },
                        "id": 217,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3804:134:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "496e766f6b65723a207472616e73666572206661696c6564",
                        "id": 218,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3952:26:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_7b1fe6565af982bcd6974838026c9662eb3dcef851b3eee7edbfcd417cee7563",
                          "typeString": "literal_string \"Invoker: transfer failed\""
                        },
                        "value": "Invoker: transfer failed"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_7b1fe6565af982bcd6974838026c9662eb3dcef851b3eee7edbfcd417cee7563",
                          "typeString": "literal_string \"Invoker: transfer failed\""
                        }
                      ],
                      "id": 212,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "3783:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 219,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3783:205:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 220,
                  "nodeType": "ExpressionStatement",
                  "src": "3783:205:0"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 227,
                        "name": "_scheduleInvokeData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 61,
                        "src": "4079:19:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage",
                          "typeString": "bytes storage ref"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_storage",
                          "typeString": "bytes storage ref"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_storage",
                            "typeString": "bytes storage ref"
                          }
                        ],
                        "expression": {
                          "arguments": [
                            {
                              "id": 222,
                              "name": "_scheduleInvokeTo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 57,
                              "src": "4010:17:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 221,
                            "name": "IInvokable",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1178,
                            "src": "3999:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_IInvokable_$1178_$",
                              "typeString": "type(contract IInvokable)"
                            }
                          },
                          "id": 223,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3999:29:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IInvokable_$1178",
                            "typeString": "contract IInvokable"
                          }
                        },
                        "id": 224,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "execute",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1177,
                        "src": "3999:37:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_payable$_t_bytes_memory_ptr_$returns$__$",
                          "typeString": "function (bytes memory) payable external"
                        }
                      },
                      "id": 226,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "names": [
                        "value"
                      ],
                      "nodeType": "FunctionCallOptions",
                      "options": [
                        {
                          "id": 225,
                          "name": "_scheduleInvokeValue",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 59,
                          "src": "4044:20:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "src": "3999:66:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_payable$_t_bytes_memory_ptr_$returns$__$value",
                        "typeString": "function (bytes memory) payable external"
                      }
                    },
                    "id": 228,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3999:109:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 229,
                  "nodeType": "ExpressionStatement",
                  "src": "3999:109:0"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 231,
                        "name": "_scheduleInvokeTo",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 57,
                        "src": "4147:17:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 232,
                        "name": "_scheduleInvokeValue",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 59,
                        "src": "4178:20:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 234,
                            "name": "_scheduleInvokeData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 61,
                            "src": "4222:19:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage",
                              "typeString": "bytes storage ref"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_storage",
                              "typeString": "bytes storage ref"
                            }
                          ],
                          "id": 233,
                          "name": "keccak256",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -8,
                          "src": "4212:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                            "typeString": "function (bytes memory) pure returns (bytes32)"
                          }
                        },
                        "id": 235,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4212:30:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 236,
                        "name": "_scheduleTokenAmount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 67,
                        "src": "4256:20:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 230,
                      "name": "Invocation",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 26,
                      "src": "4123:10:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_bytes32_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256,bytes32,uint256)"
                      }
                    },
                    "id": 237,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4123:163:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 238,
                  "nodeType": "EmitStatement",
                  "src": "4118:168:0"
                },
                {
                  "assignments": [
                    240
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 240,
                      "mutability": "mutable",
                      "name": "expectedResultingTokenAmount",
                      "nodeType": "VariableDeclaration",
                      "scope": 290,
                      "src": "4297:36:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 239,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4297:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 245,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 243,
                        "name": "_scheduleRepayAmount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 72,
                        "src": "4379:20:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 241,
                        "name": "_schedulePriorTokenAmount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 53,
                        "src": "4336:25:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 242,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "add",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5417,
                      "src": "4336:29:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 244,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4336:73:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4297:112:0"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 251,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [
                            {
                              "id": 248,
                              "name": "_scheduleTokenAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 65,
                              "src": "4450:21:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 247,
                            "name": "balanceOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1463,
                            "src": "4440:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view returns (uint256)"
                            }
                          },
                          "id": 249,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4440:32:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "id": 250,
                          "name": "expectedResultingTokenAmount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 240,
                          "src": "4476:28:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "4440:64:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "496e766f6b65723a20696e636f72726563742072657061796d656e7420616d6f756e74",
                        "id": 252,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4518:37:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_3d613f9848565a9e04a88f3d3112c58c08151ee67296aab4ff0808b96033056e",
                          "typeString": "literal_string \"Invoker: incorrect repayment amount\""
                        },
                        "value": "Invoker: incorrect repayment amount"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_3d613f9848565a9e04a88f3d3112c58c08151ee67296aab4ff0808b96033056e",
                          "typeString": "literal_string \"Invoker: incorrect repayment amount\""
                        }
                      ],
                      "id": 246,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "4419:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 253,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4419:146:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 254,
                  "nodeType": "ExpressionStatement",
                  "src": "4419:146:0"
                },
                {
                  "body": {
                    "id": 288,
                    "nodeType": "Block",
                    "src": "4635:411:0",
                    "statements": [
                      {
                        "assignments": [
                          267
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 267,
                            "mutability": "mutable",
                            "name": "repaymentAddress",
                            "nodeType": "VariableDeclaration",
                            "scope": 288,
                            "src": "4649:24:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 266,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "4649:7:0",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 276,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 274,
                              "name": "_scheduleTokenAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 65,
                              "src": "4748:21:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "id": 270,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 256,
                                      "src": "4707:1:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 269,
                                    "name": "liquidityProxy",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 974,
                                    "src": "4692:14:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                                      "typeString": "function (uint256) view returns (address)"
                                    }
                                  },
                                  "id": 271,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4692:17:0",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 268,
                                "name": "ILiquidityProxy",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2148,
                                "src": "4676:15:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_ILiquidityProxy_$2148_$",
                                  "typeString": "type(contract ILiquidityProxy)"
                                }
                              },
                              "id": 272,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4676:34:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILiquidityProxy_$2148",
                                "typeString": "contract ILiquidityProxy"
                              }
                            },
                            "id": 273,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getRepaymentAddress",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2131,
                            "src": "4676:71:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
                              "typeString": "function (address) view external returns (address)"
                            }
                          },
                          "id": 275,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4676:94:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4649:121:0"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 279,
                                  "name": "_scheduleTokenAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 65,
                                  "src": "4839:21:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 280,
                                  "name": "repaymentAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 267,
                                  "src": "4882:16:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "baseExpression": {
                                    "id": 281,
                                    "name": "_scheduleRepayAmounts",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 75,
                                    "src": "4920:21:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                      "typeString": "uint256[] storage ref"
                                    }
                                  },
                                  "id": 283,
                                  "indexExpression": {
                                    "id": 282,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 256,
                                    "src": "4942:1:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4920:24:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 278,
                                "name": "transfer",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1433,
                                "src": "4809:8:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (address,address,uint256) returns (bool)"
                                }
                              },
                              "id": 284,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4809:153:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e766f6b65723a20706f6f6c2072657061796d656e74207472616e73666572206661696c6564",
                              "id": 285,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4980:41:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_7a0290cc1a0722251ec8a5c46394b2564fb6d137736a22ac751cd6093ce61eb5",
                                "typeString": "literal_string \"Invoker: pool repayment transfer failed\""
                              },
                              "value": "Invoker: pool repayment transfer failed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_7a0290cc1a0722251ec8a5c46394b2564fb6d137736a22ac751cd6093ce61eb5",
                                "typeString": "literal_string \"Invoker: pool repayment transfer failed\""
                              }
                            ],
                            "id": 277,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4784:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 286,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4784:251:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 287,
                        "nodeType": "ExpressionStatement",
                        "src": "4784:251:0"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 262,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 259,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 256,
                      "src": "4596:1:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 260,
                        "name": "_scheduleRepayAmounts",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 75,
                        "src": "4600:21:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                          "typeString": "uint256[] storage ref"
                        }
                      },
                      "id": 261,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "4600:28:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4596:32:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 289,
                  "initializationExpression": {
                    "assignments": [
                      256
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 256,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 289,
                        "src": "4581:9:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 255,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4581:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 258,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 257,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4593:1:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "4581:13:0"
                  },
                  "loopExpression": {
                    "expression": {
                      "id": 264,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "4630:3:0",
                      "subExpression": {
                        "id": 263,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 256,
                        "src": "4630:1:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 265,
                    "nodeType": "ExpressionStatement",
                    "src": "4630:3:0"
                  },
                  "nodeType": "ForStatement",
                  "src": "4576:470:0"
                }
              ]
            },
            "id": 291,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "invokeFinal",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 186,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3372:2:0"
            },
            "returnParameters": {
              "id": 187,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3384:0:0"
            },
            "scope": 1090,
            "src": "3352:1700:0",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 344,
              "nodeType": "Block",
              "src": "5093:956:0",
              "statements": [
                {
                  "assignments": [
                    295
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 295,
                      "mutability": "mutable",
                      "name": "modifiedPoolReward",
                      "nodeType": "VariableDeclaration",
                      "scope": 344,
                      "src": "5108:26:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 294,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5108:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 307,
                  "initialValue": {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 303,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "baseExpression": {
                          "id": 296,
                          "name": "_poolRewardAddresses",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 45,
                          "src": "5146:20:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                            "typeString": "mapping(address => address)"
                          }
                        },
                        "id": 298,
                        "indexExpression": {
                          "id": 297,
                          "name": "_scheduleTokenAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 65,
                          "src": "5167:21:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "5146:43:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 301,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5201:1:0",
                            "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": 300,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "5193:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 299,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "5193:7:0",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 302,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5193:10:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "src": "5146:57:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseExpression": {
                      "id": 305,
                      "name": "_schedulePoolReward",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 77,
                      "src": "5234:19:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 306,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "Conditional",
                    "src": "5146:107:0",
                    "trueExpression": {
                      "hexValue": "30",
                      "id": 304,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5218:1:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5108:145:0"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 310,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 308,
                      "name": "modifiedPoolReward",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 295,
                      "src": "5267:18:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 309,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5288:1:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "5267:22:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 323,
                  "nodeType": "IfStatement",
                  "src": "5263:322:0",
                  "trueBody": {
                    "id": 322,
                    "nodeType": "Block",
                    "src": "5291:294:0",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 313,
                                  "name": "_scheduleTokenAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 65,
                                  "src": "5360:21:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "baseExpression": {
                                    "id": 314,
                                    "name": "_poolRewardAddresses",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 45,
                                    "src": "5403:20:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                      "typeString": "mapping(address => address)"
                                    }
                                  },
                                  "id": 316,
                                  "indexExpression": {
                                    "id": 315,
                                    "name": "_scheduleTokenAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 65,
                                    "src": "5424:21:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "5403:43:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 317,
                                  "name": "modifiedPoolReward",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 295,
                                  "src": "5468:18:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 312,
                                "name": "transfer",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1433,
                                "src": "5330:8:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (address,address,uint256) returns (bool)"
                                }
                              },
                              "id": 318,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5330:174:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e766f6b65723a20706f6f6c20726577617264207472616e73666572206661696c6564",
                              "id": 319,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5522:38:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a14402ffc69be4e6b82325020f82601ff74332c147545eea7303d32c7c60db3b",
                                "typeString": "literal_string \"Invoker: pool reward transfer failed\""
                              },
                              "value": "Invoker: pool reward transfer failed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a14402ffc69be4e6b82325020f82601ff74332c147545eea7303d32c7c60db3b",
                                "typeString": "literal_string \"Invoker: pool reward transfer failed\""
                              }
                            ],
                            "id": 311,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5305:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 320,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5305:269:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 321,
                        "nodeType": "ExpressionStatement",
                        "src": "5305:269:0"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 326,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 324,
                      "name": "_schedulePlatformReward",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 79,
                      "src": "5598:23:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 325,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5624:1:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "5598:27:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 337,
                  "nodeType": "IfStatement",
                  "src": "5594:314:0",
                  "trueBody": {
                    "id": 336,
                    "nodeType": "Block",
                    "src": "5627:281:0",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 329,
                                  "name": "_scheduleTokenAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 65,
                                  "src": "5696:21:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 330,
                                  "name": "_platformVaultAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 49,
                                  "src": "5739:21:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 331,
                                  "name": "_schedulePlatformReward",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 79,
                                  "src": "5782:23:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 328,
                                "name": "transfer",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1433,
                                "src": "5666:8:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (address,address,uint256) returns (bool)"
                                }
                              },
                              "id": 332,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5666:157:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e766f6b65723a20706c6174666f726d20726577617264207472616e73666572206661696c6564",
                              "id": 333,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5841:42:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_b9e47d8deed26a3ed88d8bd46e8b5a5cb0f1b4a3d25b4fe1022a843e5150a565",
                                "typeString": "literal_string \"Invoker: platform reward transfer failed\""
                              },
                              "value": "Invoker: platform reward transfer failed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_b9e47d8deed26a3ed88d8bd46e8b5a5cb0f1b4a3d25b4fe1022a843e5150a565",
                                "typeString": "literal_string \"Invoker: platform reward transfer failed\""
                              }
                            ],
                            "id": 327,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5641:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 334,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5641:256:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 335,
                        "nodeType": "ExpressionStatement",
                        "src": "5641:256:0"
                      }
                    ]
                  }
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 339,
                        "name": "modifiedPoolReward",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 295,
                        "src": "5942:18:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 340,
                        "name": "_schedulePlatformReward",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 79,
                        "src": "5974:23:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 341,
                        "name": "_scheduleTokenAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 65,
                        "src": "6011:21:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 338,
                      "name": "Reward",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 34,
                      "src": "5922:6:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_address_$returns$__$",
                        "typeString": "function (uint256,uint256,address)"
                      }
                    },
                    "id": 342,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5922:120:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 343,
                  "nodeType": "EmitStatement",
                  "src": "5917:125:0"
                }
              ]
            },
            "id": 345,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "disburseReward",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 292,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5081:2:0"
            },
            "returnParameters": {
              "id": 293,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5093:0:0"
            },
            "scope": 1090,
            "src": "5058:991:0",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 537,
              "nodeType": "Block",
              "src": "6318:2129:0",
              "statements": [
                {
                  "expression": {
                    "id": 362,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 360,
                      "name": "_scheduleInvokeSender",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 55,
                      "src": "6328:21:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 361,
                      "name": "invokeSender",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 347,
                      "src": "6352:12:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "6328:36:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 363,
                  "nodeType": "ExpressionStatement",
                  "src": "6328:36:0"
                },
                {
                  "expression": {
                    "id": 366,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 364,
                      "name": "_scheduleInvokeTo",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 57,
                      "src": "6374:17:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 365,
                      "name": "invokeTo",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 349,
                      "src": "6394:8:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "6374:28:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 367,
                  "nodeType": "ExpressionStatement",
                  "src": "6374:28:0"
                },
                {
                  "expression": {
                    "id": 370,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 368,
                      "name": "_scheduleInvokeValue",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 59,
                      "src": "6412:20:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 369,
                      "name": "invokeValue",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 351,
                      "src": "6435:11:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6412:34:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 371,
                  "nodeType": "ExpressionStatement",
                  "src": "6412:34:0"
                },
                {
                  "expression": {
                    "id": 374,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 372,
                      "name": "_scheduleInvokeData",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 61,
                      "src": "6456:19:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage",
                        "typeString": "bytes storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 373,
                      "name": "invokeData",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 353,
                      "src": "6478:10:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "src": "6456:32:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage",
                      "typeString": "bytes storage ref"
                    }
                  },
                  "id": 375,
                  "nodeType": "ExpressionStatement",
                  "src": "6456:32:0"
                },
                {
                  "expression": {
                    "id": 378,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 376,
                      "name": "_scheduleTokenAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 65,
                      "src": "6498:21:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 377,
                      "name": "tokenAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 355,
                      "src": "6522:12:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "6498:36:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 379,
                  "nodeType": "ExpressionStatement",
                  "src": "6498:36:0"
                },
                {
                  "expression": {
                    "id": 382,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 380,
                      "name": "_scheduleTokenAmount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 67,
                      "src": "6544:20:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 381,
                      "name": "tokenAmount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 357,
                      "src": "6567:11:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6544:34:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 383,
                  "nodeType": "ExpressionStatement",
                  "src": "6544:34:0"
                },
                {
                  "expression": {
                    "id": 392,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 384,
                      "name": "_schedulePriorTokenAmount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 53,
                      "src": "6588:25:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 389,
                            "name": "payableReserveAdjustment",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 912,
                            "src": "6657:24:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                              "typeString": "function () view returns (uint256)"
                            }
                          },
                          "id": 390,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6657:26:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "arguments": [
                            {
                              "id": 386,
                              "name": "tokenAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 355,
                              "src": "6626:12:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 385,
                            "name": "balanceOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1463,
                            "src": "6616:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view returns (uint256)"
                            }
                          },
                          "id": 387,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6616:23:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 388,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5434,
                        "src": "6616:27:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 391,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6616:77:0",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6588:105:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 393,
                  "nodeType": "ExpressionStatement",
                  "src": "6588:105:0"
                },
                {
                  "assignments": [
                    395
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 395,
                      "mutability": "mutable",
                      "name": "tokenAmountLeft",
                      "nodeType": "VariableDeclaration",
                      "scope": 537,
                      "src": "6704:23:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 394,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6704:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 397,
                  "initialValue": {
                    "id": 396,
                    "name": "tokenAmount",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 357,
                    "src": "6730:11:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6704:37:0"
                },
                {
                  "body": {
                    "id": 502,
                    "nodeType": "Block",
                    "src": "6808:1245:0",
                    "statements": [
                      {
                        "assignments": [
                          410
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 410,
                            "mutability": "mutable",
                            "name": "proxy",
                            "nodeType": "VariableDeclaration",
                            "scope": 502,
                            "src": "6822:21:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ILiquidityProxy_$2148",
                              "typeString": "contract ILiquidityProxy"
                            },
                            "typeName": {
                              "id": 409,
                              "name": "ILiquidityProxy",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 2148,
                              "src": "6822:15:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILiquidityProxy_$2148",
                                "typeString": "contract ILiquidityProxy"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 416,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 413,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 399,
                                  "src": "6877:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 412,
                                "name": "liquidityProxy",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 974,
                                "src": "6862:14:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                                  "typeString": "function (uint256) view returns (address)"
                                }
                              },
                              "id": 414,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6862:17:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 411,
                            "name": "ILiquidityProxy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2148,
                            "src": "6846:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_ILiquidityProxy_$2148_$",
                              "typeString": "type(contract ILiquidityProxy)"
                            }
                          },
                          "id": 415,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6846:34:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILiquidityProxy_$2148",
                            "typeString": "contract ILiquidityProxy"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6822:58:0"
                      },
                      {
                        "assignments": [
                          418
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 418,
                            "mutability": "mutable",
                            "name": "totalReserve",
                            "nodeType": "VariableDeclaration",
                            "scope": 502,
                            "src": "6894:20:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 417,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6894:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 423,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 421,
                              "name": "tokenAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 355,
                              "src": "6939:12:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "id": 419,
                              "name": "proxy",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 410,
                              "src": "6917:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILiquidityProxy_$2148",
                                "typeString": "contract ILiquidityProxy"
                              }
                            },
                            "id": 420,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getTotalReserve",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2124,
                            "src": "6917:21:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 422,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6917:35:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6894:58:0"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 426,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 424,
                            "name": "totalReserve",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 418,
                            "src": "6970:12:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 425,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6986:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "6970:17:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 429,
                        "nodeType": "IfStatement",
                        "src": "6966:64:0",
                        "trueBody": {
                          "id": 428,
                          "nodeType": "Block",
                          "src": "6989:41:0",
                          "statements": [
                            {
                              "id": 427,
                              "nodeType": "Continue",
                              "src": "7007:8:0"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 432,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 430,
                            "name": "tokenAmountLeft",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 395,
                            "src": "7047:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "id": 431,
                            "name": "totalReserve",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 418,
                            "src": "7066:12:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7047:31:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 500,
                          "nodeType": "Block",
                          "src": "7563:480:0",
                          "statements": [
                            {
                              "assignments": [
                                467
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 467,
                                  "mutability": "mutable",
                                  "name": "proxyRepayAmount",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 500,
                                  "src": "7581:24:0",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 466,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7581:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 473,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "id": 470,
                                    "name": "tokenAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 355,
                                    "src": "7654:12:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 471,
                                    "name": "totalReserve",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 418,
                                    "src": "7688:12:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 468,
                                    "name": "proxy",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 410,
                                    "src": "7608:5:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ILiquidityProxy_$2148",
                                      "typeString": "contract ILiquidityProxy"
                                    }
                                  },
                                  "id": 469,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "getRepaymentAmount",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2140,
                                  "src": "7608:24:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (address,uint256) view external returns (uint256)"
                                  }
                                },
                                "id": 472,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7608:110:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "7581:137:0"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 477,
                                    "name": "totalReserve",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 418,
                                    "src": "7763:12:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 474,
                                    "name": "_scheduleTokenAmounts",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 70,
                                    "src": "7736:21:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                      "typeString": "uint256[] storage ref"
                                    }
                                  },
                                  "id": 476,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "push",
                                  "nodeType": "MemberAccess",
                                  "src": "7736:26:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_arraypush_nonpayable$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256)"
                                  }
                                },
                                "id": 478,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7736:40:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 479,
                              "nodeType": "ExpressionStatement",
                              "src": "7736:40:0"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 483,
                                    "name": "proxyRepayAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 467,
                                    "src": "7821:16:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 480,
                                    "name": "_scheduleRepayAmounts",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 75,
                                    "src": "7794:21:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                      "typeString": "uint256[] storage ref"
                                    }
                                  },
                                  "id": 482,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "push",
                                  "nodeType": "MemberAccess",
                                  "src": "7794:26:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_arraypush_nonpayable$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256)"
                                  }
                                },
                                "id": 484,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7794:44:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 485,
                              "nodeType": "ExpressionStatement",
                              "src": "7794:44:0"
                            },
                            {
                              "expression": {
                                "id": 491,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 486,
                                  "name": "_scheduleRepayAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 72,
                                  "src": "7856:20:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 489,
                                      "name": "proxyRepayAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 467,
                                      "src": "7925:16:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "id": 487,
                                      "name": "_scheduleRepayAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 72,
                                      "src": "7879:20:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 488,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 5417,
                                    "src": "7879:24:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 490,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7879:80:0",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7856:103:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 492,
                              "nodeType": "ExpressionStatement",
                              "src": "7856:103:0"
                            },
                            {
                              "expression": {
                                "id": 498,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 493,
                                  "name": "tokenAmountLeft",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 395,
                                  "src": "7977:15:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 496,
                                      "name": "totalReserve",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 418,
                                      "src": "8015:12:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "id": 494,
                                      "name": "tokenAmountLeft",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 395,
                                      "src": "7995:15:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 495,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sub",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 5434,
                                    "src": "7995:19:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 497,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7995:33:0",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7977:51:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 499,
                              "nodeType": "ExpressionStatement",
                              "src": "7977:51:0"
                            }
                          ]
                        },
                        "id": 501,
                        "nodeType": "IfStatement",
                        "src": "7043:1000:0",
                        "trueBody": {
                          "id": 465,
                          "nodeType": "Block",
                          "src": "7080:477:0",
                          "statements": [
                            {
                              "assignments": [
                                434
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 434,
                                  "mutability": "mutable",
                                  "name": "proxyRepayAmount",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 465,
                                  "src": "7098:24:0",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 433,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7098:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 440,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "id": 437,
                                    "name": "tokenAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 355,
                                    "src": "7171:12:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 438,
                                    "name": "tokenAmountLeft",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 395,
                                    "src": "7205:15:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 435,
                                    "name": "proxy",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 410,
                                    "src": "7125:5:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ILiquidityProxy_$2148",
                                      "typeString": "contract ILiquidityProxy"
                                    }
                                  },
                                  "id": 436,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "getRepaymentAmount",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2140,
                                  "src": "7125:24:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (address,uint256) view external returns (uint256)"
                                  }
                                },
                                "id": 439,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7125:113:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "7098:140:0"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 444,
                                    "name": "tokenAmountLeft",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 395,
                                    "src": "7283:15:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 441,
                                    "name": "_scheduleTokenAmounts",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 70,
                                    "src": "7256:21:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                      "typeString": "uint256[] storage ref"
                                    }
                                  },
                                  "id": 443,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "push",
                                  "nodeType": "MemberAccess",
                                  "src": "7256:26:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_arraypush_nonpayable$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256)"
                                  }
                                },
                                "id": 445,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7256:43:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 446,
                              "nodeType": "ExpressionStatement",
                              "src": "7256:43:0"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 450,
                                    "name": "proxyRepayAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 434,
                                    "src": "7344:16:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 447,
                                    "name": "_scheduleRepayAmounts",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 75,
                                    "src": "7317:21:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                      "typeString": "uint256[] storage ref"
                                    }
                                  },
                                  "id": 449,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "push",
                                  "nodeType": "MemberAccess",
                                  "src": "7317:26:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_arraypush_nonpayable$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256)"
                                  }
                                },
                                "id": 451,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7317:44:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 452,
                              "nodeType": "ExpressionStatement",
                              "src": "7317:44:0"
                            },
                            {
                              "expression": {
                                "id": 458,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 453,
                                  "name": "_scheduleRepayAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 72,
                                  "src": "7379:20:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 456,
                                      "name": "proxyRepayAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 434,
                                      "src": "7448:16:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "id": 454,
                                      "name": "_scheduleRepayAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 72,
                                      "src": "7402:20:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 455,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 5417,
                                    "src": "7402:24:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 457,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7402:80:0",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7379:103:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 459,
                              "nodeType": "ExpressionStatement",
                              "src": "7379:103:0"
                            },
                            {
                              "expression": {
                                "id": 462,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 460,
                                  "name": "tokenAmountLeft",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 395,
                                  "src": "7500:15:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "hexValue": "30",
                                  "id": 461,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7518:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "7500:19:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 463,
                              "nodeType": "ExpressionStatement",
                              "src": "7500:19:0"
                            },
                            {
                              "id": 464,
                              "nodeType": "Break",
                              "src": "7537:5:0"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 405,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 402,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 399,
                      "src": "6771:1:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 403,
                        "name": "liquidityProxiesForToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 985,
                        "src": "6775:24:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                          "typeString": "function () view returns (uint256)"
                        }
                      },
                      "id": 404,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6775:26:0",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6771:30:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 503,
                  "initializationExpression": {
                    "assignments": [
                      399
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 399,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 503,
                        "src": "6756:9:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 398,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6756:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 401,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 400,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6768:1:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "6756:13:0"
                  },
                  "loopExpression": {
                    "expression": {
                      "id": 407,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "6803:3:0",
                      "subExpression": {
                        "id": 406,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 399,
                        "src": "6803:1:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 408,
                    "nodeType": "ExpressionStatement",
                    "src": "6803:3:0"
                  },
                  "nodeType": "ForStatement",
                  "src": "6751:1302:0"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 507,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 505,
                          "name": "tokenAmountLeft",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 395,
                          "src": "8070:15:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "hexValue": "30",
                          "id": 506,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "8089:1:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "8070:20:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "496e766f6b65723a206e6f7420656e6f756768206c6971756964697479",
                        "id": 508,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8092:31:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b783feb36669a3442e41b851f482f2c03ebc4f566a0f6a9ba0340aacace6bd1b",
                          "typeString": "literal_string \"Invoker: not enough liquidity\""
                        },
                        "value": "Invoker: not enough liquidity"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_b783feb36669a3442e41b851f482f2c03ebc4f566a0f6a9ba0340aacace6bd1b",
                          "typeString": "literal_string \"Invoker: not enough liquidity\""
                        }
                      ],
                      "id": 504,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "8062:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 509,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8062:62:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 510,
                  "nodeType": "ExpressionStatement",
                  "src": "8062:62:0"
                },
                {
                  "expression": {
                    "id": 515,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 511,
                      "name": "_schedulePoolReward",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 77,
                      "src": "8135:19:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 513,
                          "name": "_scheduleTokenAmount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 67,
                          "src": "8177:20:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 512,
                        "name": "calculatePoolReward",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 780,
                        "src": "8157:19:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                          "typeString": "function (uint256) view returns (uint256)"
                        }
                      },
                      "id": 514,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8157:41:0",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8135:63:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 516,
                  "nodeType": "ExpressionStatement",
                  "src": "8135:63:0"
                },
                {
                  "expression": {
                    "id": 521,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 517,
                      "name": "_schedulePlatformReward",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 79,
                      "src": "8208:23:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 519,
                          "name": "_scheduleTokenAmount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 67,
                          "src": "8258:20:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 518,
                        "name": "calculatePlatformReward",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 796,
                        "src": "8234:23:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                          "typeString": "function (uint256) view returns (uint256)"
                        }
                      },
                      "id": 520,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8234:45:0",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8208:71:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 522,
                  "nodeType": "ExpressionStatement",
                  "src": "8208:71:0"
                },
                {
                  "expression": {
                    "id": 531,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 523,
                      "name": "_scheduleRepayAmount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 72,
                      "src": "8289:20:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 529,
                          "name": "_schedulePlatformReward",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 79,
                          "src": "8388:23:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "arguments": [
                            {
                              "id": 526,
                              "name": "_schedulePoolReward",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 77,
                              "src": "8350:19:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 524,
                              "name": "_scheduleRepayAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 72,
                              "src": "8312:20:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 525,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5417,
                            "src": "8312:37:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 527,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8312:58:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 528,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5417,
                        "src": "8312:75:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 530,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8312:100:0",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8289:123:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 532,
                  "nodeType": "ExpressionStatement",
                  "src": "8289:123:0"
                },
                {
                  "expression": {
                    "id": 535,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 533,
                      "name": "_scheduled",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 51,
                      "src": "8423:10:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "hexValue": "74727565",
                      "id": 534,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "8436:4:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "8423:17:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 536,
                  "nodeType": "ExpressionStatement",
                  "src": "8423:17:0"
                }
              ]
            },
            "id": 538,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "scheduleExecution",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 358,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 347,
                  "mutability": "mutable",
                  "name": "invokeSender",
                  "nodeType": "VariableDeclaration",
                  "scope": 538,
                  "src": "6135:20:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 346,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6135:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 349,
                  "mutability": "mutable",
                  "name": "invokeTo",
                  "nodeType": "VariableDeclaration",
                  "scope": 538,
                  "src": "6165:16:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 348,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6165:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 351,
                  "mutability": "mutable",
                  "name": "invokeValue",
                  "nodeType": "VariableDeclaration",
                  "scope": 538,
                  "src": "6191:19:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 350,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6191:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 353,
                  "mutability": "mutable",
                  "name": "invokeData",
                  "nodeType": "VariableDeclaration",
                  "scope": 538,
                  "src": "6220:23:0",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 352,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "6220:5:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 355,
                  "mutability": "mutable",
                  "name": "tokenAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 538,
                  "src": "6253:20:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 354,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6253:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 357,
                  "mutability": "mutable",
                  "name": "tokenAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 538,
                  "src": "6283:19:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 356,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6283:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6125:183:0"
            },
            "returnParameters": {
              "id": 359,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6318:0:0"
            },
            "scope": 1090,
            "src": "6099:2348:0",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 603,
              "nodeType": "Block",
              "src": "8487:514:0",
              "statements": [
                {
                  "expression": {
                    "id": 543,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 541,
                      "name": "_scheduled",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 51,
                      "src": "8497:10:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "hexValue": "66616c7365",
                      "id": 542,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "8510:5:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "false"
                    },
                    "src": "8497:18:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 544,
                  "nodeType": "ExpressionStatement",
                  "src": "8497:18:0"
                },
                {
                  "expression": {
                    "id": 547,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 545,
                      "name": "_schedulePriorTokenAmount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 53,
                      "src": "8525:25:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "hexValue": "30",
                      "id": 546,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "8553:1:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "8525:29:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 548,
                  "nodeType": "ExpressionStatement",
                  "src": "8525:29:0"
                },
                {
                  "expression": {
                    "id": 554,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 549,
                      "name": "_scheduleInvokeSender",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 55,
                      "src": "8564:21:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "hexValue": "30",
                          "id": 552,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "8596:1:0",
                          "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": 551,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "8588:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": {
                          "id": 550,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8588:7:0",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 553,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8588:10:0",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "8564:34:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 555,
                  "nodeType": "ExpressionStatement",
                  "src": "8564:34:0"
                },
                {
                  "expression": {
                    "id": 561,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 556,
                      "name": "_scheduleInvokeTo",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 57,
                      "src": "8608:17:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "hexValue": "30",
                          "id": 559,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "8636:1:0",
                          "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": 558,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "8628:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": {
                          "id": 557,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8628:7:0",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 560,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8628:10:0",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "8608:30:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 562,
                  "nodeType": "ExpressionStatement",
                  "src": "8608:30:0"
                },
                {
                  "expression": {
                    "id": 565,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 563,
                      "name": "_scheduleInvokeValue",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 59,
                      "src": "8648:20:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "hexValue": "30",
                      "id": 564,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "8671:1:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "8648:24:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 566,
                  "nodeType": "ExpressionStatement",
                  "src": "8648:24:0"
                },
                {
                  "expression": {
                    "id": 568,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "8682:26:0",
                    "subExpression": {
                      "id": 567,
                      "name": "_scheduleInvokeData",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 61,
                      "src": "8689:19:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage",
                        "typeString": "bytes storage ref"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 569,
                  "nodeType": "ExpressionStatement",
                  "src": "8682:26:0"
                },
                {
                  "expression": {
                    "id": 572,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 570,
                      "name": "_scheduleIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 63,
                      "src": "8718:14:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "hexValue": "30",
                      "id": 571,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "8735:1:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "8718:18:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 573,
                  "nodeType": "ExpressionStatement",
                  "src": "8718:18:0"
                },
                {
                  "expression": {
                    "id": 579,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 574,
                      "name": "_scheduleTokenAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 65,
                      "src": "8746:21:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "hexValue": "30",
                          "id": 577,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "8778:1:0",
                          "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": 576,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "8770:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": {
                          "id": 575,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8770:7:0",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 578,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8770:10:0",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "8746:34:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 580,
                  "nodeType": "ExpressionStatement",
                  "src": "8746:34:0"
                },
                {
                  "expression": {
                    "id": 583,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 581,
                      "name": "_scheduleTokenAmount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 67,
                      "src": "8790:20:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "hexValue": "30",
                      "id": 582,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "8813:1:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "8790:24:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 584,
                  "nodeType": "ExpressionStatement",
                  "src": "8790:24:0"
                },
                {
                  "expression": {
                    "id": 586,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "8824:28:0",
                    "subExpression": {
                      "id": 585,
                      "name": "_scheduleTokenAmounts",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 70,
                      "src": "8831:21:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                        "typeString": "uint256[] storage ref"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 587,
                  "nodeType": "ExpressionStatement",
                  "src": "8824:28:0"
                },
                {
                  "expression": {
                    "id": 590,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 588,
                      "name": "_scheduleRepayAmount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 72,
                      "src": "8862:20:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "hexValue": "30",
                      "id": 589,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "8885:1:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "8862:24:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 591,
                  "nodeType": "ExpressionStatement",
                  "src": "8862:24:0"
                },
                {
                  "expression": {
                    "id": 593,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "8896:28:0",
                    "subExpression": {
                      "id": 592,
                      "name": "_scheduleRepayAmounts",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 75,
                      "src": "8903:21:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                        "typeString": "uint256[] storage ref"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 594,
                  "nodeType": "ExpressionStatement",
                  "src": "8896:28:0"
                },
                {
                  "expression": {
                    "id": 597,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 595,
                      "name": "_schedulePoolReward",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 77,
                      "src": "8934:19:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "hexValue": "30",
                      "id": 596,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "8956:1:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "8934:23:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 598,
                  "nodeType": "ExpressionStatement",
                  "src": "8934:23:0"
                },
                {
                  "expression": {
                    "id": 601,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 599,
                      "name": "_schedulePlatformReward",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 79,
                      "src": "8967:23:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "hexValue": "30",
                      "id": 600,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "8993:1:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "8967:27:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 602,
                  "nodeType": "ExpressionStatement",
                  "src": "8967:27:0"
                }
              ]
            },
            "id": 604,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "cleanSchedule",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 539,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8475:2:0"
            },
            "returnParameters": {
              "id": 540,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8487:0:0"
            },
            "scope": 1090,
            "src": "8453:548:0",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "baseFunctions": [
              1154
            ],
            "body": {
              "id": 612,
              "nodeType": "Block",
              "src": "9114:45:0",
              "statements": [
                {
                  "expression": {
                    "id": 610,
                    "name": "_scheduleInvokeSender",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 55,
                    "src": "9131:21:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 609,
                  "id": 611,
                  "nodeType": "Return",
                  "src": "9124:28:0"
                }
              ]
            },
            "functionSelector": "70348f3e",
            "id": 613,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "currentSender",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 606,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "9087:8:0"
            },
            "parameters": {
              "id": 605,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9070:2:0"
            },
            "returnParameters": {
              "id": 609,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 608,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 613,
                  "src": "9105:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 607,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9105:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9104:9:0"
            },
            "scope": 1090,
            "src": "9048:111:0",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              1159
            ],
            "body": {
              "id": 621,
              "nodeType": "Block",
              "src": "9237:45:0",
              "statements": [
                {
                  "expression": {
                    "id": 619,
                    "name": "_scheduleTokenAddress",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 65,
                    "src": "9254:21:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 618,
                  "id": 620,
                  "nodeType": "Return",
                  "src": "9247:28:0"
                }
              ]
            },
            "functionSelector": "11eefd5d",
            "id": 622,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "currentTokenAddress",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 615,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "9210:8:0"
            },
            "parameters": {
              "id": 614,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9193:2:0"
            },
            "returnParameters": {
              "id": 618,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 617,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 622,
                  "src": "9228:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 616,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9228:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9227:9:0"
            },
            "scope": 1090,
            "src": "9165:117:0",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              1164
            ],
            "body": {
              "id": 630,
              "nodeType": "Block",
              "src": "9359:44:0",
              "statements": [
                {
                  "expression": {
                    "id": 628,
                    "name": "_scheduleTokenAmount",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 67,
                    "src": "9376:20:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 627,
                  "id": 629,
                  "nodeType": "Return",
                  "src": "9369:27:0"
                }
              ]
            },
            "functionSelector": "ff69ac36",
            "id": 631,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "currentTokenAmount",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 624,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "9332:8:0"
            },
            "parameters": {
              "id": 623,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9315:2:0"
            },
            "returnParameters": {
              "id": 627,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 626,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 631,
                  "src": "9350:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 625,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9350:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9349:9:0"
            },
            "scope": 1090,
            "src": "9288:115:0",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              1169
            ],
            "body": {
              "id": 639,
              "nodeType": "Block",
              "src": "9484:44:0",
              "statements": [
                {
                  "expression": {
                    "id": 637,
                    "name": "_scheduleRepayAmount",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 72,
                    "src": "9501:20:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 636,
                  "id": 638,
                  "nodeType": "Return",
                  "src": "9494:27:0"
                }
              ]
            },
            "functionSelector": "6f27e9d8",
            "id": 640,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "currentRepaymentAmount",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 633,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "9457:8:0"
            },
            "parameters": {
              "id": 632,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9440:2:0"
            },
            "returnParameters": {
              "id": 636,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 635,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 640,
                  "src": "9475:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 634,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9475:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9474:9:0"
            },
            "scope": 1090,
            "src": "9409:119:0",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 763,
              "nodeType": "Block",
              "src": "9670:1400:0",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 651,
                            "name": "tokenAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 642,
                            "src": "9726:12:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 650,
                          "name": "isTokenAddressRegistered",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 960,
                          "src": "9701:24:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                            "typeString": "function (address) view returns (bool)"
                          }
                        },
                        "id": 652,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9701:38:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "496e766f6b65723a206e6f206c697175696469747920666f7220746f6b656e",
                        "id": 653,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9753:33:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_3baebd1e484b5704c0e6ab1bee585c31e762e1cb1c76bc62bb5ea845c3f0b548",
                          "typeString": "literal_string \"Invoker: no liquidity for token\""
                        },
                        "value": "Invoker: no liquidity for token"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_3baebd1e484b5704c0e6ab1bee585c31e762e1cb1c76bc62bb5ea845c3f0b548",
                          "typeString": "literal_string \"Invoker: no liquidity for token\""
                        }
                      ],
                      "id": 649,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "9680:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 654,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9680:116:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 655,
                  "nodeType": "ExpressionStatement",
                  "src": "9680:116:0"
                },
                {
                  "assignments": [
                    657
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 657,
                      "mutability": "mutable",
                      "name": "repaymentAmount",
                      "nodeType": "VariableDeclaration",
                      "scope": 763,
                      "src": "9807:23:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 656,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "9807:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 659,
                  "initialValue": {
                    "hexValue": "30",
                    "id": 658,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "9833:1:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9807:27:0"
                },
                {
                  "assignments": [
                    661
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 661,
                      "mutability": "mutable",
                      "name": "tokenAmountLeft",
                      "nodeType": "VariableDeclaration",
                      "scope": 763,
                      "src": "9844:23:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 660,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "9844:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 663,
                  "initialValue": {
                    "id": 662,
                    "name": "tokenAmount",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 644,
                    "src": "9870:11:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9844:37:0"
                },
                {
                  "body": {
                    "id": 742,
                    "nodeType": "Block",
                    "src": "9961:876:0",
                    "statements": [
                      {
                        "assignments": [
                          678
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 678,
                            "mutability": "mutable",
                            "name": "proxy",
                            "nodeType": "VariableDeclaration",
                            "scope": 742,
                            "src": "9975:21:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ILiquidityProxy_$2148",
                              "typeString": "contract ILiquidityProxy"
                            },
                            "typeName": {
                              "id": 677,
                              "name": "ILiquidityProxy",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 2148,
                              "src": "9975:15:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILiquidityProxy_$2148",
                                "typeString": "contract ILiquidityProxy"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 686,
                        "initialValue": {
                          "arguments": [
                            {
                              "baseExpression": {
                                "baseExpression": {
                                  "id": 680,
                                  "name": "_liquidityProxies",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 39,
                                  "src": "10032:17:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                                    "typeString": "mapping(address => address[] storage ref)"
                                  }
                                },
                                "id": 682,
                                "indexExpression": {
                                  "id": 681,
                                  "name": "tokenAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 642,
                                  "src": "10050:12:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "10032:31:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                  "typeString": "address[] storage ref"
                                }
                              },
                              "id": 684,
                              "indexExpression": {
                                "id": 683,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 665,
                                "src": "10064:1:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "10032:34:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 679,
                            "name": "ILiquidityProxy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2148,
                            "src": "9999:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_ILiquidityProxy_$2148_$",
                              "typeString": "type(contract ILiquidityProxy)"
                            }
                          },
                          "id": 685,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9999:81:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILiquidityProxy_$2148",
                            "typeString": "contract ILiquidityProxy"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9975:105:0"
                      },
                      {
                        "assignments": [
                          688
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 688,
                            "mutability": "mutable",
                            "name": "totalReserve",
                            "nodeType": "VariableDeclaration",
                            "scope": 742,
                            "src": "10094:20:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 687,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "10094:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 693,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 691,
                              "name": "tokenAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 642,
                              "src": "10139:12:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "id": 689,
                              "name": "proxy",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 678,
                              "src": "10117:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILiquidityProxy_$2148",
                                "typeString": "contract ILiquidityProxy"
                              }
                            },
                            "id": 690,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getTotalReserve",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2124,
                            "src": "10117:21:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 692,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10117:35:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10094:58:0"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 696,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 694,
                            "name": "tokenAmountLeft",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 661,
                            "src": "10170:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "id": 695,
                            "name": "totalReserve",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 688,
                            "src": "10189:12:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10170:31:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 740,
                          "nodeType": "Block",
                          "src": "10515:312:0",
                          "statements": [
                            {
                              "assignments": [
                                719
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 719,
                                  "mutability": "mutable",
                                  "name": "proxyRepayAmount",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 740,
                                  "src": "10533:24:0",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 718,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10533:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 725,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "id": 722,
                                    "name": "tokenAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 642,
                                    "src": "10606:12:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 723,
                                    "name": "totalReserve",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 688,
                                    "src": "10640:12:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 720,
                                    "name": "proxy",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 678,
                                    "src": "10560:5:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ILiquidityProxy_$2148",
                                      "typeString": "contract ILiquidityProxy"
                                    }
                                  },
                                  "id": 721,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "getRepaymentAmount",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2140,
                                  "src": "10560:24:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (address,uint256) view external returns (uint256)"
                                  }
                                },
                                "id": 724,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10560:110:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "10533:137:0"
                            },
                            {
                              "expression": {
                                "id": 731,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 726,
                                  "name": "repaymentAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 657,
                                  "src": "10688:15:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 729,
                                      "name": "proxyRepayAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 719,
                                      "src": "10726:16:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "id": 727,
                                      "name": "repaymentAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 657,
                                      "src": "10706:15:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 728,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 5417,
                                    "src": "10706:19:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 730,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "10706:37:0",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10688:55:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 732,
                              "nodeType": "ExpressionStatement",
                              "src": "10688:55:0"
                            },
                            {
                              "expression": {
                                "id": 738,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 733,
                                  "name": "tokenAmountLeft",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 661,
                                  "src": "10761:15:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 736,
                                      "name": "totalReserve",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 688,
                                      "src": "10799:12:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "id": 734,
                                      "name": "tokenAmountLeft",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 661,
                                      "src": "10779:15:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 735,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sub",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 5434,
                                    "src": "10779:19:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 737,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "10779:33:0",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10761:51:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 739,
                              "nodeType": "ExpressionStatement",
                              "src": "10761:51:0"
                            }
                          ]
                        },
                        "id": 741,
                        "nodeType": "IfStatement",
                        "src": "10166:661:0",
                        "trueBody": {
                          "id": 717,
                          "nodeType": "Block",
                          "src": "10203:306:0",
                          "statements": [
                            {
                              "assignments": [
                                698
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 698,
                                  "mutability": "mutable",
                                  "name": "proxyRepayAmount",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 717,
                                  "src": "10221:24:0",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 697,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10221:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 704,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "id": 701,
                                    "name": "tokenAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 642,
                                    "src": "10294:12:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 702,
                                    "name": "tokenAmountLeft",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 661,
                                    "src": "10328:15:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 699,
                                    "name": "proxy",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 678,
                                    "src": "10248:5:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ILiquidityProxy_$2148",
                                      "typeString": "contract ILiquidityProxy"
                                    }
                                  },
                                  "id": 700,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "getRepaymentAmount",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2140,
                                  "src": "10248:24:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (address,uint256) view external returns (uint256)"
                                  }
                                },
                                "id": 703,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10248:113:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "10221:140:0"
                            },
                            {
                              "expression": {
                                "id": 710,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 705,
                                  "name": "repaymentAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 657,
                                  "src": "10379:15:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 708,
                                      "name": "proxyRepayAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 698,
                                      "src": "10417:16:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "id": 706,
                                      "name": "repaymentAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 657,
                                      "src": "10397:15:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 707,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 5417,
                                    "src": "10397:19:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 709,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "10397:37:0",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10379:55:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 711,
                              "nodeType": "ExpressionStatement",
                              "src": "10379:55:0"
                            },
                            {
                              "expression": {
                                "id": 714,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 712,
                                  "name": "tokenAmountLeft",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 661,
                                  "src": "10452:15:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "hexValue": "30",
                                  "id": 713,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10470:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "10452:19:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 715,
                              "nodeType": "ExpressionStatement",
                              "src": "10452:19:0"
                            },
                            {
                              "id": 716,
                              "nodeType": "Break",
                              "src": "10489:5:0"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 673,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 668,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 665,
                      "src": "9912:1:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "baseExpression": {
                          "id": 669,
                          "name": "_liquidityProxies",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 39,
                          "src": "9916:17:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                            "typeString": "mapping(address => address[] storage ref)"
                          }
                        },
                        "id": 671,
                        "indexExpression": {
                          "id": 670,
                          "name": "tokenAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 642,
                          "src": "9934:12:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "9916:31:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage",
                          "typeString": "address[] storage ref"
                        }
                      },
                      "id": 672,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "9916:38:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9912:42:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 743,
                  "initializationExpression": {
                    "assignments": [
                      665
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 665,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 743,
                        "src": "9897:9:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 664,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9897:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 667,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 666,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "9909:1:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "9897:13:0"
                  },
                  "loopExpression": {
                    "expression": {
                      "id": 675,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "9956:3:0",
                      "subExpression": {
                        "id": 674,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 665,
                        "src": "9956:1:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 676,
                    "nodeType": "ExpressionStatement",
                    "src": "9956:3:0"
                  },
                  "nodeType": "ForStatement",
                  "src": "9892:945:0"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 747,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 745,
                          "name": "tokenAmountLeft",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 661,
                          "src": "10854:15:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "hexValue": "30",
                          "id": 746,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10873:1:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "10854:20:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "496e766f6b65723a206e6f7420656e6f756768206c6971756964697479",
                        "id": 748,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10876:31:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b783feb36669a3442e41b851f482f2c03ebc4f566a0f6a9ba0340aacace6bd1b",
                          "typeString": "literal_string \"Invoker: not enough liquidity\""
                        },
                        "value": "Invoker: not enough liquidity"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_b783feb36669a3442e41b851f482f2c03ebc4f566a0f6a9ba0340aacace6bd1b",
                          "typeString": "literal_string \"Invoker: not enough liquidity\""
                        }
                      ],
                      "id": 744,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "10846:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 749,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10846:62:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 750,
                  "nodeType": "ExpressionStatement",
                  "src": "10846:62:0"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 759,
                            "name": "tokenAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 644,
                            "src": "11037:11:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 758,
                          "name": "calculatePlatformReward",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 796,
                          "src": "11013:23:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256) view returns (uint256)"
                          }
                        },
                        "id": 760,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11013:36:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "id": 754,
                                "name": "tokenAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 644,
                                "src": "10978:11:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 753,
                              "name": "calculatePoolReward",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 780,
                              "src": "10958:19:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256) view returns (uint256)"
                              }
                            },
                            "id": 755,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10958:32:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 751,
                            "name": "repaymentAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 657,
                            "src": "10938:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 752,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "add",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5417,
                          "src": "10938:19:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 756,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10938:53:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 757,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "add",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5417,
                      "src": "10938:57:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 761,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10938:125:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 648,
                  "id": 762,
                  "nodeType": "Return",
                  "src": "10919:144:0"
                }
              ]
            },
            "functionSelector": "5f4130dd",
            "id": 764,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "estimateRepaymentAmount",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 645,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 642,
                  "mutability": "mutable",
                  "name": "tokenAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 764,
                  "src": "9567:20:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 641,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9567:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 644,
                  "mutability": "mutable",
                  "name": "tokenAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 764,
                  "src": "9589:19:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 643,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9589:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9566:43:0"
            },
            "returnParameters": {
              "id": 648,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 647,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 764,
                  "src": "9657:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 646,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9657:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9656:9:0"
            },
            "scope": 1090,
            "src": "9534:1536:0",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 779,
              "nodeType": "Block",
              "src": "11217:67:0",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "hexValue": "3130303030",
                        "id": 776,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "11271:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_10000_by_1",
                          "typeString": "int_const 10000"
                        },
                        "value": "10000"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_10000_by_1",
                          "typeString": "int_const 10000"
                        }
                      ],
                      "expression": {
                        "arguments": [
                          {
                            "id": 773,
                            "name": "_poolRewardBips",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 41,
                            "src": "11250:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 771,
                            "name": "tokenAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 766,
                            "src": "11234:11:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 772,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "mul",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5497,
                          "src": "11234:15:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 774,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11234:32:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 775,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "div",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5514,
                      "src": "11234:36:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 777,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11234:43:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 770,
                  "id": 778,
                  "nodeType": "Return",
                  "src": "11227:50:0"
                }
              ]
            },
            "id": 780,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "calculatePoolReward",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 767,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 766,
                  "mutability": "mutable",
                  "name": "tokenAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 780,
                  "src": "11136:19:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 765,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11136:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11135:21:0"
            },
            "returnParameters": {
              "id": 770,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 769,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 780,
                  "src": "11204:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 768,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11204:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11203:9:0"
            },
            "scope": 1090,
            "src": "11107:177:0",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 795,
              "nodeType": "Block",
              "src": "11404:71:0",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "hexValue": "3130303030",
                        "id": 792,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "11462:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_10000_by_1",
                          "typeString": "int_const 10000"
                        },
                        "value": "10000"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_10000_by_1",
                          "typeString": "int_const 10000"
                        }
                      ],
                      "expression": {
                        "arguments": [
                          {
                            "id": 789,
                            "name": "_platformRewardBips",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 47,
                            "src": "11437:19:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 787,
                            "name": "tokenAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 782,
                            "src": "11421:11:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 788,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "mul",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5497,
                          "src": "11421:15:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 790,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11421:36:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 791,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "div",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5514,
                      "src": "11421:40:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 793,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11421:47:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 786,
                  "id": 794,
                  "nodeType": "Return",
                  "src": "11414:54:0"
                }
              ]
            },
            "id": 796,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "calculatePlatformReward",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 783,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 782,
                  "mutability": "mutable",
                  "name": "tokenAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 796,
                  "src": "11323:19:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 781,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11323:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11322:21:0"
            },
            "returnParameters": {
              "id": 786,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 785,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 796,
                  "src": "11391:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 784,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11391:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11390:9:0"
            },
            "scope": 1090,
            "src": "11290:185:0",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "baseFunctions": [
              1202
            ],
            "body": {
              "id": 804,
              "nodeType": "Block",
              "src": "11544:39:0",
              "statements": [
                {
                  "expression": {
                    "id": 802,
                    "name": "_poolRewardBips",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 41,
                    "src": "11561:15:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 801,
                  "id": 803,
                  "nodeType": "Return",
                  "src": "11554:22:0"
                }
              ]
            },
            "functionSelector": "fef10b95",
            "id": 805,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "poolReward",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 798,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "11517:8:0"
            },
            "parameters": {
              "id": 797,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "11500:2:0"
            },
            "returnParameters": {
              "id": 801,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 800,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 805,
                  "src": "11535:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 799,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11535:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11534:9:0"
            },
            "scope": 1090,
            "src": "11481:102:0",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              1209
            ],
            "body": {
              "id": 817,
              "nodeType": "Block",
              "src": "11715:58:0",
              "statements": [
                {
                  "expression": {
                    "baseExpression": {
                      "id": 813,
                      "name": "_poolRewardAddresses",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 45,
                      "src": "11732:20:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                        "typeString": "mapping(address => address)"
                      }
                    },
                    "id": 815,
                    "indexExpression": {
                      "id": 814,
                      "name": "tokenAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 807,
                      "src": "11753:12:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "11732:34:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 812,
                  "id": 816,
                  "nodeType": "Return",
                  "src": "11725:41:0"
                }
              ]
            },
            "functionSelector": "8a698bcc",
            "id": 818,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "poolRewardAddress",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 809,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "11676:8:0"
            },
            "parameters": {
              "id": 808,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 807,
                  "mutability": "mutable",
                  "name": "tokenAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 818,
                  "src": "11616:20:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 806,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "11616:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11615:22:0"
            },
            "returnParameters": {
              "id": 812,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 811,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 818,
                  "src": "11702:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 810,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "11702:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11701:9:0"
            },
            "scope": 1090,
            "src": "11589:184:0",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              1214
            ],
            "body": {
              "id": 826,
              "nodeType": "Block",
              "src": "11846:43:0",
              "statements": [
                {
                  "expression": {
                    "id": 824,
                    "name": "_platformRewardBips",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 47,
                    "src": "11863:19:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 823,
                  "id": 825,
                  "nodeType": "Return",
                  "src": "11856:26:0"
                }
              ]
            },
            "functionSelector": "fe6551b6",
            "id": 827,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "platformReward",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 820,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "11819:8:0"
            },
            "parameters": {
              "id": 819,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "11802:2:0"
            },
            "returnParameters": {
              "id": 823,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 822,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 827,
                  "src": "11837:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 821,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11837:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11836:9:0"
            },
            "scope": 1090,
            "src": "11779:110:0",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              1219
            ],
            "body": {
              "id": 835,
              "nodeType": "Block",
              "src": "11968:45:0",
              "statements": [
                {
                  "expression": {
                    "id": 833,
                    "name": "_platformVaultAddress",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 49,
                    "src": "11985:21:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 832,
                  "id": 834,
                  "nodeType": "Return",
                  "src": "11978:28:0"
                }
              ]
            },
            "functionSelector": "5f39e93a",
            "id": 836,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "platformVaultAddress",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 829,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "11941:8:0"
            },
            "parameters": {
              "id": 828,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "11924:2:0"
            },
            "returnParameters": {
              "id": 832,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 831,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 836,
                  "src": "11959:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 830,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "11959:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11958:9:0"
            },
            "scope": 1090,
            "src": "11895:118:0",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 849,
              "nodeType": "Block",
              "src": "12123:49:0",
              "statements": [
                {
                  "expression": {
                    "id": 847,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 845,
                      "name": "_poolRewardBips",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 41,
                      "src": "12133:15:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 846,
                      "name": "poolRewardBips",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 838,
                      "src": "12151:14:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "12133:32:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 848,
                  "nodeType": "ExpressionStatement",
                  "src": "12133:32:0"
                }
              ]
            },
            "functionSelector": "046e7913",
            "id": 850,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 841,
                "modifierName": {
                  "id": 840,
                  "name": "onlyFresh",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1072,
                  "src": "12091:9:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "12091:9:0"
              },
              {
                "id": 843,
                "modifierName": {
                  "id": 842,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 5337,
                  "src": "12109:9:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "12109:9:0"
              }
            ],
            "name": "setPoolReward",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 839,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 838,
                  "mutability": "mutable",
                  "name": "poolRewardBips",
                  "nodeType": "VariableDeclaration",
                  "scope": 850,
                  "src": "12042:22:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 837,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12042:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12041:24:0"
            },
            "returnParameters": {
              "id": 844,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12123:0:0"
            },
            "scope": 1090,
            "src": "12019:153:0",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 867,
              "nodeType": "Block",
              "src": "12311:74:0",
              "statements": [
                {
                  "expression": {
                    "id": 865,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 861,
                        "name": "_poolRewardAddresses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 45,
                        "src": "12321:20:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                          "typeString": "mapping(address => address)"
                        }
                      },
                      "id": 863,
                      "indexExpression": {
                        "id": 862,
                        "name": "tokenAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 852,
                        "src": "12342:12:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "12321:34:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 864,
                      "name": "newPoolRewardAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 854,
                      "src": "12358:20:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "12321:57:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 866,
                  "nodeType": "ExpressionStatement",
                  "src": "12321:57:0"
                }
              ]
            },
            "functionSelector": "1c761d46",
            "id": 868,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 857,
                "modifierName": {
                  "id": 856,
                  "name": "onlyFresh",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1072,
                  "src": "12291:9:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "12291:9:0"
              },
              {
                "id": 859,
                "modifierName": {
                  "id": 858,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 5337,
                  "src": "12301:9:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "12301:9:0"
              }
            ],
            "name": "setPoolRewardAddress",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 855,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 852,
                  "mutability": "mutable",
                  "name": "tokenAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 868,
                  "src": "12217:20:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 851,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "12217:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 854,
                  "mutability": "mutable",
                  "name": "newPoolRewardAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 868,
                  "src": "12247:28:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 853,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "12247:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12207:74:0"
            },
            "returnParameters": {
              "id": 860,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12311:0:0"
            },
            "scope": 1090,
            "src": "12178:207:0",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 881,
              "nodeType": "Block",
              "src": "12503:57:0",
              "statements": [
                {
                  "expression": {
                    "id": 879,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 877,
                      "name": "_platformRewardBips",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 47,
                      "src": "12513:19:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 878,
                      "name": "platformRewardBips",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 870,
                      "src": "12535:18:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "12513:40:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 880,
                  "nodeType": "ExpressionStatement",
                  "src": "12513:40:0"
                }
              ]
            },
            "functionSelector": "f35a37aa",
            "id": 882,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 873,
                "modifierName": {
                  "id": 872,
                  "name": "onlyFresh",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1072,
                  "src": "12471:9:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "12471:9:0"
              },
              {
                "id": 875,
                "modifierName": {
                  "id": 874,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 5337,
                  "src": "12489:9:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "12489:9:0"
              }
            ],
            "name": "setPlatformReward",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 871,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 870,
                  "mutability": "mutable",
                  "name": "platformRewardBips",
                  "nodeType": "VariableDeclaration",
                  "scope": 882,
                  "src": "12418:26:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 869,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12418:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12417:28:0"
            },
            "returnParameters": {
              "id": 876,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12503:0:0"
            },
            "scope": 1090,
            "src": "12391:169:0",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 895,
              "nodeType": "Block",
              "src": "12689:64:0",
              "statements": [
                {
                  "expression": {
                    "id": 893,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 891,
                      "name": "_platformVaultAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 49,
                      "src": "12699:21:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 892,
                      "name": "newPlatformVaultAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 884,
                      "src": "12723:23:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "12699:47:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 894,
                  "nodeType": "ExpressionStatement",
                  "src": "12699:47:0"
                }
              ]
            },
            "functionSelector": "b2551589",
            "id": 896,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 887,
                "modifierName": {
                  "id": 886,
                  "name": "onlyFresh",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1072,
                  "src": "12657:9:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "12657:9:0"
              },
              {
                "id": 889,
                "modifierName": {
                  "id": 888,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 5337,
                  "src": "12675:9:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "12675:9:0"
              }
            ],
            "name": "setPlatformVaultAddress",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 885,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 884,
                  "mutability": "mutable",
                  "name": "newPlatformVaultAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 896,
                  "src": "12599:31:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 883,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "12599:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12598:33:0"
            },
            "returnParameters": {
              "id": 890,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12689:0:0"
            },
            "scope": 1090,
            "src": "12566:187:0",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 911,
              "nodeType": "Block",
              "src": "12864:86:0",
              "statements": [
                {
                  "expression": {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 906,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 901,
                        "name": "_scheduleTokenAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 65,
                        "src": "12881:21:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "arguments": [
                          {
                            "hexValue": "31",
                            "id": 904,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12914:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            }
                          ],
                          "id": 903,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "12906:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 902,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "12906:7:0",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 905,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12906:10:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "src": "12881:35:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseExpression": {
                      "hexValue": "30",
                      "id": 908,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "12942:1:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "id": 909,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "Conditional",
                    "src": "12881:62:0",
                    "trueExpression": {
                      "id": 907,
                      "name": "_scheduleInvokeValue",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 59,
                      "src": "12919:20:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 900,
                  "id": 910,
                  "nodeType": "Return",
                  "src": "12874:69:0"
                }
              ]
            },
            "id": 912,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "payableReserveAdjustment",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 897,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12829:2:0"
            },
            "returnParameters": {
              "id": 900,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 899,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 912,
                  "src": "12855:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 898,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12855:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12854:9:0"
            },
            "scope": 1090,
            "src": "12796:154:0",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 930,
              "nodeType": "Block",
              "src": "13136:67:0",
              "statements": [
                {
                  "expression": {
                    "id": 928,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 924,
                        "name": "_liquidityProxies",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 39,
                        "src": "13146:17:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                          "typeString": "mapping(address => address[] storage ref)"
                        }
                      },
                      "id": 926,
                      "indexExpression": {
                        "id": 925,
                        "name": "tokenAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 914,
                        "src": "13164:12:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "13146:31:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_storage",
                        "typeString": "address[] storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 927,
                      "name": "liquidityProxies",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 917,
                      "src": "13180:16:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[] calldata"
                      }
                    },
                    "src": "13146:50:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage",
                      "typeString": "address[] storage ref"
                    }
                  },
                  "id": 929,
                  "nodeType": "ExpressionStatement",
                  "src": "13146:50:0"
                }
              ]
            },
            "functionSelector": "f2477678",
            "id": 931,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 920,
                "modifierName": {
                  "id": 919,
                  "name": "onlyFresh",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1072,
                  "src": "13116:9:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "13116:9:0"
              },
              {
                "id": 922,
                "modifierName": {
                  "id": 921,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 5337,
                  "src": "13126:9:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "13126:9:0"
              }
            ],
            "name": "setLiquidityProxies",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 918,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 914,
                  "mutability": "mutable",
                  "name": "tokenAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 931,
                  "src": "13035:20:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 913,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "13035:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 917,
                  "mutability": "mutable",
                  "name": "liquidityProxies",
                  "nodeType": "VariableDeclaration",
                  "scope": 931,
                  "src": "13065:35:0",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 915,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "13065:7:0",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 916,
                    "nodeType": "ArrayTypeName",
                    "src": "13065:9:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "13025:81:0"
            },
            "returnParameters": {
              "id": 923,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13136:0:0"
            },
            "scope": 1090,
            "src": "12997:206:0",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 943,
              "nodeType": "Block",
              "src": "13326:55:0",
              "statements": [
                {
                  "expression": {
                    "baseExpression": {
                      "id": 939,
                      "name": "_liquidityProxies",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 39,
                      "src": "13343:17:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                        "typeString": "mapping(address => address[] storage ref)"
                      }
                    },
                    "id": 941,
                    "indexExpression": {
                      "id": 940,
                      "name": "tokenAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 933,
                      "src": "13361:12:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "13343:31:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage",
                      "typeString": "address[] storage ref"
                    }
                  },
                  "functionReturnParameters": 938,
                  "id": 942,
                  "nodeType": "Return",
                  "src": "13336:38:0"
                }
              ]
            },
            "functionSelector": "779bbd47",
            "id": 944,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "liquidityProxies",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 934,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 933,
                  "mutability": "mutable",
                  "name": "tokenAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 944,
                  "src": "13235:20:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 932,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "13235:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "13234:22:0"
            },
            "returnParameters": {
              "id": 938,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 937,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 944,
                  "src": "13304:16:0",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 935,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "13304:7:0",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 936,
                    "nodeType": "ArrayTypeName",
                    "src": "13304:9:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "13303:18:0"
            },
            "scope": 1090,
            "src": "13209:172:0",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              1226
            ],
            "body": {
              "id": 959,
              "nodeType": "Block",
              "src": "13515:66:0",
              "statements": [
                {
                  "expression": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 957,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "baseExpression": {
                          "id": 952,
                          "name": "_liquidityProxies",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 39,
                          "src": "13532:17:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                            "typeString": "mapping(address => address[] storage ref)"
                          }
                        },
                        "id": 954,
                        "indexExpression": {
                          "id": 953,
                          "name": "tokenAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 946,
                          "src": "13550:12:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "13532:31:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage",
                          "typeString": "address[] storage ref"
                        }
                      },
                      "id": 955,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "13532:38:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 956,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "13573:1:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "13532:42:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 951,
                  "id": 958,
                  "nodeType": "Return",
                  "src": "13525:49:0"
                }
              ]
            },
            "functionSelector": "9c0743df",
            "id": 960,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isTokenAddressRegistered",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 948,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "13479:8:0"
            },
            "parameters": {
              "id": 947,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 946,
                  "mutability": "mutable",
                  "name": "tokenAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 960,
                  "src": "13421:20:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 945,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "13421:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "13420:22:0"
            },
            "returnParameters": {
              "id": 951,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 950,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 960,
                  "src": "13505:4:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 949,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "13505:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "13504:6:0"
            },
            "scope": 1090,
            "src": "13387:194:0",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 973,
              "nodeType": "Block",
              "src": "13658:71:0",
              "statements": [
                {
                  "expression": {
                    "baseExpression": {
                      "baseExpression": {
                        "id": 967,
                        "name": "_liquidityProxies",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 39,
                        "src": "13675:17:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                          "typeString": "mapping(address => address[] storage ref)"
                        }
                      },
                      "id": 969,
                      "indexExpression": {
                        "id": 968,
                        "name": "_scheduleTokenAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 65,
                        "src": "13693:21:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "13675:40:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_storage",
                        "typeString": "address[] storage ref"
                      }
                    },
                    "id": 971,
                    "indexExpression": {
                      "id": 970,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 962,
                      "src": "13716:5:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "13675:47:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 966,
                  "id": 972,
                  "nodeType": "Return",
                  "src": "13668:54:0"
                }
              ]
            },
            "id": 974,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "liquidityProxy",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 963,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 962,
                  "mutability": "mutable",
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "scope": 974,
                  "src": "13611:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 961,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "13611:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "13610:15:0"
            },
            "returnParameters": {
              "id": 966,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 965,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 974,
                  "src": "13649:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 964,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "13649:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "13648:9:0"
            },
            "scope": 1090,
            "src": "13587:142:0",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 984,
              "nodeType": "Block",
              "src": "13803:71:0",
              "statements": [
                {
                  "expression": {
                    "expression": {
                      "baseExpression": {
                        "id": 979,
                        "name": "_liquidityProxies",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 39,
                        "src": "13820:17:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                          "typeString": "mapping(address => address[] storage ref)"
                        }
                      },
                      "id": 981,
                      "indexExpression": {
                        "id": 980,
                        "name": "_scheduleTokenAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 65,
                        "src": "13838:21:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "13820:40:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_storage",
                        "typeString": "address[] storage ref"
                      }
                    },
                    "id": 982,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "src": "13820:47:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 978,
                  "id": 983,
                  "nodeType": "Return",
                  "src": "13813:54:0"
                }
              ]
            },
            "id": 985,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "liquidityProxiesForToken",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 975,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13768:2:0"
            },
            "returnParameters": {
              "id": 978,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 977,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 985,
                  "src": "13794:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 976,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "13794:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "13793:9:0"
            },
            "scope": 1090,
            "src": "13735:139:0",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "baseFunctions": [
              1233
            ],
            "body": {
              "id": 1041,
              "nodeType": "Block",
              "src": "14003:508:0",
              "statements": [
                {
                  "condition": {
                    "arguments": [
                      {
                        "id": 994,
                        "name": "tokenAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 987,
                        "src": "14042:12:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 993,
                      "name": "isTokenAddressRegistered",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 960,
                      "src": "14017:24:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                        "typeString": "function (address) view returns (bool)"
                      }
                    },
                    "id": 995,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14017:38:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1038,
                  "nodeType": "IfStatement",
                  "src": "14013:474:0",
                  "trueBody": {
                    "id": 1037,
                    "nodeType": "Block",
                    "src": "14057:430:0",
                    "statements": [
                      {
                        "assignments": [
                          997
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 997,
                            "mutability": "mutable",
                            "name": "total",
                            "nodeType": "VariableDeclaration",
                            "scope": 1037,
                            "src": "14071:13:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 996,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "14071:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 999,
                        "initialValue": {
                          "hexValue": "30",
                          "id": 998,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "14087:1:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14071:17:0"
                      },
                      {
                        "body": {
                          "id": 1033,
                          "nodeType": "Block",
                          "src": "14233:218:0",
                          "statements": [
                            {
                              "assignments": [
                                1014
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 1014,
                                  "mutability": "mutable",
                                  "name": "proxy",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 1033,
                                  "src": "14251:21:0",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ILiquidityProxy_$2148",
                                    "typeString": "contract ILiquidityProxy"
                                  },
                                  "typeName": {
                                    "id": 1013,
                                    "name": "ILiquidityProxy",
                                    "nodeType": "UserDefinedTypeName",
                                    "referencedDeclaration": 2148,
                                    "src": "14251:15:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ILiquidityProxy_$2148",
                                      "typeString": "contract ILiquidityProxy"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 1022,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "baseExpression": {
                                      "baseExpression": {
                                        "id": 1016,
                                        "name": "_liquidityProxies",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 39,
                                        "src": "14312:17:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                                          "typeString": "mapping(address => address[] storage ref)"
                                        }
                                      },
                                      "id": 1018,
                                      "indexExpression": {
                                        "id": 1017,
                                        "name": "tokenAddress",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 987,
                                        "src": "14330:12:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "14312:31:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                        "typeString": "address[] storage ref"
                                      }
                                    },
                                    "id": 1020,
                                    "indexExpression": {
                                      "id": 1019,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1001,
                                      "src": "14344:1:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "14312:34:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 1015,
                                  "name": "ILiquidityProxy",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2148,
                                  "src": "14275:15:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_ILiquidityProxy_$2148_$",
                                    "typeString": "type(contract ILiquidityProxy)"
                                  }
                                },
                                "id": 1021,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14275:89:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ILiquidityProxy_$2148",
                                  "typeString": "contract ILiquidityProxy"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "14251:113:0"
                            },
                            {
                              "expression": {
                                "id": 1031,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 1023,
                                  "name": "total",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 997,
                                  "src": "14382:5:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "id": 1028,
                                          "name": "tokenAddress",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 987,
                                          "src": "14422:12:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "expression": {
                                          "id": 1026,
                                          "name": "proxy",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1014,
                                          "src": "14400:5:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_ILiquidityProxy_$2148",
                                            "typeString": "contract ILiquidityProxy"
                                          }
                                        },
                                        "id": 1027,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "getTotalReserve",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 2124,
                                        "src": "14400:21:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                          "typeString": "function (address) view external returns (uint256)"
                                        }
                                      },
                                      "id": 1029,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "14400:35:0",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "id": 1024,
                                      "name": "total",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 997,
                                      "src": "14390:5:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 1025,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 5417,
                                    "src": "14390:9:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 1030,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "14390:46:0",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "14382:54:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1032,
                              "nodeType": "ExpressionStatement",
                              "src": "14382:54:0"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1009,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 1004,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1001,
                            "src": "14155:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "baseExpression": {
                                "id": 1005,
                                "name": "_liquidityProxies",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 39,
                                "src": "14159:17:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                                  "typeString": "mapping(address => address[] storage ref)"
                                }
                              },
                              "id": 1007,
                              "indexExpression": {
                                "id": 1006,
                                "name": "tokenAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 987,
                                "src": "14177:12:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "14159:31:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                "typeString": "address[] storage ref"
                              }
                            },
                            "id": 1008,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "14159:38:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "14155:42:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1034,
                        "initializationExpression": {
                          "assignments": [
                            1001
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 1001,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 1034,
                              "src": "14124:9:0",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 1000,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "14124:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 1003,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 1002,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "14136:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "14124:13:0"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 1011,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "14215:3:0",
                            "subExpression": {
                              "id": 1010,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1001,
                              "src": "14215:1:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1012,
                          "nodeType": "ExpressionStatement",
                          "src": "14215:3:0"
                        },
                        "nodeType": "ForStatement",
                        "src": "14102:349:0"
                      },
                      {
                        "expression": {
                          "id": 1035,
                          "name": "total",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 997,
                          "src": "14471:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 992,
                        "id": 1036,
                        "nodeType": "Return",
                        "src": "14464:12:0"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "hexValue": "30",
                    "id": 1039,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "14503:1:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "functionReturnParameters": 992,
                  "id": 1040,
                  "nodeType": "Return",
                  "src": "14496:8:0"
                }
              ]
            },
            "functionSelector": "c56326de",
            "id": 1042,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "totalLiquidity",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 989,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "13964:8:0"
            },
            "parameters": {
              "id": 988,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 987,
                  "mutability": "mutable",
                  "name": "tokenAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 1042,
                  "src": "13904:20:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 986,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "13904:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "13903:22:0"
            },
            "returnParameters": {
              "id": 992,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 991,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1042,
                  "src": "13990:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 990,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "13990:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "13989:9:0"
            },
            "scope": 1090,
            "src": "13880:631:0",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 1061,
              "nodeType": "Block",
              "src": "14792:77:0",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 1056,
                        "name": "tokenAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1044,
                        "src": "14818:12:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 1057,
                        "name": "_platformVaultAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 49,
                        "src": "14832:21:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 1058,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1046,
                        "src": "14855:6:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1055,
                      "name": "transfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1433,
                      "src": "14809:8:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (address,address,uint256) returns (bool)"
                      }
                    },
                    "id": 1059,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14809:53:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 1054,
                  "id": 1060,
                  "nodeType": "Return",
                  "src": "14802:60:0"
                }
              ]
            },
            "functionSelector": "6476b069",
            "id": 1062,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 1049,
                "modifierName": {
                  "id": 1048,
                  "name": "onlyFresh",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1072,
                  "src": "14737:9:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "14737:9:0"
              },
              {
                "id": 1051,
                "modifierName": {
                  "id": 1050,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 5337,
                  "src": "14755:9:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "14755:9:0"
              }
            ],
            "name": "removeStuckTokens",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1047,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1044,
                  "mutability": "mutable",
                  "name": "tokenAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 1062,
                  "src": "14674:20:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1043,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "14674:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1046,
                  "mutability": "mutable",
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 1062,
                  "src": "14696:14:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1045,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "14696:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "14673:38:0"
            },
            "returnParameters": {
              "id": 1054,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1053,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1062,
                  "src": "14782:4:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1052,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "14782:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "14781:6:0"
            },
            "scope": 1090,
            "src": "14647:222:0",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 1071,
              "nodeType": "Block",
              "src": "14929:82:0",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 1066,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "14947:11:0",
                        "subExpression": {
                          "id": 1065,
                          "name": "_scheduled",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 51,
                          "src": "14948:10:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "496e766f6b65723a206e6f7420667265736820656e7669726f6e6d656e74",
                        "id": 1067,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "14960:32:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_2311fd1c3ea64bd625b93e4d507c69773a004c8f7775b28b72e844f87524a6a5",
                          "typeString": "literal_string \"Invoker: not fresh environment\""
                        },
                        "value": "Invoker: not fresh environment"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_2311fd1c3ea64bd625b93e4d507c69773a004c8f7775b28b72e844f87524a6a5",
                          "typeString": "literal_string \"Invoker: not fresh environment\""
                        }
                      ],
                      "id": 1064,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "14939:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1068,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14939:54:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1069,
                  "nodeType": "ExpressionStatement",
                  "src": "14939:54:0"
                },
                {
                  "id": 1070,
                  "nodeType": "PlaceholderStatement",
                  "src": "15003:1:0"
                }
              ]
            },
            "id": 1072,
            "name": "onlyFresh",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 1063,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "14926:2:0"
            },
            "src": "14908:103:0",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1080,
              "nodeType": "Block",
              "src": "15042:73:0",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 1075,
                        "name": "_scheduled",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51,
                        "src": "15060:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "496e766f6b65723a206e6f74207363686564756c6564",
                        "id": 1076,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "15072:24:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_4f938a45e93d8ae7da5539ebcb5bf4683bf81abc3df9766b82076ae1cc410912",
                          "typeString": "literal_string \"Invoker: not scheduled\""
                        },
                        "value": "Invoker: not scheduled"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_4f938a45e93d8ae7da5539ebcb5bf4683bf81abc3df9766b82076ae1cc410912",
                          "typeString": "literal_string \"Invoker: not scheduled\""
                        }
                      ],
                      "id": 1074,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "15052:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1077,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15052:45:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1078,
                  "nodeType": "ExpressionStatement",
                  "src": "15052:45:0"
                },
                {
                  "id": 1079,
                  "nodeType": "PlaceholderStatement",
                  "src": "15107:1:0"
                }
              ]
            },
            "id": 1081,
            "name": "onlyScheduled",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 1073,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "15039:2:0"
            },
            "src": "15017:98:0",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1084,
              "nodeType": "Block",
              "src": "15148:2:0",
              "statements": []
            },
            "id": 1085,
            "implemented": true,
            "kind": "receive",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1082,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "15128:2:0"
            },
            "returnParameters": {
              "id": 1083,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "15148:0:0"
            },
            "scope": 1090,
            "src": "15121:29:0",
            "stateMutability": "payable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 1088,
              "nodeType": "Block",
              "src": "15184:2:0",
              "statements": []
            },
            "id": 1089,
            "implemented": true,
            "kind": "fallback",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1086,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "15164:2:0"
            },
            "returnParameters": {
              "id": 1087,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "15184:0:0"
            },
            "scope": 1090,
            "src": "15156:30:0",
            "stateMutability": "payable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 1091,
        "src": "937:14251:0"
      }
    ],
    "src": "640:14549:0"
  },
  "legacyAST": {
    "attributes": {
      "absolutePath": "/Users/andrekorol/src/kollateral/protocol/contracts/Invoker.sol",
      "exportedSymbols": {
        "BalanceCarrier": [
          1464
        ],
        "Context": [
          5279
        ],
        "ExternalCaller": [
          1563
        ],
        "IERC20": [
          6165
        ],
        "IInvocationHook": [
          1170
        ],
        "IInvokable": [
          1178
        ],
        "IInvoker": [
          1234
        ],
        "ILiquidityProxy": [
          2148
        ],
        "Invoker": [
          1090
        ],
        "Ownable": [
          5388
        ],
        "SafeMath": [
          5584
        ]
      },
      "license": "Apache-2.0"
    },
    "children": [
      {
        "attributes": {
          "literals": [
            "solidity",
            "^",
            "0.7",
            ".0"
          ]
        },
        "id": 1,
        "name": "PragmaDirective",
        "src": "640:23:0"
      },
      {
        "attributes": {
          "SourceUnit": 5585,
          "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol",
          "file": "@openzeppelin/contracts/math/SafeMath.sol",
          "scope": 1091,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 2,
        "name": "ImportDirective",
        "src": "665:51:0"
      },
      {
        "attributes": {
          "SourceUnit": 5389,
          "absolutePath": "@openzeppelin/contracts/access/Ownable.sol",
          "file": "@openzeppelin/contracts/access/Ownable.sol",
          "scope": 1091,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 3,
        "name": "ImportDirective",
        "src": "717:52:0"
      },
      {
        "attributes": {
          "SourceUnit": 1465,
          "absolutePath": "/Users/andrekorol/src/kollateral/protocol/contracts/common/utils/BalanceCarrier.sol",
          "file": "./common/utils/BalanceCarrier.sol",
          "scope": 1091,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 4,
        "name": "ImportDirective",
        "src": "770:43:0"
      },
      {
        "attributes": {
          "SourceUnit": 2149,
          "absolutePath": "/Users/andrekorol/src/kollateral/protocol/contracts/liquidity/ILiquidityProxy.sol",
          "file": "./liquidity/ILiquidityProxy.sol",
          "scope": 1091,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 5,
        "name": "ImportDirective",
        "src": "814:41:0"
      },
      {
        "attributes": {
          "SourceUnit": 1179,
          "absolutePath": "/Users/andrekorol/src/kollateral/protocol/contracts/common/invoke/IInvokable.sol",
          "file": "./common/invoke/IInvokable.sol",
          "scope": 1091,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 6,
        "name": "ImportDirective",
        "src": "856:40:0"
      },
      {
        "attributes": {
          "SourceUnit": 1235,
          "absolutePath": "/Users/andrekorol/src/kollateral/protocol/contracts/common/invoke/IInvoker.sol",
          "file": "./common/invoke/IInvoker.sol",
          "scope": 1091,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 7,
        "name": "ImportDirective",
        "src": "897:38:0"
      },
      {
        "attributes": {
          "abstract": false,
          "contractDependencies": [
            1170,
            1234,
            1464,
            1563,
            5279,
            5388
          ],
          "contractKind": "contract",
          "fullyImplemented": true,
          "linearizedBaseContracts": [
            1090,
            1464,
            1563,
            5388,
            5279,
            1234,
            1170
          ],
          "name": "Invoker",
          "scope": 1091
        },
        "children": [
          {
            "attributes": {},
            "children": [
              {
                "attributes": {
                  "name": "IInvoker",
                  "referencedDeclaration": 1234,
                  "type": "contract IInvoker"
                },
                "id": 8,
                "name": "UserDefinedTypeName",
                "src": "957:8:0"
              }
            ],
            "id": 9,
            "name": "InheritanceSpecifier",
            "src": "957:8:0"
          },
          {
            "attributes": {},
            "children": [
              {
                "attributes": {
                  "name": "Ownable",
                  "referencedDeclaration": 5388,
                  "type": "contract Ownable"
                },
                "id": 10,
                "name": "UserDefinedTypeName",
                "src": "967:7:0"
              }
            ],
            "id": 11,
            "name": "InheritanceSpecifier",
            "src": "967:7:0"
          },
          {
            "attributes": {},
            "children": [
              {
                "attributes": {
                  "name": "BalanceCarrier",
                  "referencedDeclaration": 1464,
                  "type": "contract BalanceCarrier"
                },
                "id": 12,
                "name": "UserDefinedTypeName",
                "src": "976:14:0"
              }
            ],
            "id": 13,
            "name": "InheritanceSpecifier",
            "src": "976:14:0"
          },
          {
            "children": [
              {
                "attributes": {
                  "name": "SafeMath",
                  "referencedDeclaration": 5584,
                  "type": "library SafeMath"
                },
                "id": 14,
                "name": "UserDefinedTypeName",
                "src": "1003:8:0"
              },
              {
                "attributes": {
                  "name": "uint256",
                  "type": "uint256"
                },
                "id": 15,
                "name": "ElementaryTypeName",
                "src": "1016:7:0"
              }
            ],
            "id": 16,
            "name": "UsingForDirective",
            "src": "997:27:0"
          },
          {
            "attributes": {
              "anonymous": false,
              "name": "Invocation"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "invokeTo",
                      "scope": 26,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 17,
                        "name": "ElementaryTypeName",
                        "src": "1056:7:0"
                      }
                    ],
                    "id": 18,
                    "name": "VariableDeclaration",
                    "src": "1056:16:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "invokeValue",
                      "scope": 26,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 19,
                        "name": "ElementaryTypeName",
                        "src": "1082:7:0"
                      }
                    ],
                    "id": 20,
                    "name": "VariableDeclaration",
                    "src": "1082:19:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "invokeDataHash",
                      "scope": 26,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 21,
                        "name": "ElementaryTypeName",
                        "src": "1111:7:0"
                      }
                    ],
                    "id": 22,
                    "name": "VariableDeclaration",
                    "src": "1111:22:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "underlyingAmount",
                      "scope": 26,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 23,
                        "name": "ElementaryTypeName",
                        "src": "1143:7:0"
                      }
                    ],
                    "id": 24,
                    "name": "VariableDeclaration",
                    "src": "1143:24:0"
                  }
                ],
                "id": 25,
                "name": "ParameterList",
                "src": "1046:127:0"
              }
            ],
            "id": 26,
            "name": "EventDefinition",
            "src": "1030:144:0"
          },
          {
            "attributes": {
              "anonymous": false,
              "name": "Reward"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "poolReward",
                      "scope": 34,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 27,
                        "name": "ElementaryTypeName",
                        "src": "1201:7:0"
                      }
                    ],
                    "id": 28,
                    "name": "VariableDeclaration",
                    "src": "1201:18:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "platformReward",
                      "scope": 34,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 29,
                        "name": "ElementaryTypeName",
                        "src": "1229:7:0"
                      }
                    ],
                    "id": 30,
                    "name": "VariableDeclaration",
                    "src": "1229:22:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "tokenAddress",
                      "scope": 34,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 31,
                        "name": "ElementaryTypeName",
                        "src": "1261:7:0"
                      }
                    ],
                    "id": 32,
                    "name": "VariableDeclaration",
                    "src": "1261:20:0"
                  }
                ],
                "id": 33,
                "name": "ParameterList",
                "src": "1191:96:0"
              }
            ],
            "id": 34,
            "name": "EventDefinition",
            "src": "1179:109:0"
          },
          {
            "attributes": {
              "constant": false,
              "mutability": "mutable",
              "name": "_liquidityProxies",
              "scope": 1090,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "mapping(address => address[])",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "type": "mapping(address => address[])"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "address",
                      "type": "address"
                    },
                    "id": 35,
                    "name": "ElementaryTypeName",
                    "src": "1302:7:0"
                  },
                  {
                    "attributes": {
                      "type": "address[]"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 36,
                        "name": "ElementaryTypeName",
                        "src": "1313:7:0"
                      }
                    ],
                    "id": 37,
                    "name": "ArrayTypeName",
                    "src": "1313:9:0"
                  }
                ],
                "id": 38,
                "name": "Mapping",
                "src": "1294:29:0"
              }
            ],
            "id": 39,
            "name": "VariableDeclaration",
            "src": "1294:56:0"
          },
          {
            "attributes": {
              "constant": false,
              "mutability": "mutable",
              "name": "_poolRewardBips",
              "scope": 1090,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint256",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "name": "uint256",
                  "type": "uint256"
                },
                "id": 40,
                "name": "ElementaryTypeName",
                "src": "1356:7:0"
              }
            ],
            "id": 41,
            "name": "VariableDeclaration",
            "src": "1356:32:0"
          },
          {
            "attributes": {
              "constant": false,
              "mutability": "mutable",
              "name": "_poolRewardAddresses",
              "scope": 1090,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "mapping(address => address)",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "type": "mapping(address => address)"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "address",
                      "type": "address"
                    },
                    "id": 42,
                    "name": "ElementaryTypeName",
                    "src": "1402:7:0"
                  },
                  {
                    "attributes": {
                      "name": "address",
                      "stateMutability": "nonpayable",
                      "type": "address"
                    },
                    "id": 43,
                    "name": "ElementaryTypeName",
                    "src": "1413:7:0"
                  }
                ],
                "id": 44,
                "name": "Mapping",
                "src": "1394:27:0"
              }
            ],
            "id": 45,
            "name": "VariableDeclaration",
            "src": "1394:48:0"
          },
          {
            "attributes": {
              "constant": false,
              "mutability": "mutable",
              "name": "_platformRewardBips",
              "scope": 1090,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint256",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "name": "uint256",
                  "type": "uint256"
                },
                "id": 46,
                "name": "ElementaryTypeName",
                "src": "1448:7:0"
              }
            ],
            "id": 47,
            "name": "VariableDeclaration",
            "src": "1448:36:0"
          },
          {
            "attributes": {
              "constant": false,
              "mutability": "mutable",
              "name": "_platformVaultAddress",
              "scope": 1090,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "address",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "name": "address",
                  "stateMutability": "nonpayable",
                  "type": "address"
                },
                "id": 48,
                "name": "ElementaryTypeName",
                "src": "1490:7:0"
              }
            ],
            "id": 49,
            "name": "VariableDeclaration",
            "src": "1490:38:0"
          },
          {
            "attributes": {
              "constant": false,
              "mutability": "mutable",
              "name": "_scheduled",
              "scope": 1090,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "bool",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "name": "bool",
                  "type": "bool"
                },
                "id": 50,
                "name": "ElementaryTypeName",
                "src": "1535:4:0"
              }
            ],
            "id": 51,
            "name": "VariableDeclaration",
            "src": "1535:24:0"
          },
          {
            "attributes": {
              "constant": false,
              "mutability": "mutable",
              "name": "_schedulePriorTokenAmount",
              "scope": 1090,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint256",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "name": "uint256",
                  "type": "uint256"
                },
                "id": 52,
                "name": "ElementaryTypeName",
                "src": "1565:7:0"
              }
            ],
            "id": 53,
            "name": "VariableDeclaration",
            "src": "1565:42:0"
          },
          {
            "attributes": {
              "constant": false,
              "mutability": "mutable",
              "name": "_scheduleInvokeSender",
              "scope": 1090,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "address",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "name": "address",
                  "stateMutability": "nonpayable",
                  "type": "address"
                },
                "id": 54,
                "name": "ElementaryTypeName",
                "src": "1613:7:0"
              }
            ],
            "id": 55,
            "name": "VariableDeclaration",
            "src": "1613:38:0"
          },
          {
            "attributes": {
              "constant": false,
              "mutability": "mutable",
              "name": "_scheduleInvokeTo",
              "scope": 1090,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "address",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "name": "address",
                  "stateMutability": "nonpayable",
                  "type": "address"
                },
                "id": 56,
                "name": "ElementaryTypeName",
                "src": "1657:7:0"
              }
            ],
            "id": 57,
            "name": "VariableDeclaration",
            "src": "1657:34:0"
          },
          {
            "attributes": {
              "constant": false,
              "mutability": "mutable",
              "name": "_scheduleInvokeValue",
              "scope": 1090,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint256",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "name": "uint256",
                  "type": "uint256"
                },
                "id": 58,
                "name": "ElementaryTypeName",
                "src": "1697:7:0"
              }
            ],
            "id": 59,
            "name": "VariableDeclaration",
            "src": "1697:37:0"
          },
          {
            "attributes": {
              "constant": false,
              "mutability": "mutable",
              "name": "_scheduleInvokeData",
              "scope": 1090,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "bytes",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "name": "bytes",
                  "type": "bytes"
                },
                "id": 60,
                "name": "ElementaryTypeName",
                "src": "1740:5:0"
              }
            ],
            "id": 61,
            "name": "VariableDeclaration",
            "src": "1740:34:0"
          },
          {
            "attributes": {
              "constant": false,
              "mutability": "mutable",
              "name": "_scheduleIndex",
              "scope": 1090,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint256",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "name": "uint256",
                  "type": "uint256"
                },
                "id": 62,
                "name": "ElementaryTypeName",
                "src": "1780:7:0"
              }
            ],
            "id": 63,
            "name": "VariableDeclaration",
            "src": "1780:31:0"
          },
          {
            "attributes": {
              "constant": false,
              "mutability": "mutable",
              "name": "_scheduleTokenAddress",
              "scope": 1090,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "address",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "name": "address",
                  "stateMutability": "nonpayable",
                  "type": "address"
                },
                "id": 64,
                "name": "ElementaryTypeName",
                "src": "1817:7:0"
              }
            ],
            "id": 65,
            "name": "VariableDeclaration",
            "src": "1817:38:0"
          },
          {
            "attributes": {
              "constant": false,
              "mutability": "mutable",
              "name": "_scheduleTokenAmount",
              "scope": 1090,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint256",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "name": "uint256",
                  "type": "uint256"
                },
                "id": 66,
                "name": "ElementaryTypeName",
                "src": "1861:7:0"
              }
            ],
            "id": 67,
            "name": "VariableDeclaration",
            "src": "1861:37:0"
          },
          {
            "attributes": {
              "constant": false,
              "mutability": "mutable",
              "name": "_scheduleTokenAmounts",
              "scope": 1090,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint256[]",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "type": "uint256[]"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint256",
                      "type": "uint256"
                    },
                    "id": 68,
                    "name": "ElementaryTypeName",
                    "src": "1904:7:0"
                  }
                ],
                "id": 69,
                "name": "ArrayTypeName",
                "src": "1904:9:0"
              }
            ],
            "id": 70,
            "name": "VariableDeclaration",
            "src": "1904:40:0"
          },
          {
            "attributes": {
              "constant": false,
              "mutability": "mutable",
              "name": "_scheduleRepayAmount",
              "scope": 1090,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint256",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "name": "uint256",
                  "type": "uint256"
                },
                "id": 71,
                "name": "ElementaryTypeName",
                "src": "1950:7:0"
              }
            ],
            "id": 72,
            "name": "VariableDeclaration",
            "src": "1950:37:0"
          },
          {
            "attributes": {
              "constant": false,
              "mutability": "mutable",
              "name": "_scheduleRepayAmounts",
              "scope": 1090,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint256[]",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "type": "uint256[]"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint256",
                      "type": "uint256"
                    },
                    "id": 73,
                    "name": "ElementaryTypeName",
                    "src": "1993:7:0"
                  }
                ],
                "id": 74,
                "name": "ArrayTypeName",
                "src": "1993:9:0"
              }
            ],
            "id": 75,
            "name": "VariableDeclaration",
            "src": "1993:40:0"
          },
          {
            "attributes": {
              "constant": false,
              "mutability": "mutable",
              "name": "_schedulePoolReward",
              "scope": 1090,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint256",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "name": "uint256",
                  "type": "uint256"
                },
                "id": 76,
                "name": "ElementaryTypeName",
                "src": "2039:7:0"
              }
            ],
            "id": 77,
            "name": "VariableDeclaration",
            "src": "2039:36:0"
          },
          {
            "attributes": {
              "constant": false,
              "mutability": "mutable",
              "name": "_schedulePlatformReward",
              "scope": 1090,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint256",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "name": "uint256",
                  "type": "uint256"
                },
                "id": 78,
                "name": "ElementaryTypeName",
                "src": "2081:7:0"
              }
            ],
            "id": 79,
            "name": "VariableDeclaration",
            "src": "2081:40:0"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": true,
              "kind": "constructor",
              "name": "",
              "scope": 1090,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 80,
                "name": "ParameterList",
                "src": "2139:2:0"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 87,
                "name": "ParameterList",
                "src": "2169:0:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 1464,
                      "type": "type(contract BalanceCarrier)",
                      "value": "BalanceCarrier"
                    },
                    "id": 81,
                    "name": "Identifier",
                    "src": "2142:14:0"
                  },
                  {
                    "attributes": {
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "isStructConstructorCall": false,
                      "lValueRequested": false,
                      "names": [
                        null
                      ],
                      "tryCall": false,
                      "type": "address payable",
                      "type_conversion": true
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            }
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "type": "type(address)"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "address"
                            },
                            "id": 82,
                            "name": "ElementaryTypeName",
                            "src": "2157:7:0"
                          }
                        ],
                        "id": 83,
                        "name": "ElementaryTypeNameExpression",
                        "src": "2157:7:0"
                      },
                      {
                        "attributes": {
                          "hexvalue": "31",
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "token": "number",
                          "type": "int_const 1",
                          "value": "1"
                        },
                        "id": 84,
                        "name": "Literal",
                        "src": "2165:1:0"
                      }
                    ],
                    "id": 85,
                    "name": "FunctionCall",
                    "src": "2157:10:0"
                  }
                ],
                "id": 86,
                "name": "ModifierInvocation",
                "src": "2142:26:0"
              },
              {
                "attributes": {
                  "statements": [
                    null
                  ]
                },
                "children": [],
                "id": 88,
                "name": "Block",
                "src": "2169:2:0"
              }
            ],
            "id": 89,
            "name": "FunctionDefinition",
            "src": "2128:43:0"
          },
          {
            "attributes": {
              "baseFunctions": [
                1194
              ],
              "functionSelector": "0e02e6a3",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "name": "invoke",
              "scope": 1090,
              "stateMutability": "payable",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "overrides": [
                    null
                  ]
                },
                "id": 99,
                "name": "OverrideSpecifier",
                "src": "2336:8:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "invokeTo",
                      "scope": 141,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 90,
                        "name": "ElementaryTypeName",
                        "src": "2202:7:0"
                      }
                    ],
                    "id": 91,
                    "name": "VariableDeclaration",
                    "src": "2202:16:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "invokeData",
                      "scope": 141,
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "type": "bytes",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 92,
                        "name": "ElementaryTypeName",
                        "src": "2228:5:0"
                      }
                    ],
                    "id": 93,
                    "name": "VariableDeclaration",
                    "src": "2228:25:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "tokenAddress",
                      "scope": 141,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 94,
                        "name": "ElementaryTypeName",
                        "src": "2263:7:0"
                      }
                    ],
                    "id": 95,
                    "name": "VariableDeclaration",
                    "src": "2263:20:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "tokenAmount",
                      "scope": 141,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 96,
                        "name": "ElementaryTypeName",
                        "src": "2293:7:0"
                      }
                    ],
                    "id": 97,
                    "name": "VariableDeclaration",
                    "src": "2293:19:0"
                  }
                ],
                "id": 98,
                "name": "ParameterList",
                "src": "2192:126:0"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 102,
                "name": "ParameterList",
                "src": "2355:0:0"
              },
              {
                "attributes": {},
                "children": [
                  {
                    "attributes": {
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 1072,
                      "type": "modifier ()",
                      "value": "onlyFresh"
                    },
                    "id": 100,
                    "name": "Identifier",
                    "src": "2345:9:0"
                  }
                ],
                "id": 101,
                "name": "ModifierInvocation",
                "src": "2345:9:0"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_3baebd1e484b5704c0e6ab1bee585c31e762e1cb1c76bc62bb5ea845c3f0b548",
                                  "typeString": "literal_string \"Invoker: no liquidity for token\""
                                }
                              ],
                              "overloadedDeclarations": [
                                -18,
                                -18
                              ],
                              "referencedDeclaration": -18,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 103,
                            "name": "Identifier",
                            "src": "2365:7:0"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 960,
                                  "type": "function (address) view returns (bool)",
                                  "value": "isTokenAddressRegistered"
                                },
                                "id": 104,
                                "name": "Identifier",
                                "src": "2386:24:0"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 95,
                                  "type": "address",
                                  "value": "tokenAddress"
                                },
                                "id": 105,
                                "name": "Identifier",
                                "src": "2411:12:0"
                              }
                            ],
                            "id": 106,
                            "name": "FunctionCall",
                            "src": "2386:38:0"
                          },
                          {
                            "attributes": {
                              "hexvalue": "496e766f6b65723a206e6f206c697175696469747920666f7220746f6b656e",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "string",
                              "type": "literal_string \"Invoker: no liquidity for token\"",
                              "value": "Invoker: no liquidity for token"
                            },
                            "id": 107,
                            "name": "Literal",
                            "src": "2438:33:0"
                          }
                        ],
                        "id": 108,
                        "name": "FunctionCall",
                        "src": "2365:116:0"
                      }
                    ],
                    "id": 109,
                    "name": "ExpressionStatement",
                    "src": "2365:116:0"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_240b70231dc1ab85d5e65461741072f1747b65c237266f84676ff40a283df5c9",
                                  "typeString": "literal_string \"Invoker: cannot invoke this contract\""
                                }
                              ],
                              "overloadedDeclarations": [
                                -18,
                                -18
                              ],
                              "referencedDeclaration": -18,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 110,
                            "name": "Identifier",
                            "src": "2491:7:0"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "!=",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 91,
                                  "type": "address",
                                  "value": "invokeTo"
                                },
                                "id": 111,
                                "name": "Identifier",
                                "src": "2512:8:0"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "address payable",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_Invoker_$1090",
                                          "typeString": "contract Invoker"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(address)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "name": "address"
                                        },
                                        "id": 112,
                                        "name": "ElementaryTypeName",
                                        "src": "2524:7:0"
                                      }
                                    ],
                                    "id": 113,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "2524:7:0"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": -28,
                                      "type": "contract Invoker",
                                      "value": "this"
                                    },
                                    "id": 114,
                                    "name": "Identifier",
                                    "src": "2532:4:0"
                                  }
                                ],
                                "id": 115,
                                "name": "FunctionCall",
                                "src": "2524:13:0"
                              }
                            ],
                            "id": 116,
                            "name": "BinaryOperation",
                            "src": "2512:25:0"
                          },
                          {
                            "attributes": {
                              "hexvalue": "496e766f6b65723a2063616e6e6f7420696e766f6b65207468697320636f6e7472616374",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "string",
                              "type": "literal_string \"Invoker: cannot invoke this contract\"",
                              "value": "Invoker: cannot invoke this contract"
                            },
                            "id": 117,
                            "name": "Literal",
                            "src": "2551:38:0"
                          }
                        ],
                        "id": 118,
                        "name": "FunctionCall",
                        "src": "2491:108:0"
                      }
                    ],
                    "id": 119,
                    "name": "ExpressionStatement",
                    "src": "2491:108:0"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 538,
                              "type": "function (address,address,uint256,bytes memory,address,uint256)",
                              "value": "scheduleExecution"
                            },
                            "id": 120,
                            "name": "Identifier",
                            "src": "2610:17:0"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "type": "address payable"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": -15,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 121,
                                "name": "Identifier",
                                "src": "2641:3:0"
                              }
                            ],
                            "id": 122,
                            "name": "MemberAccess",
                            "src": "2641:10:0"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 91,
                              "type": "address",
                              "value": "invokeTo"
                            },
                            "id": 123,
                            "name": "Identifier",
                            "src": "2665:8:0"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "value",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": -15,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 124,
                                "name": "Identifier",
                                "src": "2687:3:0"
                              }
                            ],
                            "id": 125,
                            "name": "MemberAccess",
                            "src": "2687:9:0"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 93,
                              "type": "bytes calldata",
                              "value": "invokeData"
                            },
                            "id": 126,
                            "name": "Identifier",
                            "src": "2710:10:0"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 95,
                              "type": "address",
                              "value": "tokenAddress"
                            },
                            "id": 127,
                            "name": "Identifier",
                            "src": "2734:12:0"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 97,
                              "type": "uint256",
                              "value": "tokenAmount"
                            },
                            "id": 128,
                            "name": "Identifier",
                            "src": "2760:11:0"
                          }
                        ],
                        "id": 129,
                        "name": "FunctionCall",
                        "src": "2610:171:0"
                      }
                    ],
                    "id": 130,
                    "name": "ExpressionStatement",
                    "src": "2610:171:0"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 162,
                              "type": "function ()",
                              "value": "invokeNext"
                            },
                            "id": 131,
                            "name": "Identifier",
                            "src": "2792:10:0"
                          }
                        ],
                        "id": 132,
                        "name": "FunctionCall",
                        "src": "2792:12:0"
                      }
                    ],
                    "id": 133,
                    "name": "ExpressionStatement",
                    "src": "2792:12:0"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 345,
                              "type": "function ()",
                              "value": "disburseReward"
                            },
                            "id": 134,
                            "name": "Identifier",
                            "src": "2815:14:0"
                          }
                        ],
                        "id": 135,
                        "name": "FunctionCall",
                        "src": "2815:16:0"
                      }
                    ],
                    "id": 136,
                    "name": "ExpressionStatement",
                    "src": "2815:16:0"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 604,
                              "type": "function ()",
                              "value": "cleanSchedule"
                            },
                            "id": 137,
                            "name": "Identifier",
                            "src": "2842:13:0"
                          }
                        ],
                        "id": 138,
                        "name": "FunctionCall",
                        "src": "2842:15:0"
                      }
                    ],
                    "id": 139,
                    "name": "ExpressionStatement",
                    "src": "2842:15:0"
                  }
                ],
                "id": 140,
                "name": "Block",
                "src": "2355:509:0"
              }
            ],
            "id": 141,
            "name": "FunctionDefinition",
            "src": "2177:687:0"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "invokeNext",
              "scope": 1090,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 142,
                "name": "ParameterList",
                "src": "2889:2:0"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 143,
                "name": "ParameterList",
                "src": "2901:0:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        145
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "proxy",
                          "scope": 161,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "contract ILiquidityProxy",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "ILiquidityProxy",
                              "referencedDeclaration": 2148,
                              "type": "contract ILiquidityProxy"
                            },
                            "id": 144,
                            "name": "UserDefinedTypeName",
                            "src": "2911:15:0"
                          }
                        ],
                        "id": 145,
                        "name": "VariableDeclaration",
                        "src": "2911:21:0"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "contract ILiquidityProxy",
                          "type_conversion": true
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2148,
                              "type": "type(contract ILiquidityProxy)",
                              "value": "ILiquidityProxy"
                            },
                            "id": 146,
                            "name": "Identifier",
                            "src": "2935:15:0"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "address",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 974,
                                  "type": "function (uint256) view returns (address)",
                                  "value": "liquidityProxy"
                                },
                                "id": 147,
                                "name": "Identifier",
                                "src": "2951:14:0"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 63,
                                  "type": "uint256",
                                  "value": "_scheduleIndex"
                                },
                                "id": 148,
                                "name": "Identifier",
                                "src": "2966:14:0"
                              }
                            ],
                            "id": 149,
                            "name": "FunctionCall",
                            "src": "2951:30:0"
                          }
                        ],
                        "id": 150,
                        "name": "FunctionCall",
                        "src": "2935:47:0"
                      }
                    ],
                    "id": 151,
                    "name": "VariableDeclarationStatement",
                    "src": "2911:71:0"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "borrow",
                              "referencedDeclaration": 2147,
                              "type": "function (address,uint256) external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 145,
                                  "type": "contract ILiquidityProxy",
                                  "value": "proxy"
                                },
                                "id": 152,
                                "name": "Identifier",
                                "src": "2992:5:0"
                              }
                            ],
                            "id": 154,
                            "name": "MemberAccess",
                            "src": "2992:12:0"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 65,
                              "type": "address",
                              "value": "_scheduleTokenAddress"
                            },
                            "id": 155,
                            "name": "Identifier",
                            "src": "3018:21:0"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 70,
                                  "type": "uint256[] storage ref",
                                  "value": "_scheduleTokenAmounts"
                                },
                                "id": 156,
                                "name": "Identifier",
                                "src": "3053:21:0"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 63,
                                  "type": "uint256",
                                  "value": "_scheduleIndex"
                                },
                                "id": 157,
                                "name": "Identifier",
                                "src": "3075:14:0"
                              }
                            ],
                            "id": 158,
                            "name": "IndexAccess",
                            "src": "3053:37:0"
                          }
                        ],
                        "id": 159,
                        "name": "FunctionCall",
                        "src": "2992:108:0"
                      }
                    ],
                    "id": 160,
                    "name": "ExpressionStatement",
                    "src": "2992:108:0"
                  }
                ],
                "id": 161,
                "name": "Block",
                "src": "2901:206:0"
              }
            ],
            "id": 162,
            "name": "FunctionDefinition",
            "src": "2870:237:0"
          },
          {
            "attributes": {
              "baseFunctions": [
                1197
              ],
              "functionSelector": "0a5ca4e8",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "name": "invokeCallback",
              "scope": 1090,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "overrides": [
                    null
                  ]
                },
                "id": 164,
                "name": "OverrideSpecifier",
                "src": "3148:8:0"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 163,
                "name": "ParameterList",
                "src": "3136:2:0"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 167,
                "name": "ParameterList",
                "src": "3171:0:0"
              },
              {
                "attributes": {},
                "children": [
                  {
                    "attributes": {
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 1081,
                      "type": "modifier ()",
                      "value": "onlyScheduled"
                    },
                    "id": 165,
                    "name": "Identifier",
                    "src": "3157:13:0"
                  }
                ],
                "id": 166,
                "name": "ModifierInvocation",
                "src": "3157:13:0"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "++",
                          "prefix": false,
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 63,
                              "type": "uint256",
                              "value": "_scheduleIndex"
                            },
                            "id": 168,
                            "name": "Identifier",
                            "src": "3181:14:0"
                          }
                        ],
                        "id": 169,
                        "name": "UnaryOperation",
                        "src": "3181:16:0"
                      }
                    ],
                    "id": 170,
                    "name": "ExpressionStatement",
                    "src": "3181:16:0"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "==",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 63,
                              "type": "uint256",
                              "value": "_scheduleIndex"
                            },
                            "id": 171,
                            "name": "Identifier",
                            "src": "3211:14:0"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "length",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 70,
                                  "type": "uint256[] storage ref",
                                  "value": "_scheduleTokenAmounts"
                                },
                                "id": 172,
                                "name": "Identifier",
                                "src": "3229:21:0"
                              }
                            ],
                            "id": 173,
                            "name": "MemberAccess",
                            "src": "3229:28:0"
                          }
                        ],
                        "id": 174,
                        "name": "BinaryOperation",
                        "src": "3211:46:0"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "arguments": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "tuple()",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        null
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 291,
                                      "type": "function ()",
                                      "value": "invokeFinal"
                                    },
                                    "id": 175,
                                    "name": "Identifier",
                                    "src": "3273:11:0"
                                  }
                                ],
                                "id": 176,
                                "name": "FunctionCall",
                                "src": "3273:13:0"
                              }
                            ],
                            "id": 177,
                            "name": "ExpressionStatement",
                            "src": "3273:13:0"
                          }
                        ],
                        "id": 178,
                        "name": "Block",
                        "src": "3259:38:0"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "arguments": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "tuple()",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        null
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 162,
                                      "type": "function ()",
                                      "value": "invokeNext"
                                    },
                                    "id": 179,
                                    "name": "Identifier",
                                    "src": "3317:10:0"
                                  }
                                ],
                                "id": 180,
                                "name": "FunctionCall",
                                "src": "3317:12:0"
                              }
                            ],
                            "id": 181,
                            "name": "ExpressionStatement",
                            "src": "3317:12:0"
                          }
                        ],
                        "id": 182,
                        "name": "Block",
                        "src": "3303:37:0"
                      }
                    ],
                    "id": 183,
                    "name": "IfStatement",
                    "src": "3207:133:0"
                  }
                ],
                "id": 184,
                "name": "Block",
                "src": "3171:175:0"
              }
            ],
            "id": 185,
            "name": "FunctionDefinition",
            "src": "3113:233:0"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "invokeFinal",
              "scope": 1090,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 186,
                "name": "ParameterList",
                "src": "3372:2:0"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 187,
                "name": "ParameterList",
                "src": "3384:0:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        189
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "expectedPriorTokenAmount",
                          "scope": 290,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 188,
                            "name": "ElementaryTypeName",
                            "src": "3394:7:0"
                          }
                        ],
                        "id": 189,
                        "name": "VariableDeclaration",
                        "src": "3394:32:0"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "add",
                              "referencedDeclaration": 5417,
                              "type": "function (uint256,uint256) pure returns (uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 53,
                                  "type": "uint256",
                                  "value": "_schedulePriorTokenAmount"
                                },
                                "id": 190,
                                "name": "Identifier",
                                "src": "3429:25:0"
                              }
                            ],
                            "id": 191,
                            "name": "MemberAccess",
                            "src": "3429:29:0"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 67,
                              "type": "uint256",
                              "value": "_scheduleTokenAmount"
                            },
                            "id": 192,
                            "name": "Identifier",
                            "src": "3472:20:0"
                          }
                        ],
                        "id": 193,
                        "name": "FunctionCall",
                        "src": "3429:73:0"
                      }
                    ],
                    "id": 194,
                    "name": "VariableDeclarationStatement",
                    "src": "3394:108:0"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        196
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "currentTokenAmount",
                          "scope": 290,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 195,
                            "name": "ElementaryTypeName",
                            "src": "3512:7:0"
                          }
                        ],
                        "id": 196,
                        "name": "VariableDeclaration",
                        "src": "3512:26:0"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sub",
                              "referencedDeclaration": 5434,
                              "type": "function (uint256,uint256) pure returns (uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "uint256",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1463,
                                      "type": "function (address) view returns (uint256)",
                                      "value": "balanceOf"
                                    },
                                    "id": 197,
                                    "name": "Identifier",
                                    "src": "3541:9:0"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 65,
                                      "type": "address",
                                      "value": "_scheduleTokenAddress"
                                    },
                                    "id": 198,
                                    "name": "Identifier",
                                    "src": "3551:21:0"
                                  }
                                ],
                                "id": 199,
                                "name": "FunctionCall",
                                "src": "3541:32:0"
                              }
                            ],
                            "id": 200,
                            "name": "MemberAccess",
                            "src": "3541:36:0"
                          },
                          {
                            "attributes": {
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint256",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 912,
                                  "type": "function () view returns (uint256)",
                                  "value": "payableReserveAdjustment"
                                },
                                "id": 201,
                                "name": "Identifier",
                                "src": "3591:24:0"
                              }
                            ],
                            "id": 202,
                            "name": "FunctionCall",
                            "src": "3591:26:0"
                          }
                        ],
                        "id": 203,
                        "name": "FunctionCall",
                        "src": "3541:86:0"
                      }
                    ],
                    "id": 204,
                    "name": "VariableDeclarationStatement",
                    "src": "3512:115:0"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_55b82c48bdc7538c0b1fef7750395b597f60cfcb3776bc97bead2d77d6813d90",
                                  "typeString": "literal_string \"Invoker: incorrect liquidity amount sourced\""
                                }
                              ],
                              "overloadedDeclarations": [
                                -18,
                                -18
                              ],
                              "referencedDeclaration": -18,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 205,
                            "name": "Identifier",
                            "src": "3637:7:0"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "==",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 196,
                                  "type": "uint256",
                                  "value": "currentTokenAmount"
                                },
                                "id": 206,
                                "name": "Identifier",
                                "src": "3658:18:0"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 189,
                                  "type": "uint256",
                                  "value": "expectedPriorTokenAmount"
                                },
                                "id": 207,
                                "name": "Identifier",
                                "src": "3680:24:0"
                              }
                            ],
                            "id": 208,
                            "name": "BinaryOperation",
                            "src": "3658:46:0"
                          },
                          {
                            "attributes": {
                              "hexvalue": "496e766f6b65723a20696e636f7272656374206c697175696469747920616d6f756e7420736f7572636564",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "string",
                              "type": "literal_string \"Invoker: incorrect liquidity amount sourced\"",
                              "value": "Invoker: incorrect liquidity amount sourced"
                            },
                            "id": 209,
                            "name": "Literal",
                            "src": "3718:45:0"
                          }
                        ],
                        "id": 210,
                        "name": "FunctionCall",
                        "src": "3637:136:0"
                      }
                    ],
                    "id": 211,
                    "name": "ExpressionStatement",
                    "src": "3637:136:0"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_7b1fe6565af982bcd6974838026c9662eb3dcef851b3eee7edbfcd417cee7563",
                                  "typeString": "literal_string \"Invoker: transfer failed\""
                                }
                              ],
                              "overloadedDeclarations": [
                                -18,
                                -18
                              ],
                              "referencedDeclaration": -18,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 212,
                            "name": "Identifier",
                            "src": "3783:7:0"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1433,
                                  "type": "function (address,address,uint256) returns (bool)",
                                  "value": "transfer"
                                },
                                "id": 213,
                                "name": "Identifier",
                                "src": "3804:8:0"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 65,
                                  "type": "address",
                                  "value": "_scheduleTokenAddress"
                                },
                                "id": 214,
                                "name": "Identifier",
                                "src": "3830:21:0"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 57,
                                  "type": "address",
                                  "value": "_scheduleInvokeTo"
                                },
                                "id": 215,
                                "name": "Identifier",
                                "src": "3869:17:0"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 67,
                                  "type": "uint256",
                                  "value": "_scheduleTokenAmount"
                                },
                                "id": 216,
                                "name": "Identifier",
                                "src": "3904:20:0"
                              }
                            ],
                            "id": 217,
                            "name": "FunctionCall",
                            "src": "3804:134:0"
                          },
                          {
                            "attributes": {
                              "hexvalue": "496e766f6b65723a207472616e73666572206661696c6564",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "string",
                              "type": "literal_string \"Invoker: transfer failed\"",
                              "value": "Invoker: transfer failed"
                            },
                            "id": 218,
                            "name": "Literal",
                            "src": "3952:26:0"
                          }
                        ],
                        "id": 219,
                        "name": "FunctionCall",
                        "src": "3783:205:0"
                      }
                    ],
                    "id": 220,
                    "name": "ExpressionStatement",
                    "src": "3783:205:0"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_storage",
                                  "typeString": "bytes storage ref"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "names": [
                                "value"
                              ],
                              "type": "function (bytes memory) payable external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_storage",
                                      "typeString": "bytes storage ref"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "execute",
                                  "referencedDeclaration": 1177,
                                  "type": "function (bytes memory) payable external"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "contract IInvokable",
                                      "type_conversion": true
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1178,
                                          "type": "type(contract IInvokable)",
                                          "value": "IInvokable"
                                        },
                                        "id": 221,
                                        "name": "Identifier",
                                        "src": "3999:10:0"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 57,
                                          "type": "address",
                                          "value": "_scheduleInvokeTo"
                                        },
                                        "id": 222,
                                        "name": "Identifier",
                                        "src": "4010:17:0"
                                      }
                                    ],
                                    "id": 223,
                                    "name": "FunctionCall",
                                    "src": "3999:29:0"
                                  }
                                ],
                                "id": 224,
                                "name": "MemberAccess",
                                "src": "3999:37:0"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 59,
                                  "type": "uint256",
                                  "value": "_scheduleInvokeValue"
                                },
                                "id": 225,
                                "name": "Identifier",
                                "src": "4044:20:0"
                              }
                            ],
                            "id": 226,
                            "name": "FunctionCallOptions",
                            "src": "3999:66:0"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 61,
                              "type": "bytes storage ref",
                              "value": "_scheduleInvokeData"
                            },
                            "id": 227,
                            "name": "Identifier",
                            "src": "4079:19:0"
                          }
                        ],
                        "id": 228,
                        "name": "FunctionCall",
                        "src": "3999:109:0"
                      }
                    ],
                    "id": 229,
                    "name": "ExpressionStatement",
                    "src": "3999:109:0"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 26,
                              "type": "function (address,uint256,bytes32,uint256)",
                              "value": "Invocation"
                            },
                            "id": 230,
                            "name": "Identifier",
                            "src": "4123:10:0"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 57,
                              "type": "address",
                              "value": "_scheduleInvokeTo"
                            },
                            "id": 231,
                            "name": "Identifier",
                            "src": "4147:17:0"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 59,
                              "type": "uint256",
                              "value": "_scheduleInvokeValue"
                            },
                            "id": 232,
                            "name": "Identifier",
                            "src": "4178:20:0"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "bytes32",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_storage",
                                      "typeString": "bytes storage ref"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": -8,
                                  "type": "function (bytes memory) pure returns (bytes32)",
                                  "value": "keccak256"
                                },
                                "id": 233,
                                "name": "Identifier",
                                "src": "4212:9:0"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 61,
                                  "type": "bytes storage ref",
                                  "value": "_scheduleInvokeData"
                                },
                                "id": 234,
                                "name": "Identifier",
                                "src": "4222:19:0"
                              }
                            ],
                            "id": 235,
                            "name": "FunctionCall",
                            "src": "4212:30:0"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 67,
                              "type": "uint256",
                              "value": "_scheduleTokenAmount"
                            },
                            "id": 236,
                            "name": "Identifier",
                            "src": "4256:20:0"
                          }
                        ],
                        "id": 237,
                        "name": "FunctionCall",
                        "src": "4123:163:0"
                      }
                    ],
                    "id": 238,
                    "name": "EmitStatement",
                    "src": "4118:168:0"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        240
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "expectedResultingTokenAmount",
                          "scope": 290,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 239,
                            "name": "ElementaryTypeName",
                            "src": "4297:7:0"
                          }
                        ],
                        "id": 240,
                        "name": "VariableDeclaration",
                        "src": "4297:36:0"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "add",
                              "referencedDeclaration": 5417,
                              "type": "function (uint256,uint256) pure returns (uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 53,
                                  "type": "uint256",
                                  "value": "_schedulePriorTokenAmount"
                                },
                                "id": 241,
                                "name": "Identifier",
                                "src": "4336:25:0"
                              }
                            ],
                            "id": 242,
                            "name": "MemberAccess",
                            "src": "4336:29:0"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 72,
                              "type": "uint256",
                              "value": "_scheduleRepayAmount"
                            },
                            "id": 243,
                            "name": "Identifier",
                            "src": "4379:20:0"
                          }
                        ],
                        "id": 244,
                        "name": "FunctionCall",
                        "src": "4336:73:0"
                      }
                    ],
                    "id": 245,
                    "name": "VariableDeclarationStatement",
                    "src": "4297:112:0"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_3d613f9848565a9e04a88f3d3112c58c08151ee67296aab4ff0808b96033056e",
                                  "typeString": "literal_string \"Invoker: incorrect repayment amount\""
                                }
                              ],
                              "overloadedDeclarations": [
                                -18,
                                -18
                              ],
                              "referencedDeclaration": -18,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 246,
                            "name": "Identifier",
                            "src": "4419:7:0"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "==",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "uint256",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1463,
                                      "type": "function (address) view returns (uint256)",
                                      "value": "balanceOf"
                                    },
                                    "id": 247,
                                    "name": "Identifier",
                                    "src": "4440:9:0"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 65,
                                      "type": "address",
                                      "value": "_scheduleTokenAddress"
                                    },
                                    "id": 248,
                                    "name": "Identifier",
                                    "src": "4450:21:0"
                                  }
                                ],
                                "id": 249,
                                "name": "FunctionCall",
                                "src": "4440:32:0"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 240,
                                  "type": "uint256",
                                  "value": "expectedResultingTokenAmount"
                                },
                                "id": 250,
                                "name": "Identifier",
                                "src": "4476:28:0"
                              }
                            ],
                            "id": 251,
                            "name": "BinaryOperation",
                            "src": "4440:64:0"
                          },
                          {
                            "attributes": {
                              "hexvalue": "496e766f6b65723a20696e636f72726563742072657061796d656e7420616d6f756e74",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "string",
                              "type": "literal_string \"Invoker: incorrect repayment amount\"",
                              "value": "Invoker: incorrect repayment amount"
                            },
                            "id": 252,
                            "name": "Literal",
                            "src": "4518:37:0"
                          }
                        ],
                        "id": 253,
                        "name": "FunctionCall",
                        "src": "4419:146:0"
                      }
                    ],
                    "id": 254,
                    "name": "ExpressionStatement",
                    "src": "4419:146:0"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "assignments": [
                            256
                          ]
                        },
                        "children": [
                          {
                            "attributes": {
                              "constant": false,
                              "mutability": "mutable",
                              "name": "i",
                              "scope": 289,
                              "stateVariable": false,
                              "storageLocation": "default",
                              "type": "uint256",
                              "visibility": "internal"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "name": "uint256",
                                  "type": "uint256"
                                },
                                "id": 255,
                                "name": "ElementaryTypeName",
                                "src": "4581:7:0"
                              }
                            ],
                            "id": 256,
                            "name": "VariableDeclaration",
                            "src": "4581:9:0"
                          },
                          {
                            "attributes": {
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 257,
                            "name": "Literal",
                            "src": "4593:1:0"
                          }
                        ],
                        "id": 258,
                        "name": "VariableDeclarationStatement",
                        "src": "4581:13:0"
                      },
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "<",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 256,
                              "type": "uint256",
                              "value": "i"
                            },
                            "id": 259,
                            "name": "Identifier",
                            "src": "4596:1:0"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "length",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 75,
                                  "type": "uint256[] storage ref",
                                  "value": "_scheduleRepayAmounts"
                                },
                                "id": 260,
                                "name": "Identifier",
                                "src": "4600:21:0"
                              }
                            ],
                            "id": 261,
                            "name": "MemberAccess",
                            "src": "4600:28:0"
                          }
                        ],
                        "id": 262,
                        "name": "BinaryOperation",
                        "src": "4596:32:0"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "++",
                              "prefix": false,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 256,
                                  "type": "uint256",
                                  "value": "i"
                                },
                                "id": 263,
                                "name": "Identifier",
                                "src": "4630:1:0"
                              }
                            ],
                            "id": 264,
                            "name": "UnaryOperation",
                            "src": "4630:3:0"
                          }
                        ],
                        "id": 265,
                        "name": "ExpressionStatement",
                        "src": "4630:3:0"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "assignments": [
                                267
                              ]
                            },
                            "children": [
                              {
                                "attributes": {
                                  "constant": false,
                                  "mutability": "mutable",
                                  "name": "repaymentAddress",
                                  "scope": 288,
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "type": "address",
                                  "visibility": "internal"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "address",
                                      "stateMutability": "nonpayable",
                                      "type": "address"
                                    },
                                    "id": 266,
                                    "name": "ElementaryTypeName",
                                    "src": "4649:7:0"
                                  }
                                ],
                                "id": 267,
                                "name": "VariableDeclaration",
                                "src": "4649:24:0"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "address",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "getRepaymentAddress",
                                      "referencedDeclaration": 2131,
                                      "type": "function (address) view external returns (address)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "tryCall": false,
                                          "type": "contract ILiquidityProxy",
                                          "type_conversion": true
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              ],
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 2148,
                                              "type": "type(contract ILiquidityProxy)",
                                              "value": "ILiquidityProxy"
                                            },
                                            "id": 268,
                                            "name": "Identifier",
                                            "src": "4676:15:0"
                                          },
                                          {
                                            "attributes": {
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "isStructConstructorCall": false,
                                              "lValueRequested": false,
                                              "names": [
                                                null
                                              ],
                                              "tryCall": false,
                                              "type": "address",
                                              "type_conversion": false
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  ],
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 974,
                                                  "type": "function (uint256) view returns (address)",
                                                  "value": "liquidityProxy"
                                                },
                                                "id": 269,
                                                "name": "Identifier",
                                                "src": "4692:14:0"
                                              },
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 256,
                                                  "type": "uint256",
                                                  "value": "i"
                                                },
                                                "id": 270,
                                                "name": "Identifier",
                                                "src": "4707:1:0"
                                              }
                                            ],
                                            "id": 271,
                                            "name": "FunctionCall",
                                            "src": "4692:17:0"
                                          }
                                        ],
                                        "id": 272,
                                        "name": "FunctionCall",
                                        "src": "4676:34:0"
                                      }
                                    ],
                                    "id": 273,
                                    "name": "MemberAccess",
                                    "src": "4676:71:0"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 65,
                                      "type": "address",
                                      "value": "_scheduleTokenAddress"
                                    },
                                    "id": 274,
                                    "name": "Identifier",
                                    "src": "4748:21:0"
                                  }
                                ],
                                "id": 275,
                                "name": "FunctionCall",
                                "src": "4676:94:0"
                              }
                            ],
                            "id": 276,
                            "name": "VariableDeclarationStatement",
                            "src": "4649:121:0"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "tuple()",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        {
                                          "typeIdentifier": "t_stringliteral_7a0290cc1a0722251ec8a5c46394b2564fb6d137736a22ac751cd6093ce61eb5",
                                          "typeString": "literal_string \"Invoker: pool repayment transfer failed\""
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        -18,
                                        -18
                                      ],
                                      "referencedDeclaration": -18,
                                      "type": "function (bool,string memory) pure",
                                      "value": "require"
                                    },
                                    "id": 277,
                                    "name": "Identifier",
                                    "src": "4784:7:0"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "bool",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1433,
                                          "type": "function (address,address,uint256) returns (bool)",
                                          "value": "transfer"
                                        },
                                        "id": 278,
                                        "name": "Identifier",
                                        "src": "4809:8:0"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 65,
                                          "type": "address",
                                          "value": "_scheduleTokenAddress"
                                        },
                                        "id": 279,
                                        "name": "Identifier",
                                        "src": "4839:21:0"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 267,
                                          "type": "address",
                                          "value": "repaymentAddress"
                                        },
                                        "id": 280,
                                        "name": "Identifier",
                                        "src": "4882:16:0"
                                      },
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 75,
                                              "type": "uint256[] storage ref",
                                              "value": "_scheduleRepayAmounts"
                                            },
                                            "id": 281,
                                            "name": "Identifier",
                                            "src": "4920:21:0"
                                          },
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 256,
                                              "type": "uint256",
                                              "value": "i"
                                            },
                                            "id": 282,
                                            "name": "Identifier",
                                            "src": "4942:1:0"
                                          }
                                        ],
                                        "id": 283,
                                        "name": "IndexAccess",
                                        "src": "4920:24:0"
                                      }
                                    ],
                                    "id": 284,
                                    "name": "FunctionCall",
                                    "src": "4809:153:0"
                                  },
                                  {
                                    "attributes": {
                                      "hexvalue": "496e766f6b65723a20706f6f6c2072657061796d656e74207472616e73666572206661696c6564",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "token": "string",
                                      "type": "literal_string \"Invoker: pool repayment transfer failed\"",
                                      "value": "Invoker: pool repayment transfer failed"
                                    },
                                    "id": 285,
                                    "name": "Literal",
                                    "src": "4980:41:0"
                                  }
                                ],
                                "id": 286,
                                "name": "FunctionCall",
                                "src": "4784:251:0"
                              }
                            ],
                            "id": 287,
                            "name": "ExpressionStatement",
                            "src": "4784:251:0"
                          }
                        ],
                        "id": 288,
                        "name": "Block",
                        "src": "4635:411:0"
                      }
                    ],
                    "id": 289,
                    "name": "ForStatement",
                    "src": "4576:470:0"
                  }
                ],
                "id": 290,
                "name": "Block",
                "src": "3384:1668:0"
              }
            ],
            "id": 291,
            "name": "FunctionDefinition",
            "src": "3352:1700:0"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "disburseReward",
              "scope": 1090,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 292,
                "name": "ParameterList",
                "src": "5081:2:0"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 293,
                "name": "ParameterList",
                "src": "5093:0:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        295
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "modifiedPoolReward",
                          "scope": 344,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 294,
                            "name": "ElementaryTypeName",
                            "src": "5108:7:0"
                          }
                        ],
                        "id": 295,
                        "name": "VariableDeclaration",
                        "src": "5108:26:0"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "==",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "address"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 45,
                                      "type": "mapping(address => address)",
                                      "value": "_poolRewardAddresses"
                                    },
                                    "id": 296,
                                    "name": "Identifier",
                                    "src": "5146:20:0"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 65,
                                      "type": "address",
                                      "value": "_scheduleTokenAddress"
                                    },
                                    "id": 297,
                                    "name": "Identifier",
                                    "src": "5167:21:0"
                                  }
                                ],
                                "id": 298,
                                "name": "IndexAccess",
                                "src": "5146:43:0"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "address payable",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(address)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "name": "address"
                                        },
                                        "id": 299,
                                        "name": "ElementaryTypeName",
                                        "src": "5193:7:0"
                                      }
                                    ],
                                    "id": 300,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "5193:7:0"
                                  },
                                  {
                                    "attributes": {
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 301,
                                    "name": "Literal",
                                    "src": "5201:1:0"
                                  }
                                ],
                                "id": 302,
                                "name": "FunctionCall",
                                "src": "5193:10:0"
                              }
                            ],
                            "id": 303,
                            "name": "BinaryOperation",
                            "src": "5146:57:0"
                          },
                          {
                            "attributes": {
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 304,
                            "name": "Literal",
                            "src": "5218:1:0"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 77,
                              "type": "uint256",
                              "value": "_schedulePoolReward"
                            },
                            "id": 305,
                            "name": "Identifier",
                            "src": "5234:19:0"
                          }
                        ],
                        "id": 306,
                        "name": "Conditional",
                        "src": "5146:107:0"
                      }
                    ],
                    "id": 307,
                    "name": "VariableDeclarationStatement",
                    "src": "5108:145:0"
                  },
                  {
                    "attributes": {},
                    "children": [
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": ">",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 295,
                              "type": "uint256",
                              "value": "modifiedPoolReward"
                            },
                            "id": 308,
                            "name": "Identifier",
                            "src": "5267:18:0"
                          },
                          {
                            "attributes": {
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 309,
                            "name": "Literal",
                            "src": "5288:1:0"
                          }
                        ],
                        "id": 310,
                        "name": "BinaryOperation",
                        "src": "5267:22:0"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "tuple()",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        {
                                          "typeIdentifier": "t_stringliteral_a14402ffc69be4e6b82325020f82601ff74332c147545eea7303d32c7c60db3b",
                                          "typeString": "literal_string \"Invoker: pool reward transfer failed\""
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        -18,
                                        -18
                                      ],
                                      "referencedDeclaration": -18,
                                      "type": "function (bool,string memory) pure",
                                      "value": "require"
                                    },
                                    "id": 311,
                                    "name": "Identifier",
                                    "src": "5305:7:0"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "bool",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1433,
                                          "type": "function (address,address,uint256) returns (bool)",
                                          "value": "transfer"
                                        },
                                        "id": 312,
                                        "name": "Identifier",
                                        "src": "5330:8:0"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 65,
                                          "type": "address",
                                          "value": "_scheduleTokenAddress"
                                        },
                                        "id": 313,
                                        "name": "Identifier",
                                        "src": "5360:21:0"
                                      },
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "address"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 45,
                                              "type": "mapping(address => address)",
                                              "value": "_poolRewardAddresses"
                                            },
                                            "id": 314,
                                            "name": "Identifier",
                                            "src": "5403:20:0"
                                          },
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 65,
                                              "type": "address",
                                              "value": "_scheduleTokenAddress"
                                            },
                                            "id": 315,
                                            "name": "Identifier",
                                            "src": "5424:21:0"
                                          }
                                        ],
                                        "id": 316,
                                        "name": "IndexAccess",
                                        "src": "5403:43:0"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 295,
                                          "type": "uint256",
                                          "value": "modifiedPoolReward"
                                        },
                                        "id": 317,
                                        "name": "Identifier",
                                        "src": "5468:18:0"
                                      }
                                    ],
                                    "id": 318,
                                    "name": "FunctionCall",
                                    "src": "5330:174:0"
                                  },
                                  {
                                    "attributes": {
                                      "hexvalue": "496e766f6b65723a20706f6f6c20726577617264207472616e73666572206661696c6564",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "token": "string",
                                      "type": "literal_string \"Invoker: pool reward transfer failed\"",
                                      "value": "Invoker: pool reward transfer failed"
                                    },
                                    "id": 319,
                                    "name": "Literal",
                                    "src": "5522:38:0"
                                  }
                                ],
                                "id": 320,
                                "name": "FunctionCall",
                                "src": "5305:269:0"
                              }
                            ],
                            "id": 321,
                            "name": "ExpressionStatement",
                            "src": "5305:269:0"
                          }
                        ],
                        "id": 322,
                        "name": "Block",
                        "src": "5291:294:0"
                      }
                    ],
                    "id": 323,
                    "name": "IfStatement",
                    "src": "5263:322:0"
                  },
                  {
                    "attributes": {},
                    "children": [
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": ">",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 79,
                              "type": "uint256",
                              "value": "_schedulePlatformReward"
                            },
                            "id": 324,
                            "name": "Identifier",
                            "src": "5598:23:0"
                          },
                          {
                            "attributes": {
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 325,
                            "name": "Literal",
                            "src": "5624:1:0"
                          }
                        ],
                        "id": 326,
                        "name": "BinaryOperation",
                        "src": "5598:27:0"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "tuple()",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        {
                                          "typeIdentifier": "t_stringliteral_b9e47d8deed26a3ed88d8bd46e8b5a5cb0f1b4a3d25b4fe1022a843e5150a565",
                                          "typeString": "literal_string \"Invoker: platform reward transfer failed\""
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        -18,
                                        -18
                                      ],
                                      "referencedDeclaration": -18,
                                      "type": "function (bool,string memory) pure",
                                      "value": "require"
                                    },
                                    "id": 327,
                                    "name": "Identifier",
                                    "src": "5641:7:0"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "bool",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1433,
                                          "type": "function (address,address,uint256) returns (bool)",
                                          "value": "transfer"
                                        },
                                        "id": 328,
                                        "name": "Identifier",
                                        "src": "5666:8:0"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 65,
                                          "type": "address",
                                          "value": "_scheduleTokenAddress"
                                        },
                                        "id": 329,
                                        "name": "Identifier",
                                        "src": "5696:21:0"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 49,
                                          "type": "address",
                                          "value": "_platformVaultAddress"
                                        },
                                        "id": 330,
                                        "name": "Identifier",
                                        "src": "5739:21:0"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 79,
                                          "type": "uint256",
                                          "value": "_schedulePlatformReward"
                                        },
                                        "id": 331,
                                        "name": "Identifier",
                                        "src": "5782:23:0"
                                      }
                                    ],
                                    "id": 332,
                                    "name": "FunctionCall",
                                    "src": "5666:157:0"
                                  },
                                  {
                                    "attributes": {
                                      "hexvalue": "496e766f6b65723a20706c6174666f726d20726577617264207472616e73666572206661696c6564",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "token": "string",
                                      "type": "literal_string \"Invoker: platform reward transfer failed\"",
                                      "value": "Invoker: platform reward transfer failed"
                                    },
                                    "id": 333,
                                    "name": "Literal",
                                    "src": "5841:42:0"
                                  }
                                ],
                                "id": 334,
                                "name": "FunctionCall",
                                "src": "5641:256:0"
                              }
                            ],
                            "id": 335,
                            "name": "ExpressionStatement",
                            "src": "5641:256:0"
                          }
                        ],
                        "id": 336,
                        "name": "Block",
                        "src": "5627:281:0"
                      }
                    ],
                    "id": 337,
                    "name": "IfStatement",
                    "src": "5594:314:0"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 34,
                              "type": "function (uint256,uint256,address)",
                              "value": "Reward"
                            },
                            "id": 338,
                            "name": "Identifier",
                            "src": "5922:6:0"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 295,
                              "type": "uint256",
                              "value": "modifiedPoolReward"
                            },
                            "id": 339,
                            "name": "Identifier",
                            "src": "5942:18:0"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 79,
                              "type": "uint256",
                              "value": "_schedulePlatformReward"
                            },
                            "id": 340,
                            "name": "Identifier",
                            "src": "5974:23:0"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 65,
                              "type": "address",
                              "value": "_scheduleTokenAddress"
                            },
                            "id": 341,
                            "name": "Identifier",
                            "src": "6011:21:0"
                          }
                        ],
                        "id": 342,
                        "name": "FunctionCall",
                        "src": "5922:120:0"
                      }
                    ],
                    "id": 343,
                    "name": "EmitStatement",
                    "src": "5917:125:0"
                  }
                ],
                "id": 344,
                "name": "Block",
                "src": "5093:956:0"
              }
            ],
            "id": 345,
            "name": "FunctionDefinition",
            "src": "5058:991:0"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "scheduleExecution",
              "scope": 1090,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "invokeSender",
                      "scope": 538,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 346,
                        "name": "ElementaryTypeName",
                        "src": "6135:7:0"
                      }
                    ],
                    "id": 347,
                    "name": "VariableDeclaration",
                    "src": "6135:20:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "invokeTo",
                      "scope": 538,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 348,
                        "name": "ElementaryTypeName",
                        "src": "6165:7:0"
                      }
                    ],
                    "id": 349,
                    "name": "VariableDeclaration",
                    "src": "6165:16:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "invokeValue",
                      "scope": 538,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 350,
                        "name": "ElementaryTypeName",
                        "src": "6191:7:0"
                      }
                    ],
                    "id": 351,
                    "name": "VariableDeclaration",
                    "src": "6191:19:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "invokeData",
                      "scope": 538,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 352,
                        "name": "ElementaryTypeName",
                        "src": "6220:5:0"
                      }
                    ],
                    "id": 353,
                    "name": "VariableDeclaration",
                    "src": "6220:23:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "tokenAddress",
                      "scope": 538,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 354,
                        "name": "ElementaryTypeName",
                        "src": "6253:7:0"
                      }
                    ],
                    "id": 355,
                    "name": "VariableDeclaration",
                    "src": "6253:20:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "tokenAmount",
                      "scope": 538,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 356,
                        "name": "ElementaryTypeName",
                        "src": "6283:7:0"
                      }
                    ],
                    "id": 357,
                    "name": "VariableDeclaration",
                    "src": "6283:19:0"
                  }
                ],
                "id": 358,
                "name": "ParameterList",
                "src": "6125:183:0"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 359,
                "name": "ParameterList",
                "src": "6318:0:0"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "address"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 55,
                              "type": "address",
                              "value": "_scheduleInvokeSender"
                            },
                            "id": 360,
                            "name": "Identifier",
                            "src": "6328:21:0"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 347,
                              "type": "address",
                              "value": "invokeSender"
                            },
                            "id": 361,
                            "name": "Identifier",
                            "src": "6352:12:0"
                          }
                        ],
                        "id": 362,
                        "name": "Assignment",
                        "src": "6328:36:0"
                      }
                    ],
                    "id": 363,
                    "name": "ExpressionStatement",
                    "src": "6328:36:0"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "address"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 57,
                              "type": "address",
                              "value": "_scheduleInvokeTo"
                            },
                            "id": 364,
                            "name": "Identifier",
                            "src": "6374:17:0"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 349,
                              "type": "address",
                              "value": "invokeTo"
                            },
                            "id": 365,
                            "name": "Identifier",
                            "src": "6394:8:0"
                          }
                        ],
                        "id": 366,
                        "name": "Assignment",
                        "src": "6374:28:0"
                      }
                    ],
                    "id": 367,
                    "name": "ExpressionStatement",
                    "src": "6374:28:0"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 59,
                              "type": "uint256",
                              "value": "_scheduleInvokeValue"
                            },
                            "id": 368,
                            "name": "Identifier",
                            "src": "6412:20:0"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 351,
                              "type": "uint256",
                              "value": "invokeValue"
                            },
                            "id": 369,
                            "name": "Identifier",
                            "src": "6435:11:0"
                          }
                        ],
                        "id": 370,
                        "name": "Assignment",
                        "src": "6412:34:0"
                      }
                    ],
                    "id": 371,
                    "name": "ExpressionStatement",
                    "src": "6412:34:0"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "bytes storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 61,
                              "type": "bytes storage ref",
                              "value": "_scheduleInvokeData"
                            },
                            "id": 372,
                            "name": "Identifier",
                            "src": "6456:19:0"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 353,
                              "type": "bytes memory",
                              "value": "invokeData"
                            },
                            "id": 373,
                            "name": "Identifier",
                            "src": "6478:10:0"
                          }
                        ],
                        "id": 374,
                        "name": "Assignment",
                        "src": "6456:32:0"
                      }
                    ],
                    "id": 375,
                    "name": "ExpressionStatement",
                    "src": "6456:32:0"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "address"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 65,
                              "type": "address",
                              "value": "_scheduleTokenAddress"
                            },
                            "id": 376,
                            "name": "Identifier",
                            "src": "6498:21:0"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 355,
                              "type": "address",
                              "value": "tokenAddress"
                            },
                            "id": 377,
                            "name": "Identifier",
                            "src": "6522:12:0"
                          }
                        ],
                        "id": 378,
                        "name": "Assignment",
                        "src": "6498:36:0"
                      }
                    ],
                    "id": 379,
                    "name": "ExpressionStatement",
                    "src": "6498:36:0"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 67,
                              "type": "uint256",
                              "value": "_scheduleTokenAmount"
                            },
                            "id": 380,
                            "name": "Identifier",
                            "src": "6544:20:0"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 357,
                              "type": "uint256",
                              "value": "tokenAmount"
                            },
                            "id": 381,
                            "name": "Identifier",
                            "src": "6567:11:0"
                          }
                        ],
                        "id": 382,
                        "name": "Assignment",
                        "src": "6544:34:0"
                      }
                    ],
                    "id": 383,
                    "name": "ExpressionStatement",
                    "src": "6544:34:0"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 53,
                              "type": "uint256",
                              "value": "_schedulePriorTokenAmount"
                            },
                            "id": 384,
                            "name": "Identifier",
                            "src": "6588:25:0"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint256",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "sub",
                                  "referencedDeclaration": 5434,
                                  "type": "function (uint256,uint256) pure returns (uint256)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "uint256",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1463,
                                          "type": "function (address) view returns (uint256)",
                                          "value": "balanceOf"
                                        },
                                        "id": 385,
                                        "name": "Identifier",
                                        "src": "6616:9:0"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 355,
                                          "type": "address",
                                          "value": "tokenAddress"
                                        },
                                        "id": 386,
                                        "name": "Identifier",
                                        "src": "6626:12:0"
                                      }
                                    ],
                                    "id": 387,
                                    "name": "FunctionCall",
                                    "src": "6616:23:0"
                                  }
                                ],
                                "id": 388,
                                "name": "MemberAccess",
                                "src": "6616:27:0"
                              },
                              {
                                "attributes": {
                                  "arguments": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "uint256",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        null
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 912,
                                      "type": "function () view returns (uint256)",
                                      "value": "payableReserveAdjustment"
                                    },
                                    "id": 389,
                                    "name": "Identifier",
                                    "src": "6657:24:0"
                                  }
                                ],
                                "id": 390,
                                "name": "FunctionCall",
                                "src": "6657:26:0"
                              }
                            ],
                            "id": 391,
                            "name": "FunctionCall",
                            "src": "6616:77:0"
                          }
                        ],
                        "id": 392,
                        "name": "Assignment",
                        "src": "6588:105:0"
                      }
                    ],
                    "id": 393,
                    "name": "ExpressionStatement",
                    "src": "6588:105:0"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        395
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "tokenAmountLeft",
                          "scope": 537,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 394,
                            "name": "ElementaryTypeName",
                            "src": "6704:7:0"
                          }
                        ],
                        "id": 395,
                        "name": "VariableDeclaration",
                        "src": "6704:23:0"
                      },
                      {
                        "attributes": {
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 357,
                          "type": "uint256",
                          "value": "tokenAmount"
                        },
                        "id": 396,
                        "name": "Identifier",
                        "src": "6730:11:0"
                      }
                    ],
                    "id": 397,
                    "name": "VariableDeclarationStatement",
                    "src": "6704:37:0"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "assignments": [
                            399
                          ]
                        },
                        "children": [
                          {
                            "attributes": {
                              "constant": false,
                              "mutability": "mutable",
                              "name": "i",
                              "scope": 503,
                              "stateVariable": false,
                              "storageLocation": "default",
                              "type": "uint256",
                              "visibility": "internal"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "name": "uint256",
                                  "type": "uint256"
                                },
                                "id": 398,
                                "name": "ElementaryTypeName",
                                "src": "6756:7:0"
                              }
                            ],
                            "id": 399,
                            "name": "VariableDeclaration",
                            "src": "6756:9:0"
                          },
                          {
                            "attributes": {
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 400,
                            "name": "Literal",
                            "src": "6768:1:0"
                          }
                        ],
                        "id": 401,
                        "name": "VariableDeclarationStatement",
                        "src": "6756:13:0"
                      },
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "<",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 399,
                              "type": "uint256",
                              "value": "i"
                            },
                            "id": 402,
                            "name": "Identifier",
                            "src": "6771:1:0"
                          },
                          {
                            "attributes": {
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint256",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 985,
                                  "type": "function () view returns (uint256)",
                                  "value": "liquidityProxiesForToken"
                                },
                                "id": 403,
                                "name": "Identifier",
                                "src": "6775:24:0"
                              }
                            ],
                            "id": 404,
                            "name": "FunctionCall",
                            "src": "6775:26:0"
                          }
                        ],
                        "id": 405,
                        "name": "BinaryOperation",
                        "src": "6771:30:0"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "++",
                              "prefix": false,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 399,
                                  "type": "uint256",
                                  "value": "i"
                                },
                                "id": 406,
                                "name": "Identifier",
                                "src": "6803:1:0"
                              }
                            ],
                            "id": 407,
                            "name": "UnaryOperation",
                            "src": "6803:3:0"
                          }
                        ],
                        "id": 408,
                        "name": "ExpressionStatement",
                        "src": "6803:3:0"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "assignments": [
                                410
                              ]
                            },
                            "children": [
                              {
                                "attributes": {
                                  "constant": false,
                                  "mutability": "mutable",
                                  "name": "proxy",
                                  "scope": 502,
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "type": "contract ILiquidityProxy",
                                  "visibility": "internal"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "ILiquidityProxy",
                                      "referencedDeclaration": 2148,
                                      "type": "contract ILiquidityProxy"
                                    },
                                    "id": 409,
                                    "name": "UserDefinedTypeName",
                                    "src": "6822:15:0"
                                  }
                                ],
                                "id": 410,
                                "name": "VariableDeclaration",
                                "src": "6822:21:0"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "contract ILiquidityProxy",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2148,
                                      "type": "type(contract ILiquidityProxy)",
                                      "value": "ILiquidityProxy"
                                    },
                                    "id": 411,
                                    "name": "Identifier",
                                    "src": "6846:15:0"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "address",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 974,
                                          "type": "function (uint256) view returns (address)",
                                          "value": "liquidityProxy"
                                        },
                                        "id": 412,
                                        "name": "Identifier",
                                        "src": "6862:14:0"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 399,
                                          "type": "uint256",
                                          "value": "i"
                                        },
                                        "id": 413,
                                        "name": "Identifier",
                                        "src": "6877:1:0"
                                      }
                                    ],
                                    "id": 414,
                                    "name": "FunctionCall",
                                    "src": "6862:17:0"
                                  }
                                ],
                                "id": 415,
                                "name": "FunctionCall",
                                "src": "6846:34:0"
                              }
                            ],
                            "id": 416,
                            "name": "VariableDeclarationStatement",
                            "src": "6822:58:0"
                          },
                          {
                            "attributes": {
                              "assignments": [
                                418
                              ]
                            },
                            "children": [
                              {
                                "attributes": {
                                  "constant": false,
                                  "mutability": "mutable",
                                  "name": "totalReserve",
                                  "scope": 502,
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "type": "uint256",
                                  "visibility": "internal"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "uint256",
                                      "type": "uint256"
                                    },
                                    "id": 417,
                                    "name": "ElementaryTypeName",
                                    "src": "6894:7:0"
                                  }
                                ],
                                "id": 418,
                                "name": "VariableDeclaration",
                                "src": "6894:20:0"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "uint256",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "getTotalReserve",
                                      "referencedDeclaration": 2124,
                                      "type": "function (address) view external returns (uint256)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 410,
                                          "type": "contract ILiquidityProxy",
                                          "value": "proxy"
                                        },
                                        "id": 419,
                                        "name": "Identifier",
                                        "src": "6917:5:0"
                                      }
                                    ],
                                    "id": 420,
                                    "name": "MemberAccess",
                                    "src": "6917:21:0"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 355,
                                      "type": "address",
                                      "value": "tokenAddress"
                                    },
                                    "id": 421,
                                    "name": "Identifier",
                                    "src": "6939:12:0"
                                  }
                                ],
                                "id": 422,
                                "name": "FunctionCall",
                                "src": "6917:35:0"
                              }
                            ],
                            "id": 423,
                            "name": "VariableDeclarationStatement",
                            "src": "6894:58:0"
                          },
                          {
                            "attributes": {},
                            "children": [
                              {
                                "attributes": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "==",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 418,
                                      "type": "uint256",
                                      "value": "totalReserve"
                                    },
                                    "id": 424,
                                    "name": "Identifier",
                                    "src": "6970:12:0"
                                  },
                                  {
                                    "attributes": {
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 425,
                                    "name": "Literal",
                                    "src": "6986:1:0"
                                  }
                                ],
                                "id": 426,
                                "name": "BinaryOperation",
                                "src": "6970:17:0"
                              },
                              {
                                "children": [
                                  {
                                    "id": 427,
                                    "name": "Continue",
                                    "src": "7007:8:0"
                                  }
                                ],
                                "id": 428,
                                "name": "Block",
                                "src": "6989:41:0"
                              }
                            ],
                            "id": 429,
                            "name": "IfStatement",
                            "src": "6966:64:0"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "<=",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 395,
                                      "type": "uint256",
                                      "value": "tokenAmountLeft"
                                    },
                                    "id": 430,
                                    "name": "Identifier",
                                    "src": "7047:15:0"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 418,
                                      "type": "uint256",
                                      "value": "totalReserve"
                                    },
                                    "id": 431,
                                    "name": "Identifier",
                                    "src": "7066:12:0"
                                  }
                                ],
                                "id": 432,
                                "name": "BinaryOperation",
                                "src": "7047:31:0"
                              },
                              {
                                "children": [
                                  {
                                    "attributes": {
                                      "assignments": [
                                        434
                                      ]
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "constant": false,
                                          "mutability": "mutable",
                                          "name": "proxyRepayAmount",
                                          "scope": 465,
                                          "stateVariable": false,
                                          "storageLocation": "default",
                                          "type": "uint256",
                                          "visibility": "internal"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "name": "uint256",
                                              "type": "uint256"
                                            },
                                            "id": 433,
                                            "name": "ElementaryTypeName",
                                            "src": "7098:7:0"
                                          }
                                        ],
                                        "id": 434,
                                        "name": "VariableDeclaration",
                                        "src": "7098:24:0"
                                      },
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "tryCall": false,
                                          "type": "uint256",
                                          "type_conversion": false
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "getRepaymentAmount",
                                              "referencedDeclaration": 2140,
                                              "type": "function (address,uint256) view external returns (uint256)"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 410,
                                                  "type": "contract ILiquidityProxy",
                                                  "value": "proxy"
                                                },
                                                "id": 435,
                                                "name": "Identifier",
                                                "src": "7125:5:0"
                                              }
                                            ],
                                            "id": 436,
                                            "name": "MemberAccess",
                                            "src": "7125:24:0"
                                          },
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 355,
                                              "type": "address",
                                              "value": "tokenAddress"
                                            },
                                            "id": 437,
                                            "name": "Identifier",
                                            "src": "7171:12:0"
                                          },
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 395,
                                              "type": "uint256",
                                              "value": "tokenAmountLeft"
                                            },
                                            "id": 438,
                                            "name": "Identifier",
                                            "src": "7205:15:0"
                                          }
                                        ],
                                        "id": 439,
                                        "name": "FunctionCall",
                                        "src": "7125:113:0"
                                      }
                                    ],
                                    "id": 440,
                                    "name": "VariableDeclarationStatement",
                                    "src": "7098:140:0"
                                  },
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "tryCall": false,
                                          "type": "tuple()",
                                          "type_conversion": false
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "push",
                                              "type": "function (uint256)"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 70,
                                                  "type": "uint256[] storage ref",
                                                  "value": "_scheduleTokenAmounts"
                                                },
                                                "id": 441,
                                                "name": "Identifier",
                                                "src": "7256:21:0"
                                              }
                                            ],
                                            "id": 443,
                                            "name": "MemberAccess",
                                            "src": "7256:26:0"
                                          },
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 395,
                                              "type": "uint256",
                                              "value": "tokenAmountLeft"
                                            },
                                            "id": 444,
                                            "name": "Identifier",
                                            "src": "7283:15:0"
                                          }
                                        ],
                                        "id": 445,
                                        "name": "FunctionCall",
                                        "src": "7256:43:0"
                                      }
                                    ],
                                    "id": 446,
                                    "name": "ExpressionStatement",
                                    "src": "7256:43:0"
                                  },
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "tryCall": false,
                                          "type": "tuple()",
                                          "type_conversion": false
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "push",
                                              "type": "function (uint256)"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 75,
                                                  "type": "uint256[] storage ref",
                                                  "value": "_scheduleRepayAmounts"
                                                },
                                                "id": 447,
                                                "name": "Identifier",
                                                "src": "7317:21:0"
                                              }
                                            ],
                                            "id": 449,
                                            "name": "MemberAccess",
                                            "src": "7317:26:0"
                                          },
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 434,
                                              "type": "uint256",
                                              "value": "proxyRepayAmount"
                                            },
                                            "id": 450,
                                            "name": "Identifier",
                                            "src": "7344:16:0"
                                          }
                                        ],
                                        "id": 451,
                                        "name": "FunctionCall",
                                        "src": "7317:44:0"
                                      }
                                    ],
                                    "id": 452,
                                    "name": "ExpressionStatement",
                                    "src": "7317:44:0"
                                  },
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "=",
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 72,
                                              "type": "uint256",
                                              "value": "_scheduleRepayAmount"
                                            },
                                            "id": 453,
                                            "name": "Identifier",
                                            "src": "7379:20:0"
                                          },
                                          {
                                            "attributes": {
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "isStructConstructorCall": false,
                                              "lValueRequested": false,
                                              "names": [
                                                null
                                              ],
                                              "tryCall": false,
                                              "type": "uint256",
                                              "type_conversion": false
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  ],
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "member_name": "add",
                                                  "referencedDeclaration": 5417,
                                                  "type": "function (uint256,uint256) pure returns (uint256)"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 72,
                                                      "type": "uint256",
                                                      "value": "_scheduleRepayAmount"
                                                    },
                                                    "id": 454,
                                                    "name": "Identifier",
                                                    "src": "7402:20:0"
                                                  }
                                                ],
                                                "id": 455,
                                                "name": "MemberAccess",
                                                "src": "7402:24:0"
                                              },
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 434,
                                                  "type": "uint256",
                                                  "value": "proxyRepayAmount"
                                                },
                                                "id": 456,
                                                "name": "Identifier",
                                                "src": "7448:16:0"
                                              }
                                            ],
                                            "id": 457,
                                            "name": "FunctionCall",
                                            "src": "7402:80:0"
                                          }
                                        ],
                                        "id": 458,
                                        "name": "Assignment",
                                        "src": "7379:103:0"
                                      }
                                    ],
                                    "id": 459,
                                    "name": "ExpressionStatement",
                                    "src": "7379:103:0"
                                  },
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "=",
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 395,
                                              "type": "uint256",
                                              "value": "tokenAmountLeft"
                                            },
                                            "id": 460,
                                            "name": "Identifier",
                                            "src": "7500:15:0"
                                          },
                                          {
                                            "attributes": {
                                              "hexvalue": "30",
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "token": "number",
                                              "type": "int_const 0",
                                              "value": "0"
                                            },
                                            "id": 461,
                                            "name": "Literal",
                                            "src": "7518:1:0"
                                          }
                                        ],
                                        "id": 462,
                                        "name": "Assignment",
                                        "src": "7500:19:0"
                                      }
                                    ],
                                    "id": 463,
                                    "name": "ExpressionStatement",
                                    "src": "7500:19:0"
                                  },
                                  {
                                    "id": 464,
                                    "name": "Break",
                                    "src": "7537:5:0"
                                  }
                                ],
                                "id": 465,
                                "name": "Block",
                                "src": "7080:477:0"
                              },
                              {
                                "children": [
                                  {
                                    "attributes": {
                                      "assignments": [
                                        467
                                      ]
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "constant": false,
                                          "mutability": "mutable",
                                          "name": "proxyRepayAmount",
                                          "scope": 500,
                                          "stateVariable": false,
                                          "storageLocation": "default",
                                          "type": "uint256",
                                          "visibility": "internal"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "name": "uint256",
                                              "type": "uint256"
                                            },
                                            "id": 466,
                                            "name": "ElementaryTypeName",
                                            "src": "7581:7:0"
                                          }
                                        ],
                                        "id": 467,
                                        "name": "VariableDeclaration",
                                        "src": "7581:24:0"
                                      },
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "tryCall": false,
                                          "type": "uint256",
                                          "type_conversion": false
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "getRepaymentAmount",
                                              "referencedDeclaration": 2140,
                                              "type": "function (address,uint256) view external returns (uint256)"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 410,
                                                  "type": "contract ILiquidityProxy",
                                                  "value": "proxy"
                                                },
                                                "id": 468,
                                                "name": "Identifier",
                                                "src": "7608:5:0"
                                              }
                                            ],
                                            "id": 469,
                                            "name": "MemberAccess",
                                            "src": "7608:24:0"
                                          },
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 355,
                                              "type": "address",
                                              "value": "tokenAddress"
                                            },
                                            "id": 470,
                                            "name": "Identifier",
                                            "src": "7654:12:0"
                                          },
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 418,
                                              "type": "uint256",
                                              "value": "totalReserve"
                                            },
                                            "id": 471,
                                            "name": "Identifier",
                                            "src": "7688:12:0"
                                          }
                                        ],
                                        "id": 472,
                                        "name": "FunctionCall",
                                        "src": "7608:110:0"
                                      }
                                    ],
                                    "id": 473,
                                    "name": "VariableDeclarationStatement",
                                    "src": "7581:137:0"
                                  },
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "tryCall": false,
                                          "type": "tuple()",
                                          "type_conversion": false
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "push",
                                              "type": "function (uint256)"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 70,
                                                  "type": "uint256[] storage ref",
                                                  "value": "_scheduleTokenAmounts"
                                                },
                                                "id": 474,
                                                "name": "Identifier",
                                                "src": "7736:21:0"
                                              }
                                            ],
                                            "id": 476,
                                            "name": "MemberAccess",
                                            "src": "7736:26:0"
                                          },
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 418,
                                              "type": "uint256",
                                              "value": "totalReserve"
                                            },
                                            "id": 477,
                                            "name": "Identifier",
                                            "src": "7763:12:0"
                                          }
                                        ],
                                        "id": 478,
                                        "name": "FunctionCall",
                                        "src": "7736:40:0"
                                      }
                                    ],
                                    "id": 479,
                                    "name": "ExpressionStatement",
                                    "src": "7736:40:0"
                                  },
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "tryCall": false,
                                          "type": "tuple()",
                                          "type_conversion": false
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "push",
                                              "type": "function (uint256)"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 75,
                                                  "type": "uint256[] storage ref",
                                                  "value": "_scheduleRepayAmounts"
                                                },
                                                "id": 480,
                                                "name": "Identifier",
                                                "src": "7794:21:0"
                                              }
                                            ],
                                            "id": 482,
                                            "name": "MemberAccess",
                                            "src": "7794:26:0"
                                          },
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 467,
                                              "type": "uint256",
                                              "value": "proxyRepayAmount"
                                            },
                                            "id": 483,
                                            "name": "Identifier",
                                            "src": "7821:16:0"
                                          }
                                        ],
                                        "id": 484,
                                        "name": "FunctionCall",
                                        "src": "7794:44:0"
                                      }
                                    ],
                                    "id": 485,
                                    "name": "ExpressionStatement",
                                    "src": "7794:44:0"
                                  },
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "=",
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 72,
                                              "type": "uint256",
                                              "value": "_scheduleRepayAmount"
                                            },
                                            "id": 486,
                                            "name": "Identifier",
                                            "src": "7856:20:0"
                                          },
                                          {
                                            "attributes": {
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "isStructConstructorCall": false,
                                              "lValueRequested": false,
                                              "names": [
                                                null
                                              ],
                                              "tryCall": false,
                                              "type": "uint256",
                                              "type_conversion": false
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  ],
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "member_name": "add",
                                                  "referencedDeclaration": 5417,
                                                  "type": "function (uint256,uint256) pure returns (uint256)"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 72,
                                                      "type": "uint256",
                                                      "value": "_scheduleRepayAmount"
                                                    },
                                                    "id": 487,
                                                    "name": "Identifier",
                                                    "src": "7879:20:0"
                                                  }
                                                ],
                                                "id": 488,
                                                "name": "MemberAccess",
                                                "src": "7879:24:0"
                                              },
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 467,
                                                  "type": "uint256",
                                                  "value": "proxyRepayAmount"
                                                },
                                                "id": 489,
                                                "name": "Identifier",
                                                "src": "7925:16:0"
                                              }
                                            ],
                                            "id": 490,
                                            "name": "FunctionCall",
                                            "src": "7879:80:0"
                                          }
                                        ],
                                        "id": 491,
                                        "name": "Assignment",
                                        "src": "7856:103:0"
                                      }
                                    ],
                                    "id": 492,
                                    "name": "ExpressionStatement",
                                    "src": "7856:103:0"
                                  },
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "=",
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 395,
                                              "type": "uint256",
                                              "value": "tokenAmountLeft"
                                            },
                                            "id": 493,
                                            "name": "Identifier",
                                            "src": "7977:15:0"
                                          },
                                          {
                                            "attributes": {
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "isStructConstructorCall": false,
                                              "lValueRequested": false,
                                              "names": [
                                                null
                                              ],
                                              "tryCall": false,
                                              "type": "uint256",
                                              "type_conversion": false
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  ],
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "member_name": "sub",
                                                  "referencedDeclaration": 5434,
                                                  "type": "function (uint256,uint256) pure returns (uint256)"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 395,
                                                      "type": "uint256",
                                                      "value": "tokenAmountLeft"
                                                    },
                                                    "id": 494,
                                                    "name": "Identifier",
                                                    "src": "7995:15:0"
                                                  }
                                                ],
                                                "id": 495,
                                                "name": "MemberAccess",
                                                "src": "7995:19:0"
                                              },
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 418,
                                                  "type": "uint256",
                                                  "value": "totalReserve"
                                                },
                                                "id": 496,
                                                "name": "Identifier",
                                                "src": "8015:12:0"
                                              }
                                            ],
                                            "id": 497,
                                            "name": "FunctionCall",
                                            "src": "7995:33:0"
                                          }
                                        ],
                                        "id": 498,
                                        "name": "Assignment",
                                        "src": "7977:51:0"
                                      }
                                    ],
                                    "id": 499,
                                    "name": "ExpressionStatement",
                                    "src": "7977:51:0"
                                  }
                                ],
                                "id": 500,
                                "name": "Block",
                                "src": "7563:480:0"
                              }
                            ],
                            "id": 501,
                            "name": "IfStatement",
                            "src": "7043:1000:0"
                          }
                        ],
                        "id": 502,
                        "name": "Block",
                        "src": "6808:1245:0"
                      }
                    ],
                    "id": 503,
                    "name": "ForStatement",
                    "src": "6751:1302:0"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_b783feb36669a3442e41b851f482f2c03ebc4f566a0f6a9ba0340aacace6bd1b",
                                  "typeString": "literal_string \"Invoker: not enough liquidity\""
                                }
                              ],
                              "overloadedDeclarations": [
                                -18,
                                -18
                              ],
                              "referencedDeclaration": -18,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 504,
                            "name": "Identifier",
                            "src": "8062:7:0"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "==",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 395,
                                  "type": "uint256",
                                  "value": "tokenAmountLeft"
                                },
                                "id": 505,
                                "name": "Identifier",
                                "src": "8070:15:0"
                              },
                              {
                                "attributes": {
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 506,
                                "name": "Literal",
                                "src": "8089:1:0"
                              }
                            ],
                            "id": 507,
                            "name": "BinaryOperation",
                            "src": "8070:20:0"
                          },
                          {
                            "attributes": {
                              "hexvalue": "496e766f6b65723a206e6f7420656e6f756768206c6971756964697479",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "string",
                              "type": "literal_string \"Invoker: not enough liquidity\"",
                              "value": "Invoker: not enough liquidity"
                            },
                            "id": 508,
                            "name": "Literal",
                            "src": "8092:31:0"
                          }
                        ],
                        "id": 509,
                        "name": "FunctionCall",
                        "src": "8062:62:0"
                      }
                    ],
                    "id": 510,
                    "name": "ExpressionStatement",
                    "src": "8062:62:0"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 77,
                              "type": "uint256",
                              "value": "_schedulePoolReward"
                            },
                            "id": 511,
                            "name": "Identifier",
                            "src": "8135:19:0"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint256",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 780,
                                  "type": "function (uint256) view returns (uint256)",
                                  "value": "calculatePoolReward"
                                },
                                "id": 512,
                                "name": "Identifier",
                                "src": "8157:19:0"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 67,
                                  "type": "uint256",
                                  "value": "_scheduleTokenAmount"
                                },
                                "id": 513,
                                "name": "Identifier",
                                "src": "8177:20:0"
                              }
                            ],
                            "id": 514,
                            "name": "FunctionCall",
                            "src": "8157:41:0"
                          }
                        ],
                        "id": 515,
                        "name": "Assignment",
                        "src": "8135:63:0"
                      }
                    ],
                    "id": 516,
                    "name": "ExpressionStatement",
                    "src": "8135:63:0"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 79,
                              "type": "uint256",
                              "value": "_schedulePlatformReward"
                            },
                            "id": 517,
                            "name": "Identifier",
                            "src": "8208:23:0"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint256",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 796,
                                  "type": "function (uint256) view returns (uint256)",
                                  "value": "calculatePlatformReward"
                                },
                                "id": 518,
                                "name": "Identifier",
                                "src": "8234:23:0"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 67,
                                  "type": "uint256",
                                  "value": "_scheduleTokenAmount"
                                },
                                "id": 519,
                                "name": "Identifier",
                                "src": "8258:20:0"
                              }
                            ],
                            "id": 520,
                            "name": "FunctionCall",
                            "src": "8234:45:0"
                          }
                        ],
                        "id": 521,
                        "name": "Assignment",
                        "src": "8208:71:0"
                      }
                    ],
                    "id": 522,
                    "name": "ExpressionStatement",
                    "src": "8208:71:0"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 72,
                              "type": "uint256",
                              "value": "_scheduleRepayAmount"
                            },
                            "id": 523,
                            "name": "Identifier",
                            "src": "8289:20:0"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint256",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "add",
                                  "referencedDeclaration": 5417,
                                  "type": "function (uint256,uint256) pure returns (uint256)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "uint256",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "add",
                                          "referencedDeclaration": 5417,
                                          "type": "function (uint256,uint256) pure returns (uint256)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 72,
                                              "type": "uint256",
                                              "value": "_scheduleRepayAmount"
                                            },
                                            "id": 524,
                                            "name": "Identifier",
                                            "src": "8312:20:0"
                                          }
                                        ],
                                        "id": 525,
                                        "name": "MemberAccess",
                                        "src": "8312:37:0"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 77,
                                          "type": "uint256",
                                          "value": "_schedulePoolReward"
                                        },
                                        "id": 526,
                                        "name": "Identifier",
                                        "src": "8350:19:0"
                                      }
                                    ],
                                    "id": 527,
                                    "name": "FunctionCall",
                                    "src": "8312:58:0"
                                  }
                                ],
                                "id": 528,
                                "name": "MemberAccess",
                                "src": "8312:75:0"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 79,
                                  "type": "uint256",
                                  "value": "_schedulePlatformReward"
                                },
                                "id": 529,
                                "name": "Identifier",
                                "src": "8388:23:0"
                              }
                            ],
                            "id": 530,
                            "name": "FunctionCall",
                            "src": "8312:100:0"
                          }
                        ],
                        "id": 531,
                        "name": "Assignment",
                        "src": "8289:123:0"
                      }
                    ],
                    "id": 532,
                    "name": "ExpressionStatement",
                    "src": "8289:123:0"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 51,
                              "type": "bool",
                              "value": "_scheduled"
                            },
                            "id": 533,
                            "name": "Identifier",
                            "src": "8423:10:0"
                          },
                          {
                            "attributes": {
                              "hexvalue": "74727565",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "bool",
                              "type": "bool",
                              "value": "true"
                            },
                            "id": 534,
                            "name": "Literal",
                            "src": "8436:4:0"
                          }
                        ],
                        "id": 535,
                        "name": "Assignment",
                        "src": "8423:17:0"
                      }
                    ],
                    "id": 536,
                    "name": "ExpressionStatement",
                    "src": "8423:17:0"
                  }
                ],
                "id": 537,
                "name": "Block",
                "src": "6318:2129:0"
              }
            ],
            "id": 538,
            "name": "FunctionDefinition",
            "src": "6099:2348:0"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "cleanSchedule",
              "scope": 1090,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 539,
                "name": "ParameterList",
                "src": "8475:2:0"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 540,
                "name": "ParameterList",
                "src": "8487:0:0"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 51,
                              "type": "bool",
                              "value": "_scheduled"
                            },
                            "id": 541,
                            "name": "Identifier",
                            "src": "8497:10:0"
                          },
                          {
                            "attributes": {
                              "hexvalue": "66616c7365",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "bool",
                              "type": "bool",
                              "value": "false"
                            },
                            "id": 542,
                            "name": "Literal",
                            "src": "8510:5:0"
                          }
                        ],
                        "id": 543,
                        "name": "Assignment",
                        "src": "8497:18:0"
                      }
                    ],
                    "id": 544,
                    "name": "ExpressionStatement",
                    "src": "8497:18:0"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 53,
                              "type": "uint256",
                              "value": "_schedulePriorTokenAmount"
                            },
                            "id": 545,
                            "name": "Identifier",
                            "src": "8525:25:0"
                          },
                          {
                            "attributes": {
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 546,
                            "name": "Literal",
                            "src": "8553:1:0"
                          }
                        ],
                        "id": 547,
                        "name": "Assignment",
                        "src": "8525:29:0"
                      }
                    ],
                    "id": 548,
                    "name": "ExpressionStatement",
                    "src": "8525:29:0"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "address"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 55,
                              "type": "address",
                              "value": "_scheduleInvokeSender"
                            },
                            "id": 549,
                            "name": "Identifier",
                            "src": "8564:21:0"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "address payable",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(address)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "address"
                                    },
                                    "id": 550,
                                    "name": "ElementaryTypeName",
                                    "src": "8588:7:0"
                                  }
                                ],
                                "id": 551,
                                "name": "ElementaryTypeNameExpression",
                                "src": "8588:7:0"
                              },
                              {
                                "attributes": {
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 552,
                                "name": "Literal",
                                "src": "8596:1:0"
                              }
                            ],
                            "id": 553,
                            "name": "FunctionCall",
                            "src": "8588:10:0"
                          }
                        ],
                        "id": 554,
                        "name": "Assignment",
                        "src": "8564:34:0"
                      }
                    ],
                    "id": 555,
                    "name": "ExpressionStatement",
                    "src": "8564:34:0"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "address"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 57,
                              "type": "address",
                              "value": "_scheduleInvokeTo"
                            },
                            "id": 556,
                            "name": "Identifier",
                            "src": "8608:17:0"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "address payable",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(address)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "address"
                                    },
                                    "id": 557,
                                    "name": "ElementaryTypeName",
                                    "src": "8628:7:0"
                                  }
                                ],
                                "id": 558,
                                "name": "ElementaryTypeNameExpression",
                                "src": "8628:7:0"
                              },
                              {
                                "attributes": {
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 559,
                                "name": "Literal",
                                "src": "8636:1:0"
                              }
                            ],
                            "id": 560,
                            "name": "FunctionCall",
                            "src": "8628:10:0"
                          }
                        ],
                        "id": 561,
                        "name": "Assignment",
                        "src": "8608:30:0"
                      }
                    ],
                    "id": 562,
                    "name": "ExpressionStatement",
                    "src": "8608:30:0"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 59,
                              "type": "uint256",
                              "value": "_scheduleInvokeValue"
                            },
                            "id": 563,
                            "name": "Identifier",
                            "src": "8648:20:0"
                          },
                          {
                            "attributes": {
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 564,
                            "name": "Literal",
                            "src": "8671:1:0"
                          }
                        ],
                        "id": 565,
                        "name": "Assignment",
                        "src": "8648:24:0"
                      }
                    ],
                    "id": 566,
                    "name": "ExpressionStatement",
                    "src": "8648:24:0"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "delete",
                          "prefix": true,
                          "type": "tuple()"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 61,
                              "type": "bytes storage ref",
                              "value": "_scheduleInvokeData"
                            },
                            "id": 567,
                            "name": "Identifier",
                            "src": "8689:19:0"
                          }
                        ],
                        "id": 568,
                        "name": "UnaryOperation",
                        "src": "8682:26:0"
                      }
                    ],
                    "id": 569,
                    "name": "ExpressionStatement",
                    "src": "8682:26:0"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 63,
                              "type": "uint256",
                              "value": "_scheduleIndex"
                            },
                            "id": 570,
                            "name": "Identifier",
                            "src": "8718:14:0"
                          },
                          {
                            "attributes": {
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 571,
                            "name": "Literal",
                            "src": "8735:1:0"
                          }
                        ],
                        "id": 572,
                        "name": "Assignment",
                        "src": "8718:18:0"
                      }
                    ],
                    "id": 573,
                    "name": "ExpressionStatement",
                    "src": "8718:18:0"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "address"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 65,
                              "type": "address",
                              "value": "_scheduleTokenAddress"
                            },
                            "id": 574,
                            "name": "Identifier",
                            "src": "8746:21:0"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "address payable",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(address)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "address"
                                    },
                                    "id": 575,
                                    "name": "ElementaryTypeName",
                                    "src": "8770:7:0"
                                  }
                                ],
                                "id": 576,
                                "name": "ElementaryTypeNameExpression",
                                "src": "8770:7:0"
                              },
                              {
                                "attributes": {
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 577,
                                "name": "Literal",
                                "src": "8778:1:0"
                              }
                            ],
                            "id": 578,
                            "name": "FunctionCall",
                            "src": "8770:10:0"
                          }
                        ],
                        "id": 579,
                        "name": "Assignment",
                        "src": "8746:34:0"
                      }
                    ],
                    "id": 580,
                    "name": "ExpressionStatement",
                    "src": "8746:34:0"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 67,
                              "type": "uint256",
                              "value": "_scheduleTokenAmount"
                            },
                            "id": 581,
                            "name": "Identifier",
                            "src": "8790:20:0"
                          },
                          {
                            "attributes": {
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 582,
                            "name": "Literal",
                            "src": "8813:1:0"
                          }
                        ],
                        "id": 583,
                        "name": "Assignment",
                        "src": "8790:24:0"
                      }
                    ],
                    "id": 584,
                    "name": "ExpressionStatement",
                    "src": "8790:24:0"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "delete",
                          "prefix": true,
                          "type": "tuple()"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 70,
                              "type": "uint256[] storage ref",
                              "value": "_scheduleTokenAmounts"
                            },
                            "id": 585,
                            "name": "Identifier",
                            "src": "8831:21:0"
                          }
                        ],
                        "id": 586,
                        "name": "UnaryOperation",
                        "src": "8824:28:0"
                      }
                    ],
                    "id": 587,
                    "name": "ExpressionStatement",
                    "src": "8824:28:0"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 72,
                              "type": "uint256",
                              "value": "_scheduleRepayAmount"
                            },
                            "id": 588,
                            "name": "Identifier",
                            "src": "8862:20:0"
                          },
                          {
                            "attributes": {
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 589,
                            "name": "Literal",
                            "src": "8885:1:0"
                          }
                        ],
                        "id": 590,
                        "name": "Assignment",
                        "src": "8862:24:0"
                      }
                    ],
                    "id": 591,
                    "name": "ExpressionStatement",
                    "src": "8862:24:0"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "delete",
                          "prefix": true,
                          "type": "tuple()"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 75,
                              "type": "uint256[] storage ref",
                              "value": "_scheduleRepayAmounts"
                            },
                            "id": 592,
                            "name": "Identifier",
                            "src": "8903:21:0"
                          }
                        ],
                        "id": 593,
                        "name": "UnaryOperation",
                        "src": "8896:28:0"
                      }
                    ],
                    "id": 594,
                    "name": "ExpressionStatement",
                    "src": "8896:28:0"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 77,
                              "type": "uint256",
                              "value": "_schedulePoolReward"
                            },
                            "id": 595,
                            "name": "Identifier",
                            "src": "8934:19:0"
                          },
                          {
                            "attributes": {
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 596,
                            "name": "Literal",
                            "src": "8956:1:0"
                          }
                        ],
                        "id": 597,
                        "name": "Assignment",
                        "src": "8934:23:0"
                      }
                    ],
                    "id": 598,
                    "name": "ExpressionStatement",
                    "src": "8934:23:0"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 79,
                              "type": "uint256",
                              "value": "_schedulePlatformReward"
                            },
                            "id": 599,
                            "name": "Identifier",
                            "src": "8967:23:0"
                          },
                          {
                            "attributes": {
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 600,
                            "name": "Literal",
                            "src": "8993:1:0"
                          }
                        ],
                        "id": 601,
                        "name": "Assignment",
                        "src": "8967:27:0"
                      }
                    ],
                    "id": 602,
                    "name": "ExpressionStatement",
                    "src": "8967:27:0"
                  }
                ],
                "id": 603,
                "name": "Block",
                "src": "8487:514:0"
              }
            ],
            "id": 604,
            "name": "FunctionDefinition",
            "src": "8453:548:0"
          },
          {
            "attributes": {
              "baseFunctions": [
                1154
              ],
              "functionSelector": "70348f3e",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "currentSender",
              "scope": 1090,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "overrides": [
                    null
                  ]
                },
                "id": 606,
                "name": "OverrideSpecifier",
                "src": "9087:8:0"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 605,
                "name": "ParameterList",
                "src": "9070:2:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 613,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 607,
                        "name": "ElementaryTypeName",
                        "src": "9105:7:0"
                      }
                    ],
                    "id": 608,
                    "name": "VariableDeclaration",
                    "src": "9105:7:0"
                  }
                ],
                "id": 609,
                "name": "ParameterList",
                "src": "9104:9:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 609
                    },
                    "children": [
                      {
                        "attributes": {
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 55,
                          "type": "address",
                          "value": "_scheduleInvokeSender"
                        },
                        "id": 610,
                        "name": "Identifier",
                        "src": "9131:21:0"
                      }
                    ],
                    "id": 611,
                    "name": "Return",
                    "src": "9124:28:0"
                  }
                ],
                "id": 612,
                "name": "Block",
                "src": "9114:45:0"
              }
            ],
            "id": 613,
            "name": "FunctionDefinition",
            "src": "9048:111:0"
          },
          {
            "attributes": {
              "baseFunctions": [
                1159
              ],
              "functionSelector": "11eefd5d",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "currentTokenAddress",
              "scope": 1090,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "overrides": [
                    null
                  ]
                },
                "id": 615,
                "name": "OverrideSpecifier",
                "src": "9210:8:0"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 614,
                "name": "ParameterList",
                "src": "9193:2:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 622,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 616,
                        "name": "ElementaryTypeName",
                        "src": "9228:7:0"
                      }
                    ],
                    "id": 617,
                    "name": "VariableDeclaration",
                    "src": "9228:7:0"
                  }
                ],
                "id": 618,
                "name": "ParameterList",
                "src": "9227:9:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 618
                    },
                    "children": [
                      {
                        "attributes": {
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 65,
                          "type": "address",
                          "value": "_scheduleTokenAddress"
                        },
                        "id": 619,
                        "name": "Identifier",
                        "src": "9254:21:0"
                      }
                    ],
                    "id": 620,
                    "name": "Return",
                    "src": "9247:28:0"
                  }
                ],
                "id": 621,
                "name": "Block",
                "src": "9237:45:0"
              }
            ],
            "id": 622,
            "name": "FunctionDefinition",
            "src": "9165:117:0"
          },
          {
            "attributes": {
              "baseFunctions": [
                1164
              ],
              "functionSelector": "ff69ac36",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "currentTokenAmount",
              "scope": 1090,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "overrides": [
                    null
                  ]
                },
                "id": 624,
                "name": "OverrideSpecifier",
                "src": "9332:8:0"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 623,
                "name": "ParameterList",
                "src": "9315:2:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 631,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 625,
                        "name": "ElementaryTypeName",
                        "src": "9350:7:0"
                      }
                    ],
                    "id": 626,
                    "name": "VariableDeclaration",
                    "src": "9350:7:0"
                  }
                ],
                "id": 627,
                "name": "ParameterList",
                "src": "9349:9:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 627
                    },
                    "children": [
                      {
                        "attributes": {
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 67,
                          "type": "uint256",
                          "value": "_scheduleTokenAmount"
                        },
                        "id": 628,
                        "name": "Identifier",
                        "src": "9376:20:0"
                      }
                    ],
                    "id": 629,
                    "name": "Return",
                    "src": "9369:27:0"
                  }
                ],
                "id": 630,
                "name": "Block",
                "src": "9359:44:0"
              }
            ],
            "id": 631,
            "name": "FunctionDefinition",
            "src": "9288:115:0"
          },
          {
            "attributes": {
              "baseFunctions": [
                1169
              ],
              "functionSelector": "6f27e9d8",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "currentRepaymentAmount",
              "scope": 1090,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "overrides": [
                    null
                  ]
                },
                "id": 633,
                "name": "OverrideSpecifier",
                "src": "9457:8:0"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 632,
                "name": "ParameterList",
                "src": "9440:2:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 640,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 634,
                        "name": "ElementaryTypeName",
                        "src": "9475:7:0"
                      }
                    ],
                    "id": 635,
                    "name": "VariableDeclaration",
                    "src": "9475:7:0"
                  }
                ],
                "id": 636,
                "name": "ParameterList",
                "src": "9474:9:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 636
                    },
                    "children": [
                      {
                        "attributes": {
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 72,
                          "type": "uint256",
                          "value": "_scheduleRepayAmount"
                        },
                        "id": 637,
                        "name": "Identifier",
                        "src": "9501:20:0"
                      }
                    ],
                    "id": 638,
                    "name": "Return",
                    "src": "9494:27:0"
                  }
                ],
                "id": 639,
                "name": "Block",
                "src": "9484:44:0"
              }
            ],
            "id": 640,
            "name": "FunctionDefinition",
            "src": "9409:119:0"
          },
          {
            "attributes": {
              "functionSelector": "5f4130dd",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "estimateRepaymentAmount",
              "scope": 1090,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "tokenAddress",
                      "scope": 764,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 641,
                        "name": "ElementaryTypeName",
                        "src": "9567:7:0"
                      }
                    ],
                    "id": 642,
                    "name": "VariableDeclaration",
                    "src": "9567:20:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "tokenAmount",
                      "scope": 764,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 643,
                        "name": "ElementaryTypeName",
                        "src": "9589:7:0"
                      }
                    ],
                    "id": 644,
                    "name": "VariableDeclaration",
                    "src": "9589:19:0"
                  }
                ],
                "id": 645,
                "name": "ParameterList",
                "src": "9566:43:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 764,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 646,
                        "name": "ElementaryTypeName",
                        "src": "9657:7:0"
                      }
                    ],
                    "id": 647,
                    "name": "VariableDeclaration",
                    "src": "9657:7:0"
                  }
                ],
                "id": 648,
                "name": "ParameterList",
                "src": "9656:9:0"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_3baebd1e484b5704c0e6ab1bee585c31e762e1cb1c76bc62bb5ea845c3f0b548",
                                  "typeString": "literal_string \"Invoker: no liquidity for token\""
                                }
                              ],
                              "overloadedDeclarations": [
                                -18,
                                -18
                              ],
                              "referencedDeclaration": -18,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 649,
                            "name": "Identifier",
                            "src": "9680:7:0"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 960,
                                  "type": "function (address) view returns (bool)",
                                  "value": "isTokenAddressRegistered"
                                },
                                "id": 650,
                                "name": "Identifier",
                                "src": "9701:24:0"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 642,
                                  "type": "address",
                                  "value": "tokenAddress"
                                },
                                "id": 651,
                                "name": "Identifier",
                                "src": "9726:12:0"
                              }
                            ],
                            "id": 652,
                            "name": "FunctionCall",
                            "src": "9701:38:0"
                          },
                          {
                            "attributes": {
                              "hexvalue": "496e766f6b65723a206e6f206c697175696469747920666f7220746f6b656e",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "string",
                              "type": "literal_string \"Invoker: no liquidity for token\"",
                              "value": "Invoker: no liquidity for token"
                            },
                            "id": 653,
                            "name": "Literal",
                            "src": "9753:33:0"
                          }
                        ],
                        "id": 654,
                        "name": "FunctionCall",
                        "src": "9680:116:0"
                      }
                    ],
                    "id": 655,
                    "name": "ExpressionStatement",
                    "src": "9680:116:0"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        657
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "repaymentAmount",
                          "scope": 763,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 656,
                            "name": "ElementaryTypeName",
                            "src": "9807:7:0"
                          }
                        ],
                        "id": 657,
                        "name": "VariableDeclaration",
                        "src": "9807:23:0"
                      },
                      {
                        "attributes": {
                          "hexvalue": "30",
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "token": "number",
                          "type": "int_const 0",
                          "value": "0"
                        },
                        "id": 658,
                        "name": "Literal",
                        "src": "9833:1:0"
                      }
                    ],
                    "id": 659,
                    "name": "VariableDeclarationStatement",
                    "src": "9807:27:0"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        661
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "tokenAmountLeft",
                          "scope": 763,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 660,
                            "name": "ElementaryTypeName",
                            "src": "9844:7:0"
                          }
                        ],
                        "id": 661,
                        "name": "VariableDeclaration",
                        "src": "9844:23:0"
                      },
                      {
                        "attributes": {
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 644,
                          "type": "uint256",
                          "value": "tokenAmount"
                        },
                        "id": 662,
                        "name": "Identifier",
                        "src": "9870:11:0"
                      }
                    ],
                    "id": 663,
                    "name": "VariableDeclarationStatement",
                    "src": "9844:37:0"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "assignments": [
                            665
                          ]
                        },
                        "children": [
                          {
                            "attributes": {
                              "constant": false,
                              "mutability": "mutable",
                              "name": "i",
                              "scope": 743,
                              "stateVariable": false,
                              "storageLocation": "default",
                              "type": "uint256",
                              "visibility": "internal"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "name": "uint256",
                                  "type": "uint256"
                                },
                                "id": 664,
                                "name": "ElementaryTypeName",
                                "src": "9897:7:0"
                              }
                            ],
                            "id": 665,
                            "name": "VariableDeclaration",
                            "src": "9897:9:0"
                          },
                          {
                            "attributes": {
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 666,
                            "name": "Literal",
                            "src": "9909:1:0"
                          }
                        ],
                        "id": 667,
                        "name": "VariableDeclarationStatement",
                        "src": "9897:13:0"
                      },
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "<",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 665,
                              "type": "uint256",
                              "value": "i"
                            },
                            "id": 668,
                            "name": "Identifier",
                            "src": "9912:1:0"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "length",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "address[] storage ref"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 39,
                                      "type": "mapping(address => address[] storage ref)",
                                      "value": "_liquidityProxies"
                                    },
                                    "id": 669,
                                    "name": "Identifier",
                                    "src": "9916:17:0"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 642,
                                      "type": "address",
                                      "value": "tokenAddress"
                                    },
                                    "id": 670,
                                    "name": "Identifier",
                                    "src": "9934:12:0"
                                  }
                                ],
                                "id": 671,
                                "name": "IndexAccess",
                                "src": "9916:31:0"
                              }
                            ],
                            "id": 672,
                            "name": "MemberAccess",
                            "src": "9916:38:0"
                          }
                        ],
                        "id": 673,
                        "name": "BinaryOperation",
                        "src": "9912:42:0"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "++",
                              "prefix": false,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 665,
                                  "type": "uint256",
                                  "value": "i"
                                },
                                "id": 674,
                                "name": "Identifier",
                                "src": "9956:1:0"
                              }
                            ],
                            "id": 675,
                            "name": "UnaryOperation",
                            "src": "9956:3:0"
                          }
                        ],
                        "id": 676,
                        "name": "ExpressionStatement",
                        "src": "9956:3:0"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "assignments": [
                                678
                              ]
                            },
                            "children": [
                              {
                                "attributes": {
                                  "constant": false,
                                  "mutability": "mutable",
                                  "name": "proxy",
                                  "scope": 742,
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "type": "contract ILiquidityProxy",
                                  "visibility": "internal"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "ILiquidityProxy",
                                      "referencedDeclaration": 2148,
                                      "type": "contract ILiquidityProxy"
                                    },
                                    "id": 677,
                                    "name": "UserDefinedTypeName",
                                    "src": "9975:15:0"
                                  }
                                ],
                                "id": 678,
                                "name": "VariableDeclaration",
                                "src": "9975:21:0"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "contract ILiquidityProxy",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2148,
                                      "type": "type(contract ILiquidityProxy)",
                                      "value": "ILiquidityProxy"
                                    },
                                    "id": 679,
                                    "name": "Identifier",
                                    "src": "9999:15:0"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "address"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "address[] storage ref"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 39,
                                              "type": "mapping(address => address[] storage ref)",
                                              "value": "_liquidityProxies"
                                            },
                                            "id": 680,
                                            "name": "Identifier",
                                            "src": "10032:17:0"
                                          },
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 642,
                                              "type": "address",
                                              "value": "tokenAddress"
                                            },
                                            "id": 681,
                                            "name": "Identifier",
                                            "src": "10050:12:0"
                                          }
                                        ],
                                        "id": 682,
                                        "name": "IndexAccess",
                                        "src": "10032:31:0"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 665,
                                          "type": "uint256",
                                          "value": "i"
                                        },
                                        "id": 683,
                                        "name": "Identifier",
                                        "src": "10064:1:0"
                                      }
                                    ],
                                    "id": 684,
                                    "name": "IndexAccess",
                                    "src": "10032:34:0"
                                  }
                                ],
                                "id": 685,
                                "name": "FunctionCall",
                                "src": "9999:81:0"
                              }
                            ],
                            "id": 686,
                            "name": "VariableDeclarationStatement",
                            "src": "9975:105:0"
                          },
                          {
                            "attributes": {
                              "assignments": [
                                688
                              ]
                            },
                            "children": [
                              {
                                "attributes": {
                                  "constant": false,
                                  "mutability": "mutable",
                                  "name": "totalReserve",
                                  "scope": 742,
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "type": "uint256",
                                  "visibility": "internal"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "uint256",
                                      "type": "uint256"
                                    },
                                    "id": 687,
                                    "name": "ElementaryTypeName",
                                    "src": "10094:7:0"
                                  }
                                ],
                                "id": 688,
                                "name": "VariableDeclaration",
                                "src": "10094:20:0"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "uint256",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "getTotalReserve",
                                      "referencedDeclaration": 2124,
                                      "type": "function (address) view external returns (uint256)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 678,
                                          "type": "contract ILiquidityProxy",
                                          "value": "proxy"
                                        },
                                        "id": 689,
                                        "name": "Identifier",
                                        "src": "10117:5:0"
                                      }
                                    ],
                                    "id": 690,
                                    "name": "MemberAccess",
                                    "src": "10117:21:0"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 642,
                                      "type": "address",
                                      "value": "tokenAddress"
                                    },
                                    "id": 691,
                                    "name": "Identifier",
                                    "src": "10139:12:0"
                                  }
                                ],
                                "id": 692,
                                "name": "FunctionCall",
                                "src": "10117:35:0"
                              }
                            ],
                            "id": 693,
                            "name": "VariableDeclarationStatement",
                            "src": "10094:58:0"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "<=",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 661,
                                      "type": "uint256",
                                      "value": "tokenAmountLeft"
                                    },
                                    "id": 694,
                                    "name": "Identifier",
                                    "src": "10170:15:0"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 688,
                                      "type": "uint256",
                                      "value": "totalReserve"
                                    },
                                    "id": 695,
                                    "name": "Identifier",
                                    "src": "10189:12:0"
                                  }
                                ],
                                "id": 696,
                                "name": "BinaryOperation",
                                "src": "10170:31:0"
                              },
                              {
                                "children": [
                                  {
                                    "attributes": {
                                      "assignments": [
                                        698
                                      ]
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "constant": false,
                                          "mutability": "mutable",
                                          "name": "proxyRepayAmount",
                                          "scope": 717,
                                          "stateVariable": false,
                                          "storageLocation": "default",
                                          "type": "uint256",
                                          "visibility": "internal"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "name": "uint256",
                                              "type": "uint256"
                                            },
                                            "id": 697,
                                            "name": "ElementaryTypeName",
                                            "src": "10221:7:0"
                                          }
                                        ],
                                        "id": 698,
                                        "name": "VariableDeclaration",
                                        "src": "10221:24:0"
                                      },
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "tryCall": false,
                                          "type": "uint256",
                                          "type_conversion": false
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "getRepaymentAmount",
                                              "referencedDeclaration": 2140,
                                              "type": "function (address,uint256) view external returns (uint256)"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 678,
                                                  "type": "contract ILiquidityProxy",
                                                  "value": "proxy"
                                                },
                                                "id": 699,
                                                "name": "Identifier",
                                                "src": "10248:5:0"
                                              }
                                            ],
                                            "id": 700,
                                            "name": "MemberAccess",
                                            "src": "10248:24:0"
                                          },
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 642,
                                              "type": "address",
                                              "value": "tokenAddress"
                                            },
                                            "id": 701,
                                            "name": "Identifier",
                                            "src": "10294:12:0"
                                          },
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 661,
                                              "type": "uint256",
                                              "value": "tokenAmountLeft"
                                            },
                                            "id": 702,
                                            "name": "Identifier",
                                            "src": "10328:15:0"
                                          }
                                        ],
                                        "id": 703,
                                        "name": "FunctionCall",
                                        "src": "10248:113:0"
                                      }
                                    ],
                                    "id": 704,
                                    "name": "VariableDeclarationStatement",
                                    "src": "10221:140:0"
                                  },
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "=",
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 657,
                                              "type": "uint256",
                                              "value": "repaymentAmount"
                                            },
                                            "id": 705,
                                            "name": "Identifier",
                                            "src": "10379:15:0"
                                          },
                                          {
                                            "attributes": {
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "isStructConstructorCall": false,
                                              "lValueRequested": false,
                                              "names": [
                                                null
                                              ],
                                              "tryCall": false,
                                              "type": "uint256",
                                              "type_conversion": false
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  ],
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "member_name": "add",
                                                  "referencedDeclaration": 5417,
                                                  "type": "function (uint256,uint256) pure returns (uint256)"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 657,
                                                      "type": "uint256",
                                                      "value": "repaymentAmount"
                                                    },
                                                    "id": 706,
                                                    "name": "Identifier",
                                                    "src": "10397:15:0"
                                                  }
                                                ],
                                                "id": 707,
                                                "name": "MemberAccess",
                                                "src": "10397:19:0"
                                              },
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 698,
                                                  "type": "uint256",
                                                  "value": "proxyRepayAmount"
                                                },
                                                "id": 708,
                                                "name": "Identifier",
                                                "src": "10417:16:0"
                                              }
                                            ],
                                            "id": 709,
                                            "name": "FunctionCall",
                                            "src": "10397:37:0"
                                          }
                                        ],
                                        "id": 710,
                                        "name": "Assignment",
                                        "src": "10379:55:0"
                                      }
                                    ],
                                    "id": 711,
                                    "name": "ExpressionStatement",
                                    "src": "10379:55:0"
                                  },
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "=",
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 661,
                                              "type": "uint256",
                                              "value": "tokenAmountLeft"
                                            },
                                            "id": 712,
                                            "name": "Identifier",
                                            "src": "10452:15:0"
                                          },
                                          {
                                            "attributes": {
                                              "hexvalue": "30",
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "token": "number",
                                              "type": "int_const 0",
                                              "value": "0"
                                            },
                                            "id": 713,
                                            "name": "Literal",
                                            "src": "10470:1:0"
                                          }
                                        ],
                                        "id": 714,
                                        "name": "Assignment",
                                        "src": "10452:19:0"
                                      }
                                    ],
                                    "id": 715,
                                    "name": "ExpressionStatement",
                                    "src": "10452:19:0"
                                  },
                                  {
                                    "id": 716,
                                    "name": "Break",
                                    "src": "10489:5:0"
                                  }
                                ],
                                "id": 717,
                                "name": "Block",
                                "src": "10203:306:0"
                              },
                              {
                                "children": [
                                  {
                                    "attributes": {
                                      "assignments": [
                                        719
                                      ]
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "constant": false,
                                          "mutability": "mutable",
                                          "name": "proxyRepayAmount",
                                          "scope": 740,
                                          "stateVariable": false,
                                          "storageLocation": "default",
                                          "type": "uint256",
                                          "visibility": "internal"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "name": "uint256",
                                              "type": "uint256"
                                            },
                                            "id": 718,
                                            "name": "ElementaryTypeName",
                                            "src": "10533:7:0"
                                          }
                                        ],
                                        "id": 719,
                                        "name": "VariableDeclaration",
                                        "src": "10533:24:0"
                                      },
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "tryCall": false,
                                          "type": "uint256",
                                          "type_conversion": false
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "getRepaymentAmount",
                                              "referencedDeclaration": 2140,
                                              "type": "function (address,uint256) view external returns (uint256)"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 678,
                                                  "type": "contract ILiquidityProxy",
                                                  "value": "proxy"
                                                },
                                                "id": 720,
                                                "name": "Identifier",
                                                "src": "10560:5:0"
                                              }
                                            ],
                                            "id": 721,
                                            "name": "MemberAccess",
                                            "src": "10560:24:0"
                                          },
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 642,
                                              "type": "address",
                                              "value": "tokenAddress"
                                            },
                                            "id": 722,
                                            "name": "Identifier",
                                            "src": "10606:12:0"
                                          },
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 688,
                                              "type": "uint256",
                                              "value": "totalReserve"
                                            },
                                            "id": 723,
                                            "name": "Identifier",
                                            "src": "10640:12:0"
                                          }
                                        ],
                                        "id": 724,
                                        "name": "FunctionCall",
                                        "src": "10560:110:0"
                                      }
                                    ],
                                    "id": 725,
                                    "name": "VariableDeclarationStatement",
                                    "src": "10533:137:0"
                                  },
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "=",
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 657,
                                              "type": "uint256",
                                              "value": "repaymentAmount"
                                            },
                                            "id": 726,
                                            "name": "Identifier",
                                            "src": "10688:15:0"
                                          },
                                          {
                                            "attributes": {
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "isStructConstructorCall": false,
                                              "lValueRequested": false,
                                              "names": [
                                                null
                                              ],
                                              "tryCall": false,
                                              "type": "uint256",
                                              "type_conversion": false
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  ],
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "member_name": "add",
                                                  "referencedDeclaration": 5417,
                                                  "type": "function (uint256,uint256) pure returns (uint256)"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 657,
                                                      "type": "uint256",
                                                      "value": "repaymentAmount"
                                                    },
                                                    "id": 727,
                                                    "name": "Identifier",
                                                    "src": "10706:15:0"
                                                  }
                                                ],
                                                "id": 728,
                                                "name": "MemberAccess",
                                                "src": "10706:19:0"
                                              },
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 719,
                                                  "type": "uint256",
                                                  "value": "proxyRepayAmount"
                                                },
                                                "id": 729,
                                                "name": "Identifier",
                                                "src": "10726:16:0"
                                              }
                                            ],
                                            "id": 730,
                                            "name": "FunctionCall",
                                            "src": "10706:37:0"
                                          }
                                        ],
                                        "id": 731,
                                        "name": "Assignment",
                                        "src": "10688:55:0"
                                      }
                                    ],
                                    "id": 732,
                                    "name": "ExpressionStatement",
                                    "src": "10688:55:0"
                                  },
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "=",
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 661,
                                              "type": "uint256",
                                              "value": "tokenAmountLeft"
                                            },
                                            "id": 733,
                                            "name": "Identifier",
                                            "src": "10761:15:0"
                                          },
                                          {
                                            "attributes": {
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "isStructConstructorCall": false,
                                              "lValueRequested": false,
                                              "names": [
                                                null
                                              ],
                                              "tryCall": false,
                                              "type": "uint256",
                                              "type_conversion": false
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  ],
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "member_name": "sub",
                                                  "referencedDeclaration": 5434,
                                                  "type": "function (uint256,uint256) pure returns (uint256)"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 661,
                                                      "type": "uint256",
                                                      "value": "tokenAmountLeft"
                                                    },
                                                    "id": 734,
                                                    "name": "Identifier",
                                                    "src": "10779:15:0"
                                                  }
                                                ],
                                                "id": 735,
                                                "name": "MemberAccess",
                                                "src": "10779:19:0"
                                              },
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 688,
                                                  "type": "uint256",
                                                  "value": "totalReserve"
                                                },
                                                "id": 736,
                                                "name": "Identifier",
                                                "src": "10799:12:0"
                                              }
                                            ],
                                            "id": 737,
                                            "name": "FunctionCall",
                                            "src": "10779:33:0"
                                          }
                                        ],
                                        "id": 738,
                                        "name": "Assignment",
                                        "src": "10761:51:0"
                                      }
                                    ],
                                    "id": 739,
                                    "name": "ExpressionStatement",
                                    "src": "10761:51:0"
                                  }
                                ],
                                "id": 740,
                                "name": "Block",
                                "src": "10515:312:0"
                              }
                            ],
                            "id": 741,
                            "name": "IfStatement",
                            "src": "10166:661:0"
                          }
                        ],
                        "id": 742,
                        "name": "Block",
                        "src": "9961:876:0"
                      }
                    ],
                    "id": 743,
                    "name": "ForStatement",
                    "src": "9892:945:0"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_b783feb36669a3442e41b851f482f2c03ebc4f566a0f6a9ba0340aacace6bd1b",
                                  "typeString": "literal_string \"Invoker: not enough liquidity\""
                                }
                              ],
                              "overloadedDeclarations": [
                                -18,
                                -18
                              ],
                              "referencedDeclaration": -18,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 744,
                            "name": "Identifier",
                            "src": "10846:7:0"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "==",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 661,
                                  "type": "uint256",
                                  "value": "tokenAmountLeft"
                                },
                                "id": 745,
                                "name": "Identifier",
                                "src": "10854:15:0"
                              },
                              {
                                "attributes": {
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 746,
                                "name": "Literal",
                                "src": "10873:1:0"
                              }
                            ],
                            "id": 747,
                            "name": "BinaryOperation",
                            "src": "10854:20:0"
                          },
                          {
                            "attributes": {
                              "hexvalue": "496e766f6b65723a206e6f7420656e6f756768206c6971756964697479",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "string",
                              "type": "literal_string \"Invoker: not enough liquidity\"",
                              "value": "Invoker: not enough liquidity"
                            },
                            "id": 748,
                            "name": "Literal",
                            "src": "10876:31:0"
                          }
                        ],
                        "id": 749,
                        "name": "FunctionCall",
                        "src": "10846:62:0"
                      }
                    ],
                    "id": 750,
                    "name": "ExpressionStatement",
                    "src": "10846:62:0"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 648
                    },
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "add",
                              "referencedDeclaration": 5417,
                              "type": "function (uint256,uint256) pure returns (uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "uint256",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "add",
                                      "referencedDeclaration": 5417,
                                      "type": "function (uint256,uint256) pure returns (uint256)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 657,
                                          "type": "uint256",
                                          "value": "repaymentAmount"
                                        },
                                        "id": 751,
                                        "name": "Identifier",
                                        "src": "10938:15:0"
                                      }
                                    ],
                                    "id": 752,
                                    "name": "MemberAccess",
                                    "src": "10938:19:0"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "uint256",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 780,
                                          "type": "function (uint256) view returns (uint256)",
                                          "value": "calculatePoolReward"
                                        },
                                        "id": 753,
                                        "name": "Identifier",
                                        "src": "10958:19:0"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 644,
                                          "type": "uint256",
                                          "value": "tokenAmount"
                                        },
                                        "id": 754,
                                        "name": "Identifier",
                                        "src": "10978:11:0"
                                      }
                                    ],
                                    "id": 755,
                                    "name": "FunctionCall",
                                    "src": "10958:32:0"
                                  }
                                ],
                                "id": 756,
                                "name": "FunctionCall",
                                "src": "10938:53:0"
                              }
                            ],
                            "id": 757,
                            "name": "MemberAccess",
                            "src": "10938:57:0"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint256",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 796,
                                  "type": "function (uint256) view returns (uint256)",
                                  "value": "calculatePlatformReward"
                                },
                                "id": 758,
                                "name": "Identifier",
                                "src": "11013:23:0"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 644,
                                  "type": "uint256",
                                  "value": "tokenAmount"
                                },
                                "id": 759,
                                "name": "Identifier",
                                "src": "11037:11:0"
                              }
                            ],
                            "id": 760,
                            "name": "FunctionCall",
                            "src": "11013:36:0"
                          }
                        ],
                        "id": 761,
                        "name": "FunctionCall",
                        "src": "10938:125:0"
                      }
                    ],
                    "id": 762,
                    "name": "Return",
                    "src": "10919:144:0"
                  }
                ],
                "id": 763,
                "name": "Block",
                "src": "9670:1400:0"
              }
            ],
            "id": 764,
            "name": "FunctionDefinition",
            "src": "9534:1536:0"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "calculatePoolReward",
              "scope": 1090,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "tokenAmount",
                      "scope": 780,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 765,
                        "name": "ElementaryTypeName",
                        "src": "11136:7:0"
                      }
                    ],
                    "id": 766,
                    "name": "VariableDeclaration",
                    "src": "11136:19:0"
                  }
                ],
                "id": 767,
                "name": "ParameterList",
                "src": "11135:21:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 780,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 768,
                        "name": "ElementaryTypeName",
                        "src": "11204:7:0"
                      }
                    ],
                    "id": 769,
                    "name": "VariableDeclaration",
                    "src": "11204:7:0"
                  }
                ],
                "id": 770,
                "name": "ParameterList",
                "src": "11203:9:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 770
                    },
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_10000_by_1",
                                  "typeString": "int_const 10000"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "div",
                              "referencedDeclaration": 5514,
                              "type": "function (uint256,uint256) pure returns (uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "uint256",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "mul",
                                      "referencedDeclaration": 5497,
                                      "type": "function (uint256,uint256) pure returns (uint256)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 766,
                                          "type": "uint256",
                                          "value": "tokenAmount"
                                        },
                                        "id": 771,
                                        "name": "Identifier",
                                        "src": "11234:11:0"
                                      }
                                    ],
                                    "id": 772,
                                    "name": "MemberAccess",
                                    "src": "11234:15:0"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 41,
                                      "type": "uint256",
                                      "value": "_poolRewardBips"
                                    },
                                    "id": 773,
                                    "name": "Identifier",
                                    "src": "11250:15:0"
                                  }
                                ],
                                "id": 774,
                                "name": "FunctionCall",
                                "src": "11234:32:0"
                              }
                            ],
                            "id": 775,
                            "name": "MemberAccess",
                            "src": "11234:36:0"
                          },
                          {
                            "attributes": {
                              "hexvalue": "3130303030",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 10000",
                              "value": "10000"
                            },
                            "id": 776,
                            "name": "Literal",
                            "src": "11271:5:0"
                          }
                        ],
                        "id": 777,
                        "name": "FunctionCall",
                        "src": "11234:43:0"
                      }
                    ],
                    "id": 778,
                    "name": "Return",
                    "src": "11227:50:0"
                  }
                ],
                "id": 779,
                "name": "Block",
                "src": "11217:67:0"
              }
            ],
            "id": 780,
            "name": "FunctionDefinition",
            "src": "11107:177:0"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "calculatePlatformReward",
              "scope": 1090,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "tokenAmount",
                      "scope": 796,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 781,
                        "name": "ElementaryTypeName",
                        "src": "11323:7:0"
                      }
                    ],
                    "id": 782,
                    "name": "VariableDeclaration",
                    "src": "11323:19:0"
                  }
                ],
                "id": 783,
                "name": "ParameterList",
                "src": "11322:21:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 796,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 784,
                        "name": "ElementaryTypeName",
                        "src": "11391:7:0"
                      }
                    ],
                    "id": 785,
                    "name": "VariableDeclaration",
                    "src": "11391:7:0"
                  }
                ],
                "id": 786,
                "name": "ParameterList",
                "src": "11390:9:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 786
                    },
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_10000_by_1",
                                  "typeString": "int_const 10000"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "div",
                              "referencedDeclaration": 5514,
                              "type": "function (uint256,uint256) pure returns (uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "uint256",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "mul",
                                      "referencedDeclaration": 5497,
                                      "type": "function (uint256,uint256) pure returns (uint256)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 782,
                                          "type": "uint256",
                                          "value": "tokenAmount"
                                        },
                                        "id": 787,
                                        "name": "Identifier",
                                        "src": "11421:11:0"
                                      }
                                    ],
                                    "id": 788,
                                    "name": "MemberAccess",
                                    "src": "11421:15:0"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 47,
                                      "type": "uint256",
                                      "value": "_platformRewardBips"
                                    },
                                    "id": 789,
                                    "name": "Identifier",
                                    "src": "11437:19:0"
                                  }
                                ],
                                "id": 790,
                                "name": "FunctionCall",
                                "src": "11421:36:0"
                              }
                            ],
                            "id": 791,
                            "name": "MemberAccess",
                            "src": "11421:40:0"
                          },
                          {
                            "attributes": {
                              "hexvalue": "3130303030",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 10000",
                              "value": "10000"
                            },
                            "id": 792,
                            "name": "Literal",
                            "src": "11462:5:0"
                          }
                        ],
                        "id": 793,
                        "name": "FunctionCall",
                        "src": "11421:47:0"
                      }
                    ],
                    "id": 794,
                    "name": "Return",
                    "src": "11414:54:0"
                  }
                ],
                "id": 795,
                "name": "Block",
                "src": "11404:71:0"
              }
            ],
            "id": 796,
            "name": "FunctionDefinition",
            "src": "11290:185:0"
          },
          {
            "attributes": {
              "baseFunctions": [
                1202
              ],
              "functionSelector": "fef10b95",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "poolReward",
              "scope": 1090,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "overrides": [
                    null
                  ]
                },
                "id": 798,
                "name": "OverrideSpecifier",
                "src": "11517:8:0"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 797,
                "name": "ParameterList",
                "src": "11500:2:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 805,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 799,
                        "name": "ElementaryTypeName",
                        "src": "11535:7:0"
                      }
                    ],
                    "id": 800,
                    "name": "VariableDeclaration",
                    "src": "11535:7:0"
                  }
                ],
                "id": 801,
                "name": "ParameterList",
                "src": "11534:9:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 801
                    },
                    "children": [
                      {
                        "attributes": {
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 41,
                          "type": "uint256",
                          "value": "_poolRewardBips"
                        },
                        "id": 802,
                        "name": "Identifier",
                        "src": "11561:15:0"
                      }
                    ],
                    "id": 803,
                    "name": "Return",
                    "src": "11554:22:0"
                  }
                ],
                "id": 804,
                "name": "Block",
                "src": "11544:39:0"
              }
            ],
            "id": 805,
            "name": "FunctionDefinition",
            "src": "11481:102:0"
          },
          {
            "attributes": {
              "baseFunctions": [
                1209
              ],
              "functionSelector": "8a698bcc",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "poolRewardAddress",
              "scope": 1090,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "overrides": [
                    null
                  ]
                },
                "id": 809,
                "name": "OverrideSpecifier",
                "src": "11676:8:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "tokenAddress",
                      "scope": 818,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 806,
                        "name": "ElementaryTypeName",
                        "src": "11616:7:0"
                      }
                    ],
                    "id": 807,
                    "name": "VariableDeclaration",
                    "src": "11616:20:0"
                  }
                ],
                "id": 808,
                "name": "ParameterList",
                "src": "11615:22:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 818,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 810,
                        "name": "ElementaryTypeName",
                        "src": "11702:7:0"
                      }
                    ],
                    "id": 811,
                    "name": "VariableDeclaration",
                    "src": "11702:7:0"
                  }
                ],
                "id": 812,
                "name": "ParameterList",
                "src": "11701:9:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 812
                    },
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "address"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 45,
                              "type": "mapping(address => address)",
                              "value": "_poolRewardAddresses"
                            },
                            "id": 813,
                            "name": "Identifier",
                            "src": "11732:20:0"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 807,
                              "type": "address",
                              "value": "tokenAddress"
                            },
                            "id": 814,
                            "name": "Identifier",
                            "src": "11753:12:0"
                          }
                        ],
                        "id": 815,
                        "name": "IndexAccess",
                        "src": "11732:34:0"
                      }
                    ],
                    "id": 816,
                    "name": "Return",
                    "src": "11725:41:0"
                  }
                ],
                "id": 817,
                "name": "Block",
                "src": "11715:58:0"
              }
            ],
            "id": 818,
            "name": "FunctionDefinition",
            "src": "11589:184:0"
          },
          {
            "attributes": {
              "baseFunctions": [
                1214
              ],
              "functionSelector": "fe6551b6",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "platformReward",
              "scope": 1090,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "overrides": [
                    null
                  ]
                },
                "id": 820,
                "name": "OverrideSpecifier",
                "src": "11819:8:0"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 819,
                "name": "ParameterList",
                "src": "11802:2:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 827,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 821,
                        "name": "ElementaryTypeName",
                        "src": "11837:7:0"
                      }
                    ],
                    "id": 822,
                    "name": "VariableDeclaration",
                    "src": "11837:7:0"
                  }
                ],
                "id": 823,
                "name": "ParameterList",
                "src": "11836:9:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 823
                    },
                    "children": [
                      {
                        "attributes": {
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 47,
                          "type": "uint256",
                          "value": "_platformRewardBips"
                        },
                        "id": 824,
                        "name": "Identifier",
                        "src": "11863:19:0"
                      }
                    ],
                    "id": 825,
                    "name": "Return",
                    "src": "11856:26:0"
                  }
                ],
                "id": 826,
                "name": "Block",
                "src": "11846:43:0"
              }
            ],
            "id": 827,
            "name": "FunctionDefinition",
            "src": "11779:110:0"
          },
          {
            "attributes": {
              "baseFunctions": [
                1219
              ],
              "functionSelector": "5f39e93a",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "platformVaultAddress",
              "scope": 1090,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "overrides": [
                    null
                  ]
                },
                "id": 829,
                "name": "OverrideSpecifier",
                "src": "11941:8:0"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 828,
                "name": "ParameterList",
                "src": "11924:2:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 836,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 830,
                        "name": "ElementaryTypeName",
                        "src": "11959:7:0"
                      }
                    ],
                    "id": 831,
                    "name": "VariableDeclaration",
                    "src": "11959:7:0"
                  }
                ],
                "id": 832,
                "name": "ParameterList",
                "src": "11958:9:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 832
                    },
                    "children": [
                      {
                        "attributes": {
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 49,
                          "type": "address",
                          "value": "_platformVaultAddress"
                        },
                        "id": 833,
                        "name": "Identifier",
                        "src": "11985:21:0"
                      }
                    ],
                    "id": 834,
                    "name": "Return",
                    "src": "11978:28:0"
                  }
                ],
                "id": 835,
                "name": "Block",
                "src": "11968:45:0"
              }
            ],
            "id": 836,
            "name": "FunctionDefinition",
            "src": "11895:118:0"
          },
          {
            "attributes": {
              "functionSelector": "046e7913",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "name": "setPoolReward",
              "scope": 1090,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "poolRewardBips",
                      "scope": 850,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 837,
                        "name": "ElementaryTypeName",
                        "src": "12042:7:0"
                      }
                    ],
                    "id": 838,
                    "name": "VariableDeclaration",
                    "src": "12042:22:0"
                  }
                ],
                "id": 839,
                "name": "ParameterList",
                "src": "12041:24:0"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 844,
                "name": "ParameterList",
                "src": "12123:0:0"
              },
              {
                "attributes": {},
                "children": [
                  {
                    "attributes": {
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 1072,
                      "type": "modifier ()",
                      "value": "onlyFresh"
                    },
                    "id": 840,
                    "name": "Identifier",
                    "src": "12091:9:0"
                  }
                ],
                "id": 841,
                "name": "ModifierInvocation",
                "src": "12091:9:0"
              },
              {
                "attributes": {},
                "children": [
                  {
                    "attributes": {
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 5337,
                      "type": "modifier ()",
                      "value": "onlyOwner"
                    },
                    "id": 842,
                    "name": "Identifier",
                    "src": "12109:9:0"
                  }
                ],
                "id": 843,
                "name": "ModifierInvocation",
                "src": "12109:9:0"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 41,
                              "type": "uint256",
                              "value": "_poolRewardBips"
                            },
                            "id": 845,
                            "name": "Identifier",
                            "src": "12133:15:0"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 838,
                              "type": "uint256",
                              "value": "poolRewardBips"
                            },
                            "id": 846,
                            "name": "Identifier",
                            "src": "12151:14:0"
                          }
                        ],
                        "id": 847,
                        "name": "Assignment",
                        "src": "12133:32:0"
                      }
                    ],
                    "id": 848,
                    "name": "ExpressionStatement",
                    "src": "12133:32:0"
                  }
                ],
                "id": 849,
                "name": "Block",
                "src": "12123:49:0"
              }
            ],
            "id": 850,
            "name": "FunctionDefinition",
            "src": "12019:153:0"
          },
          {
            "attributes": {
              "functionSelector": "1c761d46",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "name": "setPoolRewardAddress",
              "scope": 1090,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "tokenAddress",
                      "scope": 868,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 851,
                        "name": "ElementaryTypeName",
                        "src": "12217:7:0"
                      }
                    ],
                    "id": 852,
                    "name": "VariableDeclaration",
                    "src": "12217:20:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "newPoolRewardAddress",
                      "scope": 868,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 853,
                        "name": "ElementaryTypeName",
                        "src": "12247:7:0"
                      }
                    ],
                    "id": 854,
                    "name": "VariableDeclaration",
                    "src": "12247:28:0"
                  }
                ],
                "id": 855,
                "name": "ParameterList",
                "src": "12207:74:0"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 860,
                "name": "ParameterList",
                "src": "12311:0:0"
              },
              {
                "attributes": {},
                "children": [
                  {
                    "attributes": {
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 1072,
                      "type": "modifier ()",
                      "value": "onlyFresh"
                    },
                    "id": 856,
                    "name": "Identifier",
                    "src": "12291:9:0"
                  }
                ],
                "id": 857,
                "name": "ModifierInvocation",
                "src": "12291:9:0"
              },
              {
                "attributes": {},
                "children": [
                  {
                    "attributes": {
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 5337,
                      "type": "modifier ()",
                      "value": "onlyOwner"
                    },
                    "id": 858,
                    "name": "Identifier",
                    "src": "12301:9:0"
                  }
                ],
                "id": 859,
                "name": "ModifierInvocation",
                "src": "12301:9:0"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "address"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "address"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 45,
                                  "type": "mapping(address => address)",
                                  "value": "_poolRewardAddresses"
                                },
                                "id": 861,
                                "name": "Identifier",
                                "src": "12321:20:0"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 852,
                                  "type": "address",
                                  "value": "tokenAddress"
                                },
                                "id": 862,
                                "name": "Identifier",
                                "src": "12342:12:0"
                              }
                            ],
                            "id": 863,
                            "name": "IndexAccess",
                            "src": "12321:34:0"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 854,
                              "type": "address",
                              "value": "newPoolRewardAddress"
                            },
                            "id": 864,
                            "name": "Identifier",
                            "src": "12358:20:0"
                          }
                        ],
                        "id": 865,
                        "name": "Assignment",
                        "src": "12321:57:0"
                      }
                    ],
                    "id": 866,
                    "name": "ExpressionStatement",
                    "src": "12321:57:0"
                  }
                ],
                "id": 867,
                "name": "Block",
                "src": "12311:74:0"
              }
            ],
            "id": 868,
            "name": "FunctionDefinition",
            "src": "12178:207:0"
          },
          {
            "attributes": {
              "functionSelector": "f35a37aa",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "name": "setPlatformReward",
              "scope": 1090,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "platformRewardBips",
                      "scope": 882,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 869,
                        "name": "ElementaryTypeName",
                        "src": "12418:7:0"
                      }
                    ],
                    "id": 870,
                    "name": "VariableDeclaration",
                    "src": "12418:26:0"
                  }
                ],
                "id": 871,
                "name": "ParameterList",
                "src": "12417:28:0"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 876,
                "name": "ParameterList",
                "src": "12503:0:0"
              },
              {
                "attributes": {},
                "children": [
                  {
                    "attributes": {
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 1072,
                      "type": "modifier ()",
                      "value": "onlyFresh"
                    },
                    "id": 872,
                    "name": "Identifier",
                    "src": "12471:9:0"
                  }
                ],
                "id": 873,
                "name": "ModifierInvocation",
                "src": "12471:9:0"
              },
              {
                "attributes": {},
                "children": [
                  {
                    "attributes": {
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 5337,
                      "type": "modifier ()",
                      "value": "onlyOwner"
                    },
                    "id": 874,
                    "name": "Identifier",
                    "src": "12489:9:0"
                  }
                ],
                "id": 875,
                "name": "ModifierInvocation",
                "src": "12489:9:0"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 47,
                              "type": "uint256",
                              "value": "_platformRewardBips"
                            },
                            "id": 877,
                            "name": "Identifier",
                            "src": "12513:19:0"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 870,
                              "type": "uint256",
                              "value": "platformRewardBips"
                            },
                            "id": 878,
                            "name": "Identifier",
                            "src": "12535:18:0"
                          }
                        ],
                        "id": 879,
                        "name": "Assignment",
                        "src": "12513:40:0"
                      }
                    ],
                    "id": 880,
                    "name": "ExpressionStatement",
                    "src": "12513:40:0"
                  }
                ],
                "id": 881,
                "name": "Block",
                "src": "12503:57:0"
              }
            ],
            "id": 882,
            "name": "FunctionDefinition",
            "src": "12391:169:0"
          },
          {
            "attributes": {
              "functionSelector": "b2551589",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "name": "setPlatformVaultAddress",
              "scope": 1090,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "newPlatformVaultAddress",
                      "scope": 896,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 883,
                        "name": "ElementaryTypeName",
                        "src": "12599:7:0"
                      }
                    ],
                    "id": 884,
                    "name": "VariableDeclaration",
                    "src": "12599:31:0"
                  }
                ],
                "id": 885,
                "name": "ParameterList",
                "src": "12598:33:0"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 890,
                "name": "ParameterList",
                "src": "12689:0:0"
              },
              {
                "attributes": {},
                "children": [
                  {
                    "attributes": {
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 1072,
                      "type": "modifier ()",
                      "value": "onlyFresh"
                    },
                    "id": 886,
                    "name": "Identifier",
                    "src": "12657:9:0"
                  }
                ],
                "id": 887,
                "name": "ModifierInvocation",
                "src": "12657:9:0"
              },
              {
                "attributes": {},
                "children": [
                  {
                    "attributes": {
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 5337,
                      "type": "modifier ()",
                      "value": "onlyOwner"
                    },
                    "id": 888,
                    "name": "Identifier",
                    "src": "12675:9:0"
                  }
                ],
                "id": 889,
                "name": "ModifierInvocation",
                "src": "12675:9:0"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "address"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 49,
                              "type": "address",
                              "value": "_platformVaultAddress"
                            },
                            "id": 891,
                            "name": "Identifier",
                            "src": "12699:21:0"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 884,
                              "type": "address",
                              "value": "newPlatformVaultAddress"
                            },
                            "id": 892,
                            "name": "Identifier",
                            "src": "12723:23:0"
                          }
                        ],
                        "id": 893,
                        "name": "Assignment",
                        "src": "12699:47:0"
                      }
                    ],
                    "id": 894,
                    "name": "ExpressionStatement",
                    "src": "12699:47:0"
                  }
                ],
                "id": 895,
                "name": "Block",
                "src": "12689:64:0"
              }
            ],
            "id": 896,
            "name": "FunctionDefinition",
            "src": "12566:187:0"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "payableReserveAdjustment",
              "scope": 1090,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 897,
                "name": "ParameterList",
                "src": "12829:2:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 912,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 898,
                        "name": "ElementaryTypeName",
                        "src": "12855:7:0"
                      }
                    ],
                    "id": 899,
                    "name": "VariableDeclaration",
                    "src": "12855:7:0"
                  }
                ],
                "id": 900,
                "name": "ParameterList",
                "src": "12854:9:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 900
                    },
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "==",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 65,
                                  "type": "address",
                                  "value": "_scheduleTokenAddress"
                                },
                                "id": 901,
                                "name": "Identifier",
                                "src": "12881:21:0"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "address payable",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(address)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "name": "address"
                                        },
                                        "id": 902,
                                        "name": "ElementaryTypeName",
                                        "src": "12906:7:0"
                                      }
                                    ],
                                    "id": 903,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "12906:7:0"
                                  },
                                  {
                                    "attributes": {
                                      "hexvalue": "31",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "token": "number",
                                      "type": "int_const 1",
                                      "value": "1"
                                    },
                                    "id": 904,
                                    "name": "Literal",
                                    "src": "12914:1:0"
                                  }
                                ],
                                "id": 905,
                                "name": "FunctionCall",
                                "src": "12906:10:0"
                              }
                            ],
                            "id": 906,
                            "name": "BinaryOperation",
                            "src": "12881:35:0"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 59,
                              "type": "uint256",
                              "value": "_scheduleInvokeValue"
                            },
                            "id": 907,
                            "name": "Identifier",
                            "src": "12919:20:0"
                          },
                          {
                            "attributes": {
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 908,
                            "name": "Literal",
                            "src": "12942:1:0"
                          }
                        ],
                        "id": 909,
                        "name": "Conditional",
                        "src": "12881:62:0"
                      }
                    ],
                    "id": 910,
                    "name": "Return",
                    "src": "12874:69:0"
                  }
                ],
                "id": 911,
                "name": "Block",
                "src": "12864:86:0"
              }
            ],
            "id": 912,
            "name": "FunctionDefinition",
            "src": "12796:154:0"
          },
          {
            "attributes": {
              "functionSelector": "f2477678",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "name": "setLiquidityProxies",
              "scope": 1090,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "tokenAddress",
                      "scope": 931,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 913,
                        "name": "ElementaryTypeName",
                        "src": "13035:7:0"
                      }
                    ],
                    "id": 914,
                    "name": "VariableDeclaration",
                    "src": "13035:20:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "liquidityProxies",
                      "scope": 931,
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "type": "address[]",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "type": "address[]"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "address",
                              "stateMutability": "nonpayable",
                              "type": "address"
                            },
                            "id": 915,
                            "name": "ElementaryTypeName",
                            "src": "13065:7:0"
                          }
                        ],
                        "id": 916,
                        "name": "ArrayTypeName",
                        "src": "13065:9:0"
                      }
                    ],
                    "id": 917,
                    "name": "VariableDeclaration",
                    "src": "13065:35:0"
                  }
                ],
                "id": 918,
                "name": "ParameterList",
                "src": "13025:81:0"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 923,
                "name": "ParameterList",
                "src": "13136:0:0"
              },
              {
                "attributes": {},
                "children": [
                  {
                    "attributes": {
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 1072,
                      "type": "modifier ()",
                      "value": "onlyFresh"
                    },
                    "id": 919,
                    "name": "Identifier",
                    "src": "13116:9:0"
                  }
                ],
                "id": 920,
                "name": "ModifierInvocation",
                "src": "13116:9:0"
              },
              {
                "attributes": {},
                "children": [
                  {
                    "attributes": {
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 5337,
                      "type": "modifier ()",
                      "value": "onlyOwner"
                    },
                    "id": 921,
                    "name": "Identifier",
                    "src": "13126:9:0"
                  }
                ],
                "id": 922,
                "name": "ModifierInvocation",
                "src": "13126:9:0"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "address[] storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "address[] storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 39,
                                  "type": "mapping(address => address[] storage ref)",
                                  "value": "_liquidityProxies"
                                },
                                "id": 924,
                                "name": "Identifier",
                                "src": "13146:17:0"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 914,
                                  "type": "address",
                                  "value": "tokenAddress"
                                },
                                "id": 925,
                                "name": "Identifier",
                                "src": "13164:12:0"
                              }
                            ],
                            "id": 926,
                            "name": "IndexAccess",
                            "src": "13146:31:0"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 917,
                              "type": "address[] calldata",
                              "value": "liquidityProxies"
                            },
                            "id": 927,
                            "name": "Identifier",
                            "src": "13180:16:0"
                          }
                        ],
                        "id": 928,
                        "name": "Assignment",
                        "src": "13146:50:0"
                      }
                    ],
                    "id": 929,
                    "name": "ExpressionStatement",
                    "src": "13146:50:0"
                  }
                ],
                "id": 930,
                "name": "Block",
                "src": "13136:67:0"
              }
            ],
            "id": 931,
            "name": "FunctionDefinition",
            "src": "12997:206:0"
          },
          {
            "attributes": {
              "functionSelector": "779bbd47",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "liquidityProxies",
              "scope": 1090,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "tokenAddress",
                      "scope": 944,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 932,
                        "name": "ElementaryTypeName",
                        "src": "13235:7:0"
                      }
                    ],
                    "id": 933,
                    "name": "VariableDeclaration",
                    "src": "13235:20:0"
                  }
                ],
                "id": 934,
                "name": "ParameterList",
                "src": "13234:22:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 944,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "address[]",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "type": "address[]"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "address",
                              "stateMutability": "nonpayable",
                              "type": "address"
                            },
                            "id": 935,
                            "name": "ElementaryTypeName",
                            "src": "13304:7:0"
                          }
                        ],
                        "id": 936,
                        "name": "ArrayTypeName",
                        "src": "13304:9:0"
                      }
                    ],
                    "id": 937,
                    "name": "VariableDeclaration",
                    "src": "13304:16:0"
                  }
                ],
                "id": 938,
                "name": "ParameterList",
                "src": "13303:18:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 938
                    },
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "address[] storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 39,
                              "type": "mapping(address => address[] storage ref)",
                              "value": "_liquidityProxies"
                            },
                            "id": 939,
                            "name": "Identifier",
                            "src": "13343:17:0"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 933,
                              "type": "address",
                              "value": "tokenAddress"
                            },
                            "id": 940,
                            "name": "Identifier",
                            "src": "13361:12:0"
                          }
                        ],
                        "id": 941,
                        "name": "IndexAccess",
                        "src": "13343:31:0"
                      }
                    ],
                    "id": 942,
                    "name": "Return",
                    "src": "13336:38:0"
                  }
                ],
                "id": 943,
                "name": "Block",
                "src": "13326:55:0"
              }
            ],
            "id": 944,
            "name": "FunctionDefinition",
            "src": "13209:172:0"
          },
          {
            "attributes": {
              "baseFunctions": [
                1226
              ],
              "functionSelector": "9c0743df",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "isTokenAddressRegistered",
              "scope": 1090,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "overrides": [
                    null
                  ]
                },
                "id": 948,
                "name": "OverrideSpecifier",
                "src": "13479:8:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "tokenAddress",
                      "scope": 960,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 945,
                        "name": "ElementaryTypeName",
                        "src": "13421:7:0"
                      }
                    ],
                    "id": 946,
                    "name": "VariableDeclaration",
                    "src": "13421:20:0"
                  }
                ],
                "id": 947,
                "name": "ParameterList",
                "src": "13420:22:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 960,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 949,
                        "name": "ElementaryTypeName",
                        "src": "13505:4:0"
                      }
                    ],
                    "id": 950,
                    "name": "VariableDeclaration",
                    "src": "13505:4:0"
                  }
                ],
                "id": 951,
                "name": "ParameterList",
                "src": "13504:6:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 951
                    },
                    "children": [
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": ">",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "length",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "address[] storage ref"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 39,
                                      "type": "mapping(address => address[] storage ref)",
                                      "value": "_liquidityProxies"
                                    },
                                    "id": 952,
                                    "name": "Identifier",
                                    "src": "13532:17:0"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 946,
                                      "type": "address",
                                      "value": "tokenAddress"
                                    },
                                    "id": 953,
                                    "name": "Identifier",
                                    "src": "13550:12:0"
                                  }
                                ],
                                "id": 954,
                                "name": "IndexAccess",
                                "src": "13532:31:0"
                              }
                            ],
                            "id": 955,
                            "name": "MemberAccess",
                            "src": "13532:38:0"
                          },
                          {
                            "attributes": {
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 956,
                            "name": "Literal",
                            "src": "13573:1:0"
                          }
                        ],
                        "id": 957,
                        "name": "BinaryOperation",
                        "src": "13532:42:0"
                      }
                    ],
                    "id": 958,
                    "name": "Return",
                    "src": "13525:49:0"
                  }
                ],
                "id": 959,
                "name": "Block",
                "src": "13515:66:0"
              }
            ],
            "id": 960,
            "name": "FunctionDefinition",
            "src": "13387:194:0"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "liquidityProxy",
              "scope": 1090,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "index",
                      "scope": 974,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 961,
                        "name": "ElementaryTypeName",
                        "src": "13611:7:0"
                      }
                    ],
                    "id": 962,
                    "name": "VariableDeclaration",
                    "src": "13611:13:0"
                  }
                ],
                "id": 963,
                "name": "ParameterList",
                "src": "13610:15:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 974,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 964,
                        "name": "ElementaryTypeName",
                        "src": "13649:7:0"
                      }
                    ],
                    "id": 965,
                    "name": "VariableDeclaration",
                    "src": "13649:7:0"
                  }
                ],
                "id": 966,
                "name": "ParameterList",
                "src": "13648:9:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 966
                    },
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "address"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "address[] storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 39,
                                  "type": "mapping(address => address[] storage ref)",
                                  "value": "_liquidityProxies"
                                },
                                "id": 967,
                                "name": "Identifier",
                                "src": "13675:17:0"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 65,
                                  "type": "address",
                                  "value": "_scheduleTokenAddress"
                                },
                                "id": 968,
                                "name": "Identifier",
                                "src": "13693:21:0"
                              }
                            ],
                            "id": 969,
                            "name": "IndexAccess",
                            "src": "13675:40:0"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 962,
                              "type": "uint256",
                              "value": "index"
                            },
                            "id": 970,
                            "name": "Identifier",
                            "src": "13716:5:0"
                          }
                        ],
                        "id": 971,
                        "name": "IndexAccess",
                        "src": "13675:47:0"
                      }
                    ],
                    "id": 972,
                    "name": "Return",
                    "src": "13668:54:0"
                  }
                ],
                "id": 973,
                "name": "Block",
                "src": "13658:71:0"
              }
            ],
            "id": 974,
            "name": "FunctionDefinition",
            "src": "13587:142:0"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "liquidityProxiesForToken",
              "scope": 1090,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 975,
                "name": "ParameterList",
                "src": "13768:2:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 985,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 976,
                        "name": "ElementaryTypeName",
                        "src": "13794:7:0"
                      }
                    ],
                    "id": 977,
                    "name": "VariableDeclaration",
                    "src": "13794:7:0"
                  }
                ],
                "id": 978,
                "name": "ParameterList",
                "src": "13793:9:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 978
                    },
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "member_name": "length",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "address[] storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 39,
                                  "type": "mapping(address => address[] storage ref)",
                                  "value": "_liquidityProxies"
                                },
                                "id": 979,
                                "name": "Identifier",
                                "src": "13820:17:0"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 65,
                                  "type": "address",
                                  "value": "_scheduleTokenAddress"
                                },
                                "id": 980,
                                "name": "Identifier",
                                "src": "13838:21:0"
                              }
                            ],
                            "id": 981,
                            "name": "IndexAccess",
                            "src": "13820:40:0"
                          }
                        ],
                        "id": 982,
                        "name": "MemberAccess",
                        "src": "13820:47:0"
                      }
                    ],
                    "id": 983,
                    "name": "Return",
                    "src": "13813:54:0"
                  }
                ],
                "id": 984,
                "name": "Block",
                "src": "13803:71:0"
              }
            ],
            "id": 985,
            "name": "FunctionDefinition",
            "src": "13735:139:0"
          },
          {
            "attributes": {
              "baseFunctions": [
                1233
              ],
              "functionSelector": "c56326de",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "totalLiquidity",
              "scope": 1090,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "overrides": [
                    null
                  ]
                },
                "id": 989,
                "name": "OverrideSpecifier",
                "src": "13964:8:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "tokenAddress",
                      "scope": 1042,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 986,
                        "name": "ElementaryTypeName",
                        "src": "13904:7:0"
                      }
                    ],
                    "id": 987,
                    "name": "VariableDeclaration",
                    "src": "13904:20:0"
                  }
                ],
                "id": 988,
                "name": "ParameterList",
                "src": "13903:22:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 1042,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 990,
                        "name": "ElementaryTypeName",
                        "src": "13990:7:0"
                      }
                    ],
                    "id": 991,
                    "name": "VariableDeclaration",
                    "src": "13990:7:0"
                  }
                ],
                "id": 992,
                "name": "ParameterList",
                "src": "13989:9:0"
              },
              {
                "children": [
                  {
                    "attributes": {},
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "bool",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 960,
                              "type": "function (address) view returns (bool)",
                              "value": "isTokenAddressRegistered"
                            },
                            "id": 993,
                            "name": "Identifier",
                            "src": "14017:24:0"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 987,
                              "type": "address",
                              "value": "tokenAddress"
                            },
                            "id": 994,
                            "name": "Identifier",
                            "src": "14042:12:0"
                          }
                        ],
                        "id": 995,
                        "name": "FunctionCall",
                        "src": "14017:38:0"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "assignments": [
                                997
                              ]
                            },
                            "children": [
                              {
                                "attributes": {
                                  "constant": false,
                                  "mutability": "mutable",
                                  "name": "total",
                                  "scope": 1037,
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "type": "uint256",
                                  "visibility": "internal"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "uint256",
                                      "type": "uint256"
                                    },
                                    "id": 996,
                                    "name": "ElementaryTypeName",
                                    "src": "14071:7:0"
                                  }
                                ],
                                "id": 997,
                                "name": "VariableDeclaration",
                                "src": "14071:13:0"
                              },
                              {
                                "attributes": {
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 998,
                                "name": "Literal",
                                "src": "14087:1:0"
                              }
                            ],
                            "id": 999,
                            "name": "VariableDeclarationStatement",
                            "src": "14071:17:0"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "assignments": [
                                    1001
                                  ]
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "constant": false,
                                      "mutability": "mutable",
                                      "name": "i",
                                      "scope": 1034,
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "type": "uint256",
                                      "visibility": "internal"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "name": "uint256",
                                          "type": "uint256"
                                        },
                                        "id": 1000,
                                        "name": "ElementaryTypeName",
                                        "src": "14124:7:0"
                                      }
                                    ],
                                    "id": 1001,
                                    "name": "VariableDeclaration",
                                    "src": "14124:9:0"
                                  },
                                  {
                                    "attributes": {
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 1002,
                                    "name": "Literal",
                                    "src": "14136:1:0"
                                  }
                                ],
                                "id": 1003,
                                "name": "VariableDeclarationStatement",
                                "src": "14124:13:0"
                              },
                              {
                                "attributes": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "<",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1001,
                                      "type": "uint256",
                                      "value": "i"
                                    },
                                    "id": 1004,
                                    "name": "Identifier",
                                    "src": "14155:1:0"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "length",
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "address[] storage ref"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 39,
                                              "type": "mapping(address => address[] storage ref)",
                                              "value": "_liquidityProxies"
                                            },
                                            "id": 1005,
                                            "name": "Identifier",
                                            "src": "14159:17:0"
                                          },
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 987,
                                              "type": "address",
                                              "value": "tokenAddress"
                                            },
                                            "id": 1006,
                                            "name": "Identifier",
                                            "src": "14177:12:0"
                                          }
                                        ],
                                        "id": 1007,
                                        "name": "IndexAccess",
                                        "src": "14159:31:0"
                                      }
                                    ],
                                    "id": 1008,
                                    "name": "MemberAccess",
                                    "src": "14159:38:0"
                                  }
                                ],
                                "id": 1009,
                                "name": "BinaryOperation",
                                "src": "14155:42:0"
                              },
                              {
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "++",
                                      "prefix": false,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1001,
                                          "type": "uint256",
                                          "value": "i"
                                        },
                                        "id": 1010,
                                        "name": "Identifier",
                                        "src": "14215:1:0"
                                      }
                                    ],
                                    "id": 1011,
                                    "name": "UnaryOperation",
                                    "src": "14215:3:0"
                                  }
                                ],
                                "id": 1012,
                                "name": "ExpressionStatement",
                                "src": "14215:3:0"
                              },
                              {
                                "children": [
                                  {
                                    "attributes": {
                                      "assignments": [
                                        1014
                                      ]
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "constant": false,
                                          "mutability": "mutable",
                                          "name": "proxy",
                                          "scope": 1033,
                                          "stateVariable": false,
                                          "storageLocation": "default",
                                          "type": "contract ILiquidityProxy",
                                          "visibility": "internal"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "name": "ILiquidityProxy",
                                              "referencedDeclaration": 2148,
                                              "type": "contract ILiquidityProxy"
                                            },
                                            "id": 1013,
                                            "name": "UserDefinedTypeName",
                                            "src": "14251:15:0"
                                          }
                                        ],
                                        "id": 1014,
                                        "name": "VariableDeclaration",
                                        "src": "14251:21:0"
                                      },
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "tryCall": false,
                                          "type": "contract ILiquidityProxy",
                                          "type_conversion": true
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              ],
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 2148,
                                              "type": "type(contract ILiquidityProxy)",
                                              "value": "ILiquidityProxy"
                                            },
                                            "id": 1015,
                                            "name": "Identifier",
                                            "src": "14275:15:0"
                                          },
                                          {
                                            "attributes": {
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "type": "address"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "type": "address[] storage ref"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 39,
                                                      "type": "mapping(address => address[] storage ref)",
                                                      "value": "_liquidityProxies"
                                                    },
                                                    "id": 1016,
                                                    "name": "Identifier",
                                                    "src": "14312:17:0"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 987,
                                                      "type": "address",
                                                      "value": "tokenAddress"
                                                    },
                                                    "id": 1017,
                                                    "name": "Identifier",
                                                    "src": "14330:12:0"
                                                  }
                                                ],
                                                "id": 1018,
                                                "name": "IndexAccess",
                                                "src": "14312:31:0"
                                              },
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 1001,
                                                  "type": "uint256",
                                                  "value": "i"
                                                },
                                                "id": 1019,
                                                "name": "Identifier",
                                                "src": "14344:1:0"
                                              }
                                            ],
                                            "id": 1020,
                                            "name": "IndexAccess",
                                            "src": "14312:34:0"
                                          }
                                        ],
                                        "id": 1021,
                                        "name": "FunctionCall",
                                        "src": "14275:89:0"
                                      }
                                    ],
                                    "id": 1022,
                                    "name": "VariableDeclarationStatement",
                                    "src": "14251:113:0"
                                  },
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "=",
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 997,
                                              "type": "uint256",
                                              "value": "total"
                                            },
                                            "id": 1023,
                                            "name": "Identifier",
                                            "src": "14382:5:0"
                                          },
                                          {
                                            "attributes": {
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "isStructConstructorCall": false,
                                              "lValueRequested": false,
                                              "names": [
                                                null
                                              ],
                                              "tryCall": false,
                                              "type": "uint256",
                                              "type_conversion": false
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  ],
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "member_name": "add",
                                                  "referencedDeclaration": 5417,
                                                  "type": "function (uint256,uint256) pure returns (uint256)"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 997,
                                                      "type": "uint256",
                                                      "value": "total"
                                                    },
                                                    "id": 1024,
                                                    "name": "Identifier",
                                                    "src": "14390:5:0"
                                                  }
                                                ],
                                                "id": 1025,
                                                "name": "MemberAccess",
                                                "src": "14390:9:0"
                                              },
                                              {
                                                "attributes": {
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "isStructConstructorCall": false,
                                                  "lValueRequested": false,
                                                  "names": [
                                                    null
                                                  ],
                                                  "tryCall": false,
                                                  "type": "uint256",
                                                  "type_conversion": false
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        }
                                                      ],
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "member_name": "getTotalReserve",
                                                      "referencedDeclaration": 2124,
                                                      "type": "function (address) view external returns (uint256)"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 1014,
                                                          "type": "contract ILiquidityProxy",
                                                          "value": "proxy"
                                                        },
                                                        "id": 1026,
                                                        "name": "Identifier",
                                                        "src": "14400:5:0"
                                                      }
                                                    ],
                                                    "id": 1027,
                                                    "name": "MemberAccess",
                                                    "src": "14400:21:0"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 987,
                                                      "type": "address",
                                                      "value": "tokenAddress"
                                                    },
                                                    "id": 1028,
                                                    "name": "Identifier",
                                                    "src": "14422:12:0"
                                                  }
                                                ],
                                                "id": 1029,
                                                "name": "FunctionCall",
                                                "src": "14400:35:0"
                                              }
                                            ],
                                            "id": 1030,
                                            "name": "FunctionCall",
                                            "src": "14390:46:0"
                                          }
                                        ],
                                        "id": 1031,
                                        "name": "Assignment",
                                        "src": "14382:54:0"
                                      }
                                    ],
                                    "id": 1032,
                                    "name": "ExpressionStatement",
                                    "src": "14382:54:0"
                                  }
                                ],
                                "id": 1033,
                                "name": "Block",
                                "src": "14233:218:0"
                              }
                            ],
                            "id": 1034,
                            "name": "ForStatement",
                            "src": "14102:349:0"
                          },
                          {
                            "attributes": {
                              "functionReturnParameters": 992
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 997,
                                  "type": "uint256",
                                  "value": "total"
                                },
                                "id": 1035,
                                "name": "Identifier",
                                "src": "14471:5:0"
                              }
                            ],
                            "id": 1036,
                            "name": "Return",
                            "src": "14464:12:0"
                          }
                        ],
                        "id": 1037,
                        "name": "Block",
                        "src": "14057:430:0"
                      }
                    ],
                    "id": 1038,
                    "name": "IfStatement",
                    "src": "14013:474:0"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 992
                    },
                    "children": [
                      {
                        "attributes": {
                          "hexvalue": "30",
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "token": "number",
                          "type": "int_const 0",
                          "value": "0"
                        },
                        "id": 1039,
                        "name": "Literal",
                        "src": "14503:1:0"
                      }
                    ],
                    "id": 1040,
                    "name": "Return",
                    "src": "14496:8:0"
                  }
                ],
                "id": 1041,
                "name": "Block",
                "src": "14003:508:0"
              }
            ],
            "id": 1042,
            "name": "FunctionDefinition",
            "src": "13880:631:0"
          },
          {
            "attributes": {
              "functionSelector": "6476b069",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "name": "removeStuckTokens",
              "scope": 1090,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "tokenAddress",
                      "scope": 1062,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 1043,
                        "name": "ElementaryTypeName",
                        "src": "14674:7:0"
                      }
                    ],
                    "id": 1044,
                    "name": "VariableDeclaration",
                    "src": "14674:20:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "amount",
                      "scope": 1062,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 1045,
                        "name": "ElementaryTypeName",
                        "src": "14696:7:0"
                      }
                    ],
                    "id": 1046,
                    "name": "VariableDeclaration",
                    "src": "14696:14:0"
                  }
                ],
                "id": 1047,
                "name": "ParameterList",
                "src": "14673:38:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 1062,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 1052,
                        "name": "ElementaryTypeName",
                        "src": "14782:4:0"
                      }
                    ],
                    "id": 1053,
                    "name": "VariableDeclaration",
                    "src": "14782:4:0"
                  }
                ],
                "id": 1054,
                "name": "ParameterList",
                "src": "14781:6:0"
              },
              {
                "attributes": {},
                "children": [
                  {
                    "attributes": {
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 1072,
                      "type": "modifier ()",
                      "value": "onlyFresh"
                    },
                    "id": 1048,
                    "name": "Identifier",
                    "src": "14737:9:0"
                  }
                ],
                "id": 1049,
                "name": "ModifierInvocation",
                "src": "14737:9:0"
              },
              {
                "attributes": {},
                "children": [
                  {
                    "attributes": {
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 5337,
                      "type": "modifier ()",
                      "value": "onlyOwner"
                    },
                    "id": 1050,
                    "name": "Identifier",
                    "src": "14755:9:0"
                  }
                ],
                "id": 1051,
                "name": "ModifierInvocation",
                "src": "14755:9:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 1054
                    },
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "bool",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1433,
                              "type": "function (address,address,uint256) returns (bool)",
                              "value": "transfer"
                            },
                            "id": 1055,
                            "name": "Identifier",
                            "src": "14809:8:0"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1044,
                              "type": "address",
                              "value": "tokenAddress"
                            },
                            "id": 1056,
                            "name": "Identifier",
                            "src": "14818:12:0"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 49,
                              "type": "address",
                              "value": "_platformVaultAddress"
                            },
                            "id": 1057,
                            "name": "Identifier",
                            "src": "14832:21:0"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1046,
                              "type": "uint256",
                              "value": "amount"
                            },
                            "id": 1058,
                            "name": "Identifier",
                            "src": "14855:6:0"
                          }
                        ],
                        "id": 1059,
                        "name": "FunctionCall",
                        "src": "14809:53:0"
                      }
                    ],
                    "id": 1060,
                    "name": "Return",
                    "src": "14802:60:0"
                  }
                ],
                "id": 1061,
                "name": "Block",
                "src": "14792:77:0"
              }
            ],
            "id": 1062,
            "name": "FunctionDefinition",
            "src": "14647:222:0"
          },
          {
            "attributes": {
              "name": "onlyFresh",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 1063,
                "name": "ParameterList",
                "src": "14926:2:0"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_2311fd1c3ea64bd625b93e4d507c69773a004c8f7775b28b72e844f87524a6a5",
                                  "typeString": "literal_string \"Invoker: not fresh environment\""
                                }
                              ],
                              "overloadedDeclarations": [
                                -18,
                                -18
                              ],
                              "referencedDeclaration": -18,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 1064,
                            "name": "Identifier",
                            "src": "14939:7:0"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "!",
                              "prefix": true,
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 51,
                                  "type": "bool",
                                  "value": "_scheduled"
                                },
                                "id": 1065,
                                "name": "Identifier",
                                "src": "14948:10:0"
                              }
                            ],
                            "id": 1066,
                            "name": "UnaryOperation",
                            "src": "14947:11:0"
                          },
                          {
                            "attributes": {
                              "hexvalue": "496e766f6b65723a206e6f7420667265736820656e7669726f6e6d656e74",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "string",
                              "type": "literal_string \"Invoker: not fresh environment\"",
                              "value": "Invoker: not fresh environment"
                            },
                            "id": 1067,
                            "name": "Literal",
                            "src": "14960:32:0"
                          }
                        ],
                        "id": 1068,
                        "name": "FunctionCall",
                        "src": "14939:54:0"
                      }
                    ],
                    "id": 1069,
                    "name": "ExpressionStatement",
                    "src": "14939:54:0"
                  },
                  {
                    "id": 1070,
                    "name": "PlaceholderStatement",
                    "src": "15003:1:0"
                  }
                ],
                "id": 1071,
                "name": "Block",
                "src": "14929:82:0"
              }
            ],
            "id": 1072,
            "name": "ModifierDefinition",
            "src": "14908:103:0"
          },
          {
            "attributes": {
              "name": "onlyScheduled",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 1073,
                "name": "ParameterList",
                "src": "15039:2:0"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_4f938a45e93d8ae7da5539ebcb5bf4683bf81abc3df9766b82076ae1cc410912",
                                  "typeString": "literal_string \"Invoker: not scheduled\""
                                }
                              ],
                              "overloadedDeclarations": [
                                -18,
                                -18
                              ],
                              "referencedDeclaration": -18,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 1074,
                            "name": "Identifier",
                            "src": "15052:7:0"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 51,
                              "type": "bool",
                              "value": "_scheduled"
                            },
                            "id": 1075,
                            "name": "Identifier",
                            "src": "15060:10:0"
                          },
                          {
                            "attributes": {
                              "hexvalue": "496e766f6b65723a206e6f74207363686564756c6564",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "string",
                              "type": "literal_string \"Invoker: not scheduled\"",
                              "value": "Invoker: not scheduled"
                            },
                            "id": 1076,
                            "name": "Literal",
                            "src": "15072:24:0"
                          }
                        ],
                        "id": 1077,
                        "name": "FunctionCall",
                        "src": "15052:45:0"
                      }
                    ],
                    "id": 1078,
                    "name": "ExpressionStatement",
                    "src": "15052:45:0"
                  },
                  {
                    "id": 1079,
                    "name": "PlaceholderStatement",
                    "src": "15107:1:0"
                  }
                ],
                "id": 1080,
                "name": "Block",
                "src": "15042:73:0"
              }
            ],
            "id": 1081,
            "name": "ModifierDefinition",
            "src": "15017:98:0"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "receive",
              "modifiers": [
                null
              ],
              "name": "",
              "scope": 1090,
              "stateMutability": "payable",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 1082,
                "name": "ParameterList",
                "src": "15128:2:0"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 1083,
                "name": "ParameterList",
                "src": "15148:0:0"
              },
              {
                "attributes": {
                  "statements": [
                    null
                  ]
                },
                "children": [],
                "id": 1084,
                "name": "Block",
                "src": "15148:2:0"
              }
            ],
            "id": 1085,
            "name": "FunctionDefinition",
            "src": "15121:29:0"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "fallback",
              "modifiers": [
                null
              ],
              "name": "",
              "scope": 1090,
              "stateMutability": "payable",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 1086,
                "name": "ParameterList",
                "src": "15164:2:0"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 1087,
                "name": "ParameterList",
                "src": "15184:0:0"
              },
              {
                "attributes": {
                  "statements": [
                    null
                  ]
                },
                "children": [],
                "id": 1088,
                "name": "Block",
                "src": "15184:2:0"
              }
            ],
            "id": 1089,
            "name": "FunctionDefinition",
            "src": "15156:30:0"
          }
        ],
        "id": 1090,
        "name": "ContractDefinition",
        "src": "937:14251:0"
      }
    ],
    "id": 1091,
    "name": "SourceUnit",
    "src": "640:14549:0"
  },
  "compiler": {
    "name": "solc",
    "version": "0.7.3+commit.9bfce1f6.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.3.3",
  "updatedAt": "2021-02-01T23:13:33.184Z",
  "devdoc": {
    "kind": "dev",
    "methods": {
      "owner()": {
        "details": "Returns the address of the current owner."
      },
      "renounceOwnership()": {
        "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
      },
      "transferOwnership(address)": {
        "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
      }
    },
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {},
    "version": 1
  }
}